Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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 用于计算0和1的数量的程序_Python - Fatal编程技术网

Python 用于计算0和1的数量的程序

Python 用于计算0和1的数量的程序,python,Python,如果我在If循环中使用x//10运行上面的程序,那么只有当用户输入包含0和1的数字、任何其他输入,并且我根本没有得到输出时,输出才会实现 x = int(input('ENTER A NUMBER ')) count = 0 while x > 0: digit = x % 10 if digit == 0 or digit == 1: count += 1 x //= 10 print('THE NUMBER OF ONES OR ZERO

如果我在If循环中使用x//10运行上面的程序,那么只有当用户输入包含0和1的数字、任何其他输入,并且我根本没有得到输出时,输出才会实现

x = int(input('ENTER A NUMBER '))
count = 0
while x > 0:
    digit = x % 10
    if digit == 0 or digit == 1:
        count += 1
        x //= 10
print('THE NUMBER OF ONES OR ZEROES TOGETHER ARE: ', count)

这段代码运行得很好。我很困惑。

在第一个片段中,调用:

x = int(input('ENTER A NUMBER '))
count = 0
while x > 0:
    digit = x % 10
    if digit == 0 or digit == 1:
        count += 1
    x //= 10
print('THE NUMBER OF ONES OR ZEROES TOGETHER ARE: ', count)
是在if语句中生成的,因此仅当当前要计算的数字为0或1时才执行。这意味着当它不满足这个条件时,x永远不会被修改,所以相同的测试会被反复运行,永远不会结束


在第二个代码段中,相同的调用在if语句的范围之外进行,因此无论当前数字是什么,x被修改为少一个字符,下一个字符的计算结果与第一个代码段中的相同。

因为您陷入了无限循环:如果数字既不是0也不是1,则x未被修改,这意味着您得不到x/=10提供的数字中的下一个数字。为什么还要费心算术呢?您的输入已经是一个字符串。整个程序可以是x=输入“输入一个数字”;printx.count'0'+x.count'1'。
x //= 10