Je suis dans une classe de script pour débutants où nous devons écrire du code qui modifie en fonction de l'entrée d'entiers. Il doit également imprimer la pluralité correcte pour chaque type de pièce. J'ai du mal à faire fonctionner mon code, car il s'arrête à la première opération qu'il effectue et je ne sais pas comment le faire continuer. Je suppose que cela a quelque chose à voir avec la façon dont j'ai présenté toutes ces instructions elif et je ne sais pas ce qu'il faut faire pour que le code continue s'il a encore un reste pour le changement :

# Get input for amount of change
change = int(input())

# If change is less than 1, print 'No change'
if change < 1:
    print('No change')

# If change is over 199, subtract and print 'X Dollars'
elif change > 199:
    print(change // 100, 'Dollars\n')
    change = change % 100

# If change is 100-199, subtract and print '1 Dollar'
elif 99 < change <= 199:
    print('1 Dollar\n')
    change = change % 100

# If remaining change is 50-99, subtract and print 'X Quarters'
elif 49 < change <= 99:
    print(change // 25, 'Quarters\n')
    change = change % 25

# If remaining change is 25-49, subtract and print '1 Quarter'
elif 24 < change <= 49:
    print('1 Quarter\n')
    change = change % 25

# If remaining change is 25, print '1 Quarter' and set change to 0
elif change == 25:
    print('1 Quarter')
    change = 0

# If remaining change is 20-24, subtract and print '2 Dimes'
elif 19 < change <= 24:
    print('2 Dimes\n')
    change = change % 10

# If remaining change is 10, print '1 Dime' and set change to 0
elif change == 10:
    print('1 Dime')
    change = 0

# If remaining change is 5-9, subtract and print '1 Nickel'
elif 4 < change <= 9:
    print('1 Nickel\n')
    change = change % 5

# If remaining change is 2-4, subtract and print 'X Pennies'
elif 1 < change <= 4:
    print(change // 1, 'Pennies')
    change = change % 1

# If remaining change is 1, print '1 Penny' and set change to 0
elif change == 1:
    print('1 Penny')
    change = 0

Quelqu'un pourrait-il me donner une idée? Merci pour votre temps.

1
NarsheDweller13 21 mars 2021 à 19:31

2 réponses

Meilleure réponse

Soustrayez toujours ce que vous avez déjà mis en correspondance du reste du changement. Et puis continuez à utiliser IF pas ELIF, car elif ne correspondra plus jamais une fois à un précédent s'il correspond.

# Get input for amount of change
change = int(input())

# If change is less than 1, print 'No change'
if change < 1:
    print('No change')

# If change is over 199, subtract and print 'X Dollars'
if change > 199:
    print(change // 100, 'Dollars\n')
    change = change - change // 100 * 100

# If change is 100-199, subtract and print '1 Dollar'
if 99 < change <= 199:
    print('1 Dollar\n')
    change = change - 100

# If remaining change is 50-99, subtract and print 'X Quarters'
if 49 < change <= 99:
    print(change // 25, 'Quarters\n')
    change = change - change // 25 * 25
# ....

Etc...

0
Mirronelli 21 mars 2021 à 16:55

Si je comprends bien votre question, il s'agit d'imprimer dollars/dollar [et les sous-valeurs] en fonction du "changement" qui continue de réduire jusqu'à zéro.

Permettez-moi de clarifier (pas un utilisateur de dollar :) :

  • 1 penney = 1 centime
  • 1 nickel = 5 cents
  • 1 centime = 10 cents
  • 1 quart = 25 cents
  • 1 dollar = 100 centimes

Donc, si l'entrée est disons 1451 Cents, la sortie attendue est : 1451 = 14 Dollars 2 Quarters 0 Dime 0 Nickel 1 Penny

Vous pouvez faire quelque chose comme ça:

change = int(input())
wt = {'Dollar': 0, 'Quarter': 0, 'Dime': 0, 'Nickel': 0, 'Penny': 0} # weight

wt['Dollar'] = change // 100
change = change % 100
wt['Quarter'] = change // 25
change = change % 25
wt['Dime'] = change // 10
change = change % 10
wt['Nickel'] = change // 5
change = change % 5
wt['Penny'] = change // 1
change = change % 1

for key, value in wt.items():
    print(f'{value} {key}s' if value > 1 else f'{value} {key}', end=' ')
print()

Production:

➜ python file.py 
112341
1123 Dollars 1 Quarter 1 Dime 1 Nickel 1 Penny 


➜ python file.py 
24
0 Dollar 0 Quarter 2 Dimes 0 Nickel 4 Pennys # you might wanna add some small condition to rectify this :)


➜ python file.py 
521
5 Dollars 0 Quarter 2 Dimes 0 Nickel 1 Penny 

0
Jovial Joe Jayarson 21 mars 2021 à 17:42