我正试图用Python编写一段代码,以最少的硬币和每行一种硬币类型输出精确的更改。硬币类型有美元、25美分、10美分、5美分和1美分。我还必须使用单数和复数硬币名称,如1便士对2便士。当我输入45并运行代码时,我得到一个错误消息(您的程序没有输出)。这是我的密码:
total_change = int(input())
if total_change <= 0:
print('No change')
if total_change >= 100:
dollar = total_change//100
dollar_change = total_change % 100
if dollar == 1:
print(dollar + ' Dollar')
elif dollar > 1:
print(dollar + ' Dollars')
elif dollar_change >= 25:
quarter = dollar_change//25
quarter_change = dollar_change % 25
if quarter == 1:
print(quarter + ' Quarter')
elif quarter > 1:
print(quarter + ' Quarters')
elif quarter_change >= 10:
dime = quarter_change // 10
dime_change = quarter_change % 10
if dime == 1:
print(dime + ' Dime')
elif dime > 1:
print(dime + ' Dimes')
elif dime_change >= 5:
nickel = dime_change // 5
nickel_change = dime_change % 5
if nickel == 1:
print(nickel + ' Nickel')
elif nickel > 1:
print(nickel + ' Nickels')
elif nickel_change >= 1:
penny = nickel_change // 1
if penny == 1:
print(penny + ' Penny')
else:
print(penny + ' Pennies')
您的代码有许多需要解决的问题,包括缺少输入值0<
total_change
<;缩进的问题(应该对齐elif
块)、不必要的变量(不需要像nickel_change
和dime_change
-total_change
这样的变量才是最重要的),并且您尝试打印dollar + ' Dollar'
,即使dollar
是一个数字变量我想改进代码中的问题,使其功能化,但不完全重写您的工作。所以,我将要提供的代码的基本框架是相同的
我使用了递归的方法。我有以下功能和您的所有(已清理)代码:
请注意,每次打印一行时,函数都会再次运行,但在减去已处理的更改之后
举几个例子:
要将其与原始框架结合起来,请使用输入
如果您对我对您的代码所做的更改有任何疑问,请告诉我
相关问题 更多 >
编程相关推荐