(Python3.3)无法理解为什么值达到5时函数会创建无限循环

2024-05-19 00:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个模拟自动售货机的程序。对于某些人来说,我的这部分代码创建了一个无限循环,我不太明白为什么。我在python tutor中运行了它,看看我的问题出在哪里了,似乎当我的可变price_remaining=5时,它有时不会通过elif语句。我不太清楚是什么会以这种或那种方式触发它。我将把我输入的内容复制并粘贴到python-tutor中,希望有人能基于这个解释。 编辑:我刚刚又检查了python tutor,似乎只有当我有一个 以剩余价格结束。例如2.05、0.05、1.15等

price_remaining = 2.55
price_remaining = price_remaining * 100
q_stock = 25
q_returned = -0
d_stock = 25
d_returned = 0
n_stock = 25
n_returned = 0
while price_remaining > 0:
    if price_remaining >=25 and q_stock > 0:
        price_remaining = price_remaining - 25
        q_stock = q_stock - 1
        q_returned = q_returned + 1
    elif price_remaining >=10 and d_stock > 0:
        price_remaining = price_remaining - 10
        d_stock = d_stock - 1
        d_returned = d_returned + 1
    elif price_remaining >=5 and n_stock > 0:
        price_remaining = price_remaining -5
        n_stock = n_stock - 1
        n_returned = n_returned + 1

print( q_returned)
print( d_returned)
print( n_returned


Tags: and代码程序编辑内容粘贴stock方式
1条回答
网友
1楼 · 发布于 2024-05-19 00:21:38

当我添加行时

print(repr(price_remaining), repr(n_stock))

while循环开始时,代码将生成

^{pr2}$

由于浮点数的工作原理(请参阅here以获取提示),您不能总是完美地表示每个可能的数字,因此所有的9都是

在任何情况下,一旦price_remaining < 5,即使它只是少了一点点,你的代码就没有任何触发的if分支。在

相关问题 更多 >

    热门问题