Bonjour à tous,

Je débute en programmation (depuis septembre) et dans le cadre de mes cours j'ai un exercice de conversion de chiffres en lettres (exemple : 10 -> dix).

J'ai coder un programme qui je crois fonctionne correctement jusqu'à 9999. Nous avons pas d'objectif précis donc je pourrais m'en tenir là mais j'aurais aimé faire un programme plus complet pour pratiquer et progresser.

Comme j'ai déjà mis en place les règles d'orthographe pour les centaines, dizaines et unités, je me demandais si je ne pouvais pas réutiliser ma fonction pour les dizaine de mille et les centaines de mille. Je ne vois pas trop comment faire mais ce serait bien pratique ;-)

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os
 
list1 = ["", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf"]
list2 = ["dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", "dix huit", "dix neuf"]
list3 = ["", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre vingt", "quatre vingt"]
list4 = ["mille", "million", "milliard"]
 
nb = 0
 
def convNbToLetter(nb):
 
	conv = ''
	i = True
	while i :
		nb = int(input("choisissez un nb : "))
		if nb != 0:
			millier = nb //1000
			centaine = (nb - millier * 1000)//100
			dizaine = (nb -millier * 1000 - centaine * 100) // 10
			unite = nb - millier*1000 - centaine*100- dizaine*10
 
			if millier == 1 : conv += list4[0]
			elif millier in [2,3,4,5,6,7,8,9]: conv += list1[millier] + " " + list4[0]
 
			if centaine == 1: conv += " cent"
			elif centaine != 0: 
				conv += " " + list1[centaine] + " cent"
				if dizaine == 0 and unite == 0: conv+="s"
			if dizaine not in [0,1]:
				conv += " " + list3[dizaine]
			if unite == 0:
				if dizaine in [1, 7, 9]: conv += " dix"
				elif dizaine == 8: conv+="s"
			elif unite == 1:
				if dizaine in [1, 9]: conv += " " + list2[unite]
				elif dizaine == 7: conv += " et onze"
				elif dizaine in [2, 3, 4, 5, 6]: conv += " et un"
				elif dizaine in [0, 8]: conv += " " + list1[unite]
			elif unite in [2, 3, 4, 5, 6, 7, 8, 9]:
				if dizaine in [1, 7, 9]: conv += " " + list2[unite]
				else: conv += " " + list1[unite]
 
 
		print("Votre nombre s'écrit :", conv.replace(" ", "-").strip("-").capitalize() + ".")
		boucle = input("Voulez-vous convertir un autre nombre ? Tapez 'O' pour oui et 'N' pour non : ")
		if boucle == "O": 
			conv = ""
			continue
		else : i = False
 
convNbToLetter(nb)
 
os.system("pause")
Au passage, si vous avez des conseils à me donner par rapport à mon code je suis preneuse :-)
Merci d'avance pour votre aide !