python - python中的while语句

标签 python while-loop

while b:
    n.append(int(b%10))
    b=b/10
return n

这里的 while 语句即使在 b=0 时也没有停止,这有什么问题吗?

最佳答案

让我们简化您的 while 循环并删除不必要的部分:

while b:
    b = b/10
    print(b)

它的作用是,它接受给定的b将其除以10,并将其指定为b。现在“除以 10”部分很棘手。

  • 如果您使用的是 Python 2,它的工作方式为整数除法:

    19/10 = 1
    

    让我们再划分一次:

    1/10 = 0
    
  • 但在 Python 3 中,这是一个实际的、正确的划分:

    19/10 = 1.9
    

    让我们再划分一次:

    1.9/10 = 0.19
    

因此,在 Python 2 中,循环将继续向下舍入除法,最终将达到 0。但在 Python 3 中,您将继续正确除以 float ,并且永远不会达到 0。这意味着您的 while 永远不会终止。

解决方案:如果你想通过整数除法最终以 0 结束,以便循环在某个时刻结束,你可以在 Python 3 中使用 a//b在 Python 2 中获得与 a/b 相同的行为。

关于python - python中的while语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49260086/

相关文章:

python - 无法在 Python (Windows 10) 中使用 OpenCV 打开保存的视频

java - 4.23 Java 中匹配数字之前的实验倒计时

c - 如何将输入添加到数组并在用户输入字符串 'stop' 时停止?

python - 我如何询问用户是否想再次播放并重复 while 循环?

python - 如果我从 python 中的多个不同进程登录同一个文件会发生什么?

python - SQLAlchemy 将列添加到映射类上的 query()

python - 如何在 Maya python ls 命令中选择顶点?

Python 未实现的方法与抽象方法,哪个更 Pythonic? PyCharm 不喜欢未在基类中实现的方法

java - 兴趣循环/编码初学者

python - 在 Pycharm 和 Kivy 中使用 while 循环