Forum >> Principianti >> Numeri in lettere

Pagina: 1

Ciao ragazzi
Volevo sapere se in questo codice era possibile eliminare qualche if in modo tale da ridurre l'intricatezza




def conv(n):
'Scrivete qui il codice della funzione'
if n == 0:
return ""
elif n <= 19:
return ("uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove", "dieci", "undici", "dodici", "tredici", "quattordici", "quindici", "sedici", "diciassette", "diciotto", "diciannove")n-1
elif n <= 99:
decine = ("venti", "trenta", "quaranta", "cinquanta", "sessanta","settanta", "ottanta", "novanta")
letter = decine[int(n/10)-2]
t = n%10
if t == 1 or t == 8:
letter = letter[:-1]
return letter + conv(n%10)
elif n <= 199:
return "cento" + conv(n%100)
elif n <= 999:
m = n%100
m = int(m/10)
letter = "cent"
if m != 8:
letter = letter + "o"
return conv( int(n/100)) + \
letter + \
conv(n%100)
elif n<= 1999 :
return "mille" + conv(n%1000)
elif n<= 999999:
return conv(int(n/1000)) + \
"mila" + \
conv(n%1000)
elif n <= 1999999:
return "unmilione" + conv(n%1000000)
elif n <= 999999999:
return conv(int(n/1000000))+ \
"milioni" + \
conv(n%1000000)
elif n <= 1999999999:
return "unmiliardo" + conv(n%1000000000)
else:
return conv(int(n/1000000000)) + \
"miliardi" + \
conv(n%1000000000)
Ciao caro, quando metti del codice sul sito usa il pulsante apposito , in modo da formattarlo correttamente. Puoi anche usare fonti esterne come Pastebin se ti è più comodo.

La risposta alla tua domanda è sì, il tuo codice può essere ottimizzato e ridotto.

Certo devi fare un po' di prove e se hai difficoltà o dubbi posta le parti incriminate che ci ragioniamo insieme.

Cya
Ok non lo sapevo, la prossima lo farò
allora io quello che pensavo era innanzitutto casomai spezzettarlo in più funzioni, in modo tale da ridurre gli if, come per esempio dai numeri da 1 a 19, per le decine e per le centinaia, ma non so come fare per poi richiamarle nella funzione principale
Ok non lo sapevo, la prossima lo farò
Perfetto, grazie.

allora io quello che pensavo era innanzitutto casomai spezzettarlo in più funzioni, in modo tale da ridurre gli if, come per esempio dai numeri da 1 a 19, per le decine e per le centinaia, ma non so come fare per poi richiamarle nella funzione principale


Beh è una soluzione, così come creare una classe che contiene più metodi e/o che derivano da una classe principale.

Scusa ma in che senso non sai come richiamare una funzione da quella principale?
>>> def principale():
...    return secondaria()
...
>>> def secondaria():
...    return "Sono la funzione secondaria"
...
>>> print(principale())
Sono la funzione secondaria
Cya
Ok ma sia nelle secondarie che nella principale il parametro all'interno deve essere lo stesso?
Tipo

principale(n)

Secondaria(n)
Risolto, grazie mille


Pagina: 1



Esegui il login per scrivere una risposta.