簡體   English   中英

通過單數/復數差異做出改變

[英]Making Change with Singular/Plural Differentiation

我在編寫 class 的初學者腳本中,我們需要編寫一些代碼來根據 integer 輸入進行更改。 它還需要為每種硬幣類型打印正確的復數。 我在讓我的代碼工作時遇到了一些麻煩,因為它在它執行的第一個操作處停止,我不知道如何讓它繼續。 我猜這與我如何布置所有這些 elif 語句有關,我不確定如果代碼仍有剩余部分可以進行更改,那么讓代碼繼續執行的正確做法是:

# 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

誰能給我一個想法? 感謝您的時間。

始終從更改的 rest 中減去您已經匹配的內容。 然后繼續使用 IF 而不是 ELIF,因為如果匹配,elif 將永遠不會再匹配一次。

# 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
# ....

等等...

如果我的問題是正確的,那就是根據不斷減少直到為零的“變化”打印dollars / dollar [和子價值]。

讓我澄清一下(不是美元用戶:):

  • 1 便士 = 1 美分
  • 1 鎳 = 5 美分
  • 1 角錢 = 10 美分
  • 1 季度 = 25 美分
  • 1 美元 = 100 美分

因此,如果輸入是1451美分,則預期的 output 是: 1451 = 14 Dollars 2 Quarters 0 Dime 0 Nickel 1 Penny

你可以這樣做:

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()

Output:

➜ 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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM