Bonjour,
J'ai un dm en python à faire mais je n'y comprend absolument rien.
Voici les consignes :
Le nombre nb est un entier de 4 chiffres maximum compris entre 0 exclus et 3 500 inclus (ce contrôle de nb est à faire)
On appelle echelle de nombres le tableau suivant à utiliser avec l'algorithme :
M CM D CD C XC L XL
1000 900 500 400 100 90 50 40X
X IX V IV I
10 9 5 4 1
Voici une façon de procéder pour écrire un nombre en chiffre romains :
1) chercher le plus grand nombre (noté max) de l'échelle contenue dans nb
2) écrire ce plus grand nombre en chiffres romains (noté rom)
3) récupérer le reste (noté reste) et recommencer avec le reste en repartant à l'étape 1
Premier exemple : nb = 1947
1) 1947 contient comme plus grand nombre 1 000 donc max = 1 000
2) on en déduit que rom = "M"
3) on en déduit que reste = 1 947 – 1 000 = 947
On recommence avec le reste qui joue le rôle de nb :
1) 947 contient comme plus grand nombre 900 donc max = 900
2) on en déduit que rom = "CM"
3) on en déduit que reste = 947 – 900 = 47
On recommence avec le reste qui joue le rôle de nb :
1) 47 contient comme plus grand nombre 40 donc max = 40
2) on en déduit que rom = "XL"
3) on en déduit que reste = 47 – 40 = 7
On recommence avec le reste qui joue le rôle de nb :
1) 7 contient comme plus grand nombre 5 donc max = 5
2) on en déduit que rom = "V"
3) on en déduit que reste = 7 – 5 = 2
On recommence avec le reste qui joue le rôle de nb :
1) 2 contient comme plus grand nombre 1 donc max = 1
2) on en déduit que rom = "I"
3) on en déduit que reste = 2 – 1 = 1
On recommence avec le reste qui joue le rôle de nb :
1) 1 contient comme plus grand nombre 1 donc max = 1
2) on en déduit que rom = "I"
3) on en déduit que reste = 1 – 1 = 0
Et là, on s'arrête.
Vous afficherez alors que le nombre 1947 s'écrit MCMXLVII
Pour l'instant, je n'est réussi quà faire le tableau.
Ca fait 3h que je bloque pour chercher le plus grand nombre
Comment faire ?
Merci d'avence pour votre aide
Voici ce que j'ai fait :
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 romain=['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'] arabe=[1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] question = input("Saisir un nombre entier en chiffre arabe suppérieur à 0") tab=[] def arabe (n): res="" for k, v in reversed(sorted(numlist.iteritems())): while n >=k: n-= k res += v return res print arabe (n)
Partager