python中的While语句

2024-04-26 03:23:08 发布

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

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

在这里,while语句即使在b=0时也不会停止,这有什么问题?你知道吗


Tags: return语句intappendwhile
3条回答

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

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

它的作用是,取一个给定的b除以10,并将其赋值为b。现在“除以10”的部分很棘手。你知道吗

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

    19/10 = 1
    

    让我们再分一次:

    1/10 = 0
    
  • 但在Python3中,这是一个实际的、适当的划分:

    19/10 = 1.9
    

    让我们把这个再分一次:

    1.9/10 = 0.19
    

所以在Python2中,循环将继续向下舍入除法,最终将达到0。但是在python3中,您将继续正确地分割浮点,并且永远不会达到0。这将意味着你的while永远不会终止。你知道吗

解决方案:如果希望通过整数除法最终得到0,以便循环在某个点结束,可以使用python3中的a//b来获得python2中a/b的相同行为。你知道吗

我认为您应该进行整数除法,如果是这种情况,那么您的代码应该使用//而不是/

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

计算提醒和整数商的最有效方法是divmod。你知道吗

while b:
    b, m = divmod(b, 10)
    n.append(m)

对于非负b,此循环停止。你知道吗

相关问题 更多 >