Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python if/elif/else语句对金钱的帮助_Python_If Statement - Fatal编程技术网

Python if/elif/else语句对金钱的帮助

Python if/elif/else语句对金钱的帮助,python,if-statement,Python,If Statement,在页面底部更新了我的新代码作为答案 因此,对于我的CS 170课程,我们必须制作一个程序,用户输入的钱不到10美元,零钱以最少的硬币、纸币或50美分的硬币返回。在大多数情况下,程序运行良好,除非遇到x.x0 e、 g: 该程序完全跳过一角硬币部分,直接到五分镍币提供4作为解决方案时,最低金额应为8个四分之一,2个一角硬币和结束。我对循环也不是很熟练,但我知道这是可能的,而且代码要短得多,清理代码建议也很好。谢谢你的帮助 # optional.py # Calculating the least

在页面底部更新了我的新代码作为答案

因此,对于我的CS 170课程,我们必须制作一个程序,用户输入的钱不到10美元,零钱以最少的硬币、纸币或50美分的硬币返回。在大多数情况下,程序运行良好,除非遇到x.x0 e、 g:

该程序完全跳过一角硬币部分,直接到五分镍币提供4作为解决方案时,最低金额应为8个四分之一,2个一角硬币和结束。我对循环也不是很熟练,但我知道这是可能的,而且代码要短得多,清理代码建议也很好。谢谢你的帮助

# optional.py
# Calculating the least amount of change in return for a $10 bill.

## amount due
due = input("Amount due:\n ")
## if amount is more than 10, exit program
if due > 10.00:
    print "Please enter a number lower then 10.00."
    exit()
## if amount is less than 0, exit program
if due < 0:
    print "Please enter a number greater than 0.00."
    exit()
## subtract amount from 10
else:
    change = 10.00 - due
    print "Amount in return\n %0.2f." % change
## if amount is 0, no change
if change == 0:
    print "No change in return."
## passes expression if previous not met
    pass
elif change >= .25:
## setting q, dividing change by .25
    q = change / .25
## maaking q an integer
    quaters = int(q)
    print "Quaters in return %r." % quaters
## subtracting quaters from chane
    change = change - (quaters *.25)

if change < .10:
    pass
elif change >= .10 <= .24:
    d = change * .1
    dimes = int(d)
    print "Dimes in return %r." % dimes
    change = change - (dimes * .1)

if change < .05:
    pass
elif change >=.05 <=.09:
    n = change / .05
    nickels = int(n)
    print "Nickels in return %r." % nickels
    change = change - (nickels * .05)

if change == .01:
    pennies = change / .01
    print "Pennies in return %r." % pennies
elif change >=.01 <=.04:
    p = change / .01
    print "Pennies in return %0.0f." % p
#可选.py
#计算一张10美元钞票的最低兑换额。
##应付金额
到期=输入(“到期金额:\n”)
##如果数量大于10,则退出程序
如果到期日>10.00:
打印“请输入一个低于10.00的数字。”
退出()
##如果金额小于0,则退出程序
如果到期日<0:
打印“请输入一个大于0.00的数字。”
退出()
##从10中减去金额
其他:
更改=10.00-到期
打印“退货金额\n%0.2f”。%change
##如果金额为0,则无变化
如果更改==0:
打印“无更改返回”
##如果未满足上一个表达式,则传递表达式
通过
elif更改>=.25:
##设置q,将变化除以0.25
q=变化/.25
##maaq整数
四分之一=整数(q)
打印“四分之一返回%r.%四分之一”
##从通道中减去四分之一
更改=更改-(四分之一*.25)
如果变化小于0.10:
通过

elif change>=.10=.05=.01这并没有达到您预期的效果:

elif change >= .10 <= .24:

elif change>=.10=.10和change您可以进行一些更改来清理此代码,其中之一可能会解决您的问题。首先,
pass
完全不起作用。它通常用作稍后填充的循环或函数的占位符。此外,您的
elif
语句的条件与它们所遵循的
if
语句是互斥的,因此

if change == 0:
    print "No change in return."
## passes expression if previous not met
    pass
elif change >= .25:
## setting q, dividing change by .25
    q = change / .25
## maaking q an integer
    quaters = int(q)
    print "Quaters in return %r." % quaters
## subtracting quaters from chane
    change = change - (quaters *.25)
可以重写为

if change >= .25:
## setting q, dividing change by .25
    q = change / .25
## making q an integer
    quaters = int(q)
    print "Quaters in return %r." % quaters
## subtracting quaters from change
    change = change - (quaters *.25)
if .01 <= change <= .04
对于每个
if
/
elif
语句。而且在声明中,

if change >=.01 <=.04:

