Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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 while循环:返回更改任务_Python_While Loop - Fatal编程技术网

Python while循环:返回更改任务

Python while循环:返回更改任务,python,while-loop,Python,While Loop,我对Python非常陌生,我正在尝试解决一个挑战。任务是: “自动售货机制造商想让他们的机器退回尽可能少的硬币。编写一个程序,接受必须退回的钱的数量,并计算它能得到多少硬币。” 这些硬币是2.00、1.00、0.50、0.20、0.10、0.05、0.02、0.03 这是我的代码: change = float(input()) result = 0 while change > 0: while change >= 2: change -= 2

我对Python非常陌生,我正在尝试解决一个挑战。任务是: “自动售货机制造商想让他们的机器退回尽可能少的硬币。编写一个程序,接受必须退回的钱的数量,并计算它能得到多少硬币。” 这些硬币是2.00、1.00、0.50、0.20、0.10、0.05、0.02、0.03

这是我的代码:

change = float(input())
result = 0

while change > 0:
    while change >= 2:
        change -= 2
        result += 1
    while change >= 1:
        change -= 1
        result += 1
    while change >= 0.5:
        change -= 0.5
        result += 1
    while change >= 0.2:
        change -= 0.2
        result += 1
    while change >= 0.1:
        change -= 0.1
        result += 1
    while change >= 0.05:
        change -= 0.05
        result += 1
    while change >= 0.02:
        change -= 0.02
        result += 1
    while change >= 0.01:
        change -= 0.01
        result += 1
print(result)

我的输入是2.20,打印结果是0,而应该是2。它看起来一点也不循环。谁能解释一下它为什么不循环,我不知道我做错了什么。

问题在于浮点运算。当你认为is应该是0时,它永远不会到达那里。所以你的循环永远不存在,因为变化永远不会>0,它只是变得非常小。您应该将阈值(在外部while循环处)设置为大约0.01

问题在于浮点运算。当你认为is应该是0时,它永远不会到达那里。所以你的循环永远不存在,因为变化永远不会>0,它只是变得非常小。您应该将阈值(在外部while循环处)设置为大约0.01

这个对我很有用

change = float(input())
result = 0


while change >= 2:
    change -= 2
    result += 1
while change >= 1:
    change -= 1
    result += 1
while change >= 0.5:
    change -= 0.5
    result += 1
while change >= 0.2:
    change -= 0.2
    result += 1
while change >= 0.1:
    change -= 0.1
    result += 1
while change >= 0.05:
    change -= 0.05
    result += 1
while change >= 0.02:
    change -= 0.02
    result += 1
while change >= 0.01:
    change -= 0.01
    result += 1
print(result)
你的第一个while循环并不是真正需要的,因为它只会完成一次,并且会让计算机感到困惑。不幸的是,我不知道为什么它不能与额外的while循环一起工作,但它应该像这样工作(至少对我来说是这样的)。

这一个对我有效

change = float(input())
result = 0


while change >= 2:
    change -= 2
    result += 1
while change >= 1:
    change -= 1
    result += 1
while change >= 0.5:
    change -= 0.5
    result += 1
while change >= 0.2:
    change -= 0.2
    result += 1
while change >= 0.1:
    change -= 0.1
    result += 1
while change >= 0.05:
    change -= 0.05
    result += 1
while change >= 0.02:
    change -= 0.02
    result += 1
while change >= 0.01:
    change -= 0.01
    result += 1
print(result)

你的第一个while循环并不是真正需要的,因为它只会完成一次,并且会让计算机感到困惑。遗憾的是,我不知道为什么它不能与额外的while循环一起工作,但它应该像这样工作(至少对我来说)。

while change==0:
如果0是输入,它将永远循环,如果不是0,它将立即退出。我假设您只想
而change>0
或者如果change>0甚至只想
因为您有单独的循环
而change==0:
如果0是输入,将永远循环,如果不是0,将立即退出。我假设您只需要
而change>0
或者如果change>0
甚至只需要
,因为您有单独的循环