Python-Module-Coincé avec une pièce de monnaie-pour-compte tenu de dollars-montant scénario

Spécifications: Ubuntu 13.04, Python 3.3.1

Contexte général: total débutant en Python;

Question spécifique au contexte:, je suis épuisé à essayer de résoudre ce problème, et je suis conscient que, en plus de sa valeur pédagogique pour l'apprentissage de Python, ce problème est ennuyeux et ne peut en aucune façon faire de ce monde un meilleur endroit 🙁 Donc je serais encore plus reconnaissante si vous pouviez partager quelques conseils sur cette épuisante problème. Mais vraiment vous ne voulez pas perdre votre temps si vous n'êtes pas intéressé par ce genre de problèmes.

Ce que j'ai prévu de faire: "Calculer le nombre de la base Américaine de pièces d'une valeur de moins de 1 dollar. Un sou est une valeur de 1 cent, un nickel est une valeur de 5 centimes, un centime vaut 10 cents,
et, pour un quart d'une valeur de 25 cents. Il faut 100 cents à 1 dollar. Donc, compte tenu d'un montant inférieur à 1 dollar (si à l'aide de flotteurs, de les convertir en nombres entiers pour cet exercice), calculer le nombre de chaque type de pièce de monnaie nécessaire pour atteindre le montant, en maximisant le nombre de grandes pièces de monnaie. Par exemple, pour $0.76, ou 76 cents, la sortie correcte serait "3 quarts et 1 penny." Sortie tels que "76 centimes" et "2 trimestres, 2 pièces, 1 de nickel, et de 1 penny" ne sont pas acceptables."

Ce que j'ai été en mesure de venir avec:

penny = 1
nickel = 5
dime = 10
quarter = 25
i = input("Please enter an amount no more than 1 dollar(in cents): ")
i = int(i)
if i > 100:
print ("Please enter an amount equal or less than 100. ")
elif i >= quarter:
quarter_n = i % quarter
i = i - quarter * quarter_n
if i >= dime:
dime_n = i % dime
i = i - dime * dime_n
if i >= nickel:
nickel_n = i % nickel
i = i - nickel * nickel_n
if i >= penny:
penny_n = i % penny
print (quarter_n,"quarters,",dime_n,"dimes",nickel_n,"nickels",penny_n,"pennies")
else:
if i >= penny:
penny_n = i % penny
print (quarter_n,"quarters,",dime_n,"dimes",penny_n,"pennies")
else:
if i >= nickel:
nickel_n = i % nickel
i = i - nickel * nickel_n
if i >= penny:
penny_n = i % penny
print (quarter_n,"quarters,",nickel_n,"nickels",penny_n,"pennies")
else:
if i >= penny:
penny_n = i % penny
print (quarter_n,"quarters,",penny_n,"pennies")
else:
if i >= dime:
dime_n = i % dime
i = i - dime * dime_n
if i >= nickel:
nickel_n = i % nickel
i = i - nickel * nickel_n
if i >= penny:
penny_n = i % penny
print (dime_n,"dimes",nickel_n,"nickels",penny_n,"pennies")
else:
if i >= penny:
penny_n = i % penny
print (dime_n,"dimes",penny_n,"pennies")
else:
if i >= nickel:
nickel_n = i % nickel
i = i - nickel * nickel_n
if i >= penny:
penny_n = i % penny
print (nickel_n,"nickels",penny_n,"pennies")
else:
if i >= penny:
penny_n = i % penny
print (penny_n,"pennies")

Cette solution, bien que le meilleur que je pouvais venir, ne fonctionne pas comme prévu lorsque nourris avec de l'effectif d'entrée des numéros. Et je suis incapable de comprendre pourquoi. D'ailleurs, je sais que, même de grande taille, le code que quelque chose est faux. J'ai cherché des questions similaires, mais le plus proche que j'ai eu était une émission très difficile de maths que je ne pouvais pas comprendre.

Ma question: je sais que je ne peux pas demander à une solution complète parce que c'est à moi de le comprendre. Je vais apprécier, soit a) en général pointeur sur la bonne ligne de pensée b) les critiques à mon code actuel/ligne de pensée, pour que je puisse être en mesure de l'améliorer.

Je vous remercie de prendre le temps, même juste de la lecture de ce!

InformationsquelleAutor hakuna121 | 2013-06-07