Juw*_*wan -1 python if-statement pycharm
我在一个简单的表达式中遇到了问题,如下所示.
number=int(input("enter the number"))
for n in range(40-101):
if n % number is 0:
print(n)
Run Code Online (Sandbox Code Playgroud)
当我输入10作为输入时,它不输出任何内容作为输出.通过我的小学数学,我可以轻松地假设这应该打印所有可以除以10的数字.
所以问题应该在if声明中.它没有进入print(n).
我正在使用PyCharm Community Edition和Python 3.4
您应该使用==而不是is在这种情况下,因为:
is检查两个对象id是否相同,并==检查两个对象的值是否相同.
嗯,range(40-101)给予range(-61)和那被视为range(0, -61).让我们来看看:
>>> range(40-101)
range(0, -61)
>>> list(range(40-101))
[]
Run Code Online (Sandbox Code Playgroud)
我觉得你的意思是range(40, 101)对的?
所以你的代码应该是这样的:
number = int(input("Enter the number: "))
for n in range(40, 101):
if n % number == 0:
print(n)
Run Code Online (Sandbox Code Playgroud)
演示:
Enter the number: 10
40
50
60
70
80
90
100
Run Code Online (Sandbox Code Playgroud)
刚想到要改进你的代码,%在这种情况下你不需要因为range()有一个step参数.从文件:
class range(stop)class range(start, stop[, step])范围构造函数的参数必须是整数(内置int或实现
__index__特殊方法的任何对象).如果
step省略该参数,则默认为1.如果省略start参数,则默认为0.如果step为零,ValueError则引发.对于正步骤,范围r的内容由公式确定,
r[i] = start + step*i其中i >= 0和r[i] < stop.
因此,正如文档所述,您也可以设置step而不是使用%来检查可以通过number手动使用分割的所有数字if.例如:
number = int(input("Enter the number: "))
for n in range(40, 101, number):
print(n)
Run Code Online (Sandbox Code Playgroud)