if change>=.01=.01和.01所以我用更干净的打印代码以更好的格式编写了它。谢谢你们的帮助!
如果有人想知道这两个代码之间的差异,就要像其他人建议的那样从浮点中提取出来,并将所需的转换成整数,将整数乘以具体金额,比如四分之一,然后从零钱中减去整数*硬币/钞票。结果很好。我试着用for语句进行实验,但结果不太好,因为我对它也不太了解。直到下一次

再次感谢各位

下面是所有对此感到疑惑的人的完整代码:

import sys

due = input("Please enter the amount due on the item(s):\n ")
# if over $10, exit
if due > 10:
    print "Please enter an amount lower then 10."
    sys.exit(1)
## if under/equal 0, exit
if due <= 0:
    print "Please enter an amount greater than 0."
    sys.exit(2)
## 10 - due = change, converts change into cents by * by 100 (100 pennies per dollar)
else :
    change = 1000 - (due * 100)
## if change is 0, done
    if change == 0:
        print "No change in return!"
## if not 0 makes change2 for amount in return
    else:
        change2 = change / 100
        print "Amount in return:\n $%.2f." % change2
## if change > 500, subract 500 and you get 1 $5 bill

if 500.0 <= change:
    bill_5 = change / 500
    b5 = int(bill_5)
    change = change - 500

## if change is over 100, change divided by 100 and subtracted from change for quaters

if 100.0 <= change:
    dollars = change / 100
    dollar = int(dollars)
    change = change - (dollar * 100)

if 25 <= change < 100:
    quaters = change / 25
    quater = int(quaters)
    change = change - (quater * 25)

if 10 <= change <= 24:
    dimes = change / 10
    dime = int(dimes)
    change = change - (dime * 10)

if 5 <= change < 10:
    nickels = change / 5
    nickel = int(nickels)
    change = change - (nickel * 5)

if 0 < change < 5:
    pennies = change / 1
    penny = int(pennies)
    change = change - (penny * 1)

print "Change in return:\n $5:%i\n $1:%i\n Quaters:%i\n Dimes:%i\n Nickels:%i\n Pennies:%i " % (
    b5, dollar, quater, dime, nickel, penny )


if 0 >= change:
    print "Done!"
导入系统 到期=输入(“请输入项目的到期金额):\n”) #如果超过10美元,退出 如果到期日>10: 打印“请输入低于10的金额。” 系统出口(1) ##如果低于/等于0,则退出 如果到期500美元,分包500美元,你将得到1美元5美元的账单
如果500 <代码> ELIF变化> > 10,并且改变格雷戈对浮点的警告的扩展:考虑变化=6.60。int(6.60/0.25)给出26个四分之一。当我们从变化(6.60-0.25*26)中减去26个四分之一时,我们得到的剩余变化为0.09999999645,这小于dime值0.10。因此,您的算法最终的变化是6.59,而不是6.60。使用十进制货币模块()代替浮点,或者按照格雷格的建议转换成美分,这样就可以处理整数。
if change >=.01 <=.04:
change >= .01 and .01 <= .04
if .01 <= change <= .04
import sys

due = input("Please enter the amount due on the item(s):\n ")
# if over $10, exit
if due > 10:
    print "Please enter an amount lower then 10."
    sys.exit(1)
## if under/equal 0, exit
if due <= 0:
    print "Please enter an amount greater than 0."
    sys.exit(2)
## 10 - due = change, converts change into cents by * by 100 (100 pennies per dollar)
else :
    change = 1000 - (due * 100)
## if change is 0, done
    if change == 0:
        print "No change in return!"
## if not 0 makes change2 for amount in return
    else:
        change2 = change / 100
        print "Amount in return:\n $%.2f." % change2
## if change > 500, subract 500 and you get 1 $5 bill

if 500.0 <= change:
    bill_5 = change / 500
    b5 = int(bill_5)
    change = change - 500

## if change is over 100, change divided by 100 and subtracted from change for quaters

if 100.0 <= change:
    dollars = change / 100
    dollar = int(dollars)
    change = change - (dollar * 100)

if 25 <= change < 100:
    quaters = change / 25
    quater = int(quaters)
    change = change - (quater * 25)

if 10 <= change <= 24:
    dimes = change / 10
    dime = int(dimes)
    change = change - (dime * 10)

if 5 <= change < 10:
    nickels = change / 5
    nickel = int(nickels)
    change = change - (nickel * 5)

if 0 < change < 5:
    pennies = change / 1
    penny = int(pennies)
    change = change - (penny * 1)

print "Change in return:\n $5:%i\n $1:%i\n Quaters:%i\n Dimes:%i\n Nickels:%i\n Pennies:%i " % (
    b5, dollar, quater, dime, nickel, penny )


if 0 >= change:
    print "Done!"