|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 11 ![]() |
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 :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Développeur en systèmes embarqués Inscription : mars 2006 Messages : 763 ![]() |
Salut,
je ne suis pas tout à fait sûr d'avoir compris ta question, mais si c'est "combien de fois y a t-il le 1000, le 900, le 500 etc..." alors peut-être quelque chose comme ça? Code :
A+ Pfeuh |
||
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() ![]() Inscription : octobre 2008 Messages : 941 ![]() |
Bonjour,
Ton approche n'est pas forcément mauvaise mais j'ai pensé que divmod() pouvait t'aider. Code :
Evidemment il faut utiliser ceci dans une boucle qui itère sur tes listes comme tu l'as fait. |
||
|
|
00
|
|
|
#4 | ||||||||||||||
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 11 ![]() |
Citation:
Salut La question est bien "combien de fois y a t-il le 1000, le 900, le 500 etc...". Effectivement, il s'agit d'une erreur de ma part pour le "n". Merci de ton aide Citation:
Salut, Je n'est pas encore étudié divmod() donc c'est pour cela que je ne l'utiliserai pas. Merci quand même pour ton aide Voici mon nouveau code : Code Python :
la partie : Code Python :
Mais la partie Code Python :
exemple : Code Python :
Autre problème, si je lance tout le code en même temps, j'ai un message erreur qui m'affiche « TypError : 'Int' objet is unsubscriptable » sur la ligne « while (nb >= arabe[i]): » |
||||||||||||||
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() ![]() Inscription : octobre 2008 Messages : 941 ![]() |
Si je comprend bien, tu soustrais chaque valeur de arabe autant de fois que c'est possible avant de passer à la suivante.
La division te permet d'accélerer les choses. Ton énoncé parlait aussi de valeurs initiales dans un tableau et de vérifier l'entrée utilisateur. Ceci devrait alors être plus conforme: Code :
|
||
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 709 ![]() |
Voir la discussion sur ce même sujet.
- W
__________________
Architectures Post-Modernes |
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Développeur en systèmes embarqués Inscription : mars 2006 Messages : 763 ![]() |
On gagne effectivement deux lignes... Mais on perd en lisibilité, non?
Code :
A+ Pfeuh |
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 11 ![]() |
J'ai réussi.
Merci beaucoup de m'avoir aidé. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com