所有的金额都是一张账单。示例:总和是1550,但是它将达到4x500账单,-50余额。我需要在此代码中更改什么?我需要在“价格”的位置添加百分比吗?不要注意账单的大小。我试图制作sk%10 == 0
,但它没有用。
a=0
b=0
c=0
d=0
e=0
f=0
sk=0
sk=int(input("Enter money quanty: "))
if 10 <= sk:
if sk >= 500:
while 0 < sk:
sk = sk - 500
a = a + 1
if sk >= 200:
while 0 < sk:
sk = sk - 200
b = b + 1
if sk >= 100:
while 0 < sk:
sk = sk - 100
c = c + 1
if sk >= 50:
while 0 < sk:
sk = sk - 50
d = d + 1
if sk >= 20:
while 0 < sk:
sk = sk - 20
e = e + 1
if sk >= 10:
while 0 < sk:
sk = sk - 10
f = f + 1
print("Bill list:")
print("500 USD x", a)
print("200 USD x", b)
print("100 USD x", c)
print("50 USD x", d)
print("20 USD x", e)
print("10 USD x", f)
else:
print("Too small cash return")
答案 0 :(得分:2)
首先让我们从具有某种意义的变量名称开始;而不是a
使其成为fivehundreds
,而不是b
使其成为twohundreds
等。
现在你的代码开始看起来像
if amount >= 500:
while 0 < amount:
amount -= 500
fivehundreds += 1
其中读取“当数量大于0时重复减去500”。因此,如果金额(例如)37美元 - 大于0美元 - 您减去,现在有一个500美元的账单和剩余的-463美元。相反,尝试
if 500 <= amount:
while 500 <= amount:
amount -= 500
fivehundreds += 1
我重新安排了if
条件以强调它是多余的 - 如果if
失败,while
无论如何都不会做任何事情。让我们摆脱if
。您的初始if 10 <= sk
也是如此;如果它失败了,那么所有while
条件都会失败。
现在,通过一些重新排列,您的代码看起来像
fivehundreds = 0
while 500 <= amount:
amount -= 500
fivehundreds += 1
print("500 USD x", fivehundreds)
twohundreds = 0
while 200 <= amount:
amount -= 200
twohundreds += 1
print("200 USD x", twohundreds)
onehundreds = 0
while 100 <= amount:
amount -= 100
onehundreds += 1
print("100 USD x", onehundreds)
......你可能会注意到这些操作中有一定的相似性!这通常表示您应该使用循环。我们想用500s,然后200s,然后100s等来做这个...
for denom in [500, 200, 100, 50, 20, 10]:
num_bills = 0
while amount >= denom:
amount -= denom
num_bills += 1
print(denom, "USD x", num_bills)
现在还有一个更改要做:我们可以使用while
(整数除外)和{{而不是使用//
循环来达到合适数量的帐单。 1}}(模数)运算符直接得到答案。我也将%
语句作为可选项 - 如果我们有500美元的账单,我们真的不需要被告知它。
print