Conversione numero in base 7

di il
3 risposte

Conversione numero in base 7

Buongiorno, sto cercando di scrivere un programma che mi permetta di stampare la codifica in base 7 di un numero. Quanto ho fatto è questo:

n=int(input('inserisci un numero'))
while n>=0:
resto=n%7
ris=str(resto)
n=n//7

ris=ris[::-1]
print(ris)

Il problema è però che se ad esempio inserisco in numero 38 che convertito in base 7 sarebbe 53 mi stampa solamente il 5.. presumo che l'errore sia quindi nel ciclo, non riesco però ad inserire i numeri come se fossero una sorta di array in C
Come potrei fare?
Grazie

3 Risposte

  • Re: Conversione numero in base 7

    1 scrivi il codice usando il tag "code"
    2 il ciclo while è infinito
    3 perché fai ris=str(resto)
    4 ris è sempre una stringa di un carattere, perché fai ris=ris[::-1]
    5 guardati il funzionamento delle liste
  • Re: Conversione numero in base 7

    Ho provato a fare in questo modo, utilizzando una lista per immagazzinare i resti della divisione intera per 7... ma mi segnala un errore nell'assegnazione ris=n%7...

    def st(s):
    print((s[::-1]))

    ris=[]
    i=0
    n=int(input('inserisci un numero'))
    while n>=0:
    ris=n%7
    i+=1
    n=n//7

    ris=str(ris)
    st(ris)

    consigli?
  • Re: Conversione numero in base 7

    Consiglio #1: quando posti codice sul forum mettilo tra due tag 'CODE', altrimenti viene tutto incasinato.
    Per il tuo problema specifico, se lasci il ciclo while così, non terminerà mai. Poi, se usi una lista non puoi fare
    ris=n%7
    devi aggiungere l'elemento alla lista:
    ris.append(n%7)
    Per restituire il risultato come stringa devi fare una concatenazione un elemento alla volta.
    st_str = ''
    for j in range(i-1, -1, -1):
    	st_str = st_str + str(ris[j])
    
Devi accedere o registrarti per scrivere nel forum
3 risposte