Python if是布尔语句
我在一个简单的表达式中遇到了一个问题,如下所示Python if是布尔语句,python,if-statement,pycharm,Python,If Statement,Pycharm,我在一个简单的表达式中遇到了一个问题,如下所示 number=int(input("enter the number")) for n in range(40-101): if n % number is 0: print(n) 当我输入10作为输入时,它不会输出任何内容。用我的小学数学,我可以很容易地假设这应该打印出所有可以除以10的数字 所以问题应该在if语句中。它不会进入打印(n) 我正在使用PyCharm社区版和Python 3.4 在这种情况下,您应该使用==
number=int(input("enter the number"))
for n in range(40-101):
if n % number is 0:
print(n)
当我输入10作为输入时,它不会输出任何内容。用我的小学数学,我可以很容易地假设这应该打印出所有可以除以10的数字
所以问题应该在if
语句中。它不会进入打印(n)
我正在使用PyCharm社区版和Python 3.4
==
而不是is
,因为:
is
检查两个对象的id
是否相同,=
检查两个对象的值是否相同
范围(40-101)
给出了范围(-61)
,这被视为范围(0,-61)
。让我们看看:
>>> range(40-101)
range(0, -61)
>>> list(range(40-101))
[]
我想你的意思是范围(40101)
对吗number = int(input("Enter the number: "))
for n in range(40, 101):
if n % number == 0:
print(n)
演示:
刚刚有了一个改进代码的想法,在这种情况下,您不需要
%
,因为它有一个步骤
参数。从文件中:
等级范围(停止)
类别范围(开始、停止[、步骤])
范围构造函数的参数必须是整数(内置int或实现\uuuuu index\uuu
特殊方法的任何对象)
如果省略步骤
参数,则默认为1。如果省略start参数,则默认为0。如果步骤为零,则引发ValueError
对于正阶跃,范围r的内容由公式r[i]=start+step*i
确定,其中i>=0
和r[i]
因此,如文档所述,您还可以设置步骤
而不是使用%
来检查所有可以被数字
分割的数字,手动使用if
。例如:
number = int(input("Enter the number: "))
for n in range(40, 101, number):
print(n)
“既然他们使用”是“无处不在…”谁是“他们”?我建议你停止听它们,因为你几乎不应该使用
is
。唯一常见的情况是我能想到的是当你检查某个东西是否没有时,那只是因为它在语义上更正确something==None
仍然有效-只是没有那么好。这是真的,但在Arc676的建议下,我尝试在范围(40101,1)内执行相同的代码数字为10。它是有效的。所以我认为is适用于整数,但不适用于字符串等,就像java一样。所以我的意思是,根据is,两个具有相同内容的不同字符串是false。但是根据is,两个具有相同整数值的不同变量是相等的。is步骤的第三个参数是。因此,在range(40101,1)
和range(40101)
之间没有区别。但是,嗯,我有个好主意来改进你的代码。@Juwan:但是,我在你的代码中没有看到任何字符串,你已经将输入字符串转换为整数,使用int()
函数对吗?是的,我认为它是这样工作的。因为如果你试图在输入代码中输入类似于名称的内容,就会失败,因为它无法将其解析为整数值。@Juwan:哦,你是说这个吗。然后,您可以使用try…except
捕获ValueError
引发的int()
错误。我想你很快就会知道的;)
number = int(input("Enter the number: "))
for n in range(40, 101, number):
print(n)