2024-04-26 03:23:08 发布
网友
while b: n.append(int(b%10)) b=b/10 return n
在这里,while语句即使在b=0时也不会停止,这有什么问题?你知道吗
b=0
让我们简化while循环并删除不必要的部分:
while b: b = b/10 print(b)
它的作用是,取一个给定的b,除以10,并将其赋值为b。现在“除以10”的部分很棘手。你知道吗
b
如果您使用的是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的相同行为。你知道吗
a//b
a/b
我认为您应该进行整数除法,如果是这种情况,那么您的代码应该使用//而不是/
//
/
while b: n.append(int(b%10)) b=b//10 return n
计算提醒和整数商的最有效方法是divmod。你知道吗
divmod
while b: b, m = divmod(b, 10) n.append(m)
对于非负b,此循环停止。你知道吗
让我们简化while循环并删除不必要的部分:
它的作用是,取一个给定的
b
,除以10,并将其赋值为b
。现在“除以10”的部分很棘手。你知道吗如果您使用的是Python 2,它将作为整数除法:
让我们再分一次:
但在Python3中,这是一个实际的、适当的划分:
让我们把这个再分一次:
所以在Python2中,循环将继续向下舍入除法,最终将达到0。但是在python3中,您将继续正确地分割浮点,并且永远不会达到0。这将意味着你的while永远不会终止。你知道吗
解决方案:如果希望通过整数除法最终得到0,以便循环在某个点结束,可以使用python3中的
a//b
来获得python2中a/b
的相同行为。你知道吗我认为您应该进行整数除法,如果是这种情况,那么您的代码应该使用
//
而不是/
计算提醒和整数商的最有效方法是
divmod
。你知道吗对于非负
b
,此循环停止。你知道吗相关问题 更多 >
编程相关推荐