所有现金变更仅适用于一张账单

时间:2016-01-06 22:32:21

标签: python

所有的金额都是一张账单。示例:总和是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")

1 个答案:

答案 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