Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 在if语句中除法_Python - Fatal编程技术网

Python 在if语句中除法

Python 在if语句中除法,python,Python,在Python中,如果我有一个范围,并且我想迭代它并将每个数字除以另一个数字,那么我可以在if语句中这样做 a = range(20) for i in a: if i / 3 == True: print i 是的,但是 求你了,求你了,求你了。如果某个表达式==True,千万不要说。这是多余的,会让很多人怀疑你在想什么 更重要的是 i/3是商 i%3是剩余部分。如果i是3的倍数,i%3==0嗯,你似乎想要一个奇怪的东西——你把i除以3,然后检查它是否等于1。 As 4==

在Python中,如果我有一个范围,并且我想迭代它并将每个数字除以另一个数字,那么我可以在if语句中这样做

a = range(20)
for i in a:
   if i / 3 == True:
      print i
是的,但是

求你了,求你了,求你了。如果某个表达式==True,千万不要说
。这是多余的,会让很多人怀疑你在想什么

更重要的是

i/3
是商


i%3
是剩余部分。如果i是3的倍数,
i%3==0
嗯,你似乎想要一个奇怪的东西——你把i除以3,然后检查它是否等于1。
As 4==True=>False。

简短回答:否。您不能在python中的if语句中赋值

但真的,我不明白你想在这里做什么。您的示例代码将只打印出数字3、4和5,因为i除以3的每一个值的计算结果都不是1(因此为false)

如果要将列表中的所有内容除以3,则需要map(lambda x:x/3,范围(20))。如果您想要十进制答案,请映射(λx:x/3.0,范围(20))。这些操作将返回一个新列表,其中每个元素都是原始列表中的数字除以三的整数。

在命令提示下:

>>> [i for i in range(20) if i%3 == 0]
>>> [0, 3, 6, 9, 12, 15, 18]


在我自己处理Euler项目时,我发现“
if not x%y
”是表示“if x是y的倍数”的最简洁的方式。这相当于在其他答案中看到的“
如果x%y==0
”。我不认为两者之间有显著的区别;你使用的只是个人喜好。

这里的每个人都很好地解释了如何正确使用。我只是想解释一下你做错了什么

if i / 3 == True
相当于:

if i / 3 == 1
因为True==1。所以你基本上是在检查i除以3是否等于1。您的代码将实际打印3 4 5

我想你要做的是检查我是否是3的倍数。像这样:

if i % 3 == 0
当然,您可以使用if语句来执行此操作。或者你可以使用if


对于那些对此投反对票的人,来自:


布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以被视为假或真)在数值上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数0和1。

请告诉我们假定的输出是什么-如果您想要所有3的倍数,最好使用if((i%3)==0)print i。这是euler项目中的一个问题,请尽量避免“if some expression==False”也可以。实际上,“if some expression==True”非常清楚地表明,您确实希望表达式为True,并且您没有只是心不在焉地忽略比较。就像将“o=null”放在一起一样“在构造函数中,它清楚地表明您确实希望变量为null,并且您没有忘记初始化它。说得更清楚没有坏处。@Christopher:那是错误的。如果您能够执行x==True,那么您就能够使用If y==False,这在将False实现为0的语言中是不可能的。在“显式”和“冗余”之间存在差异。在
的情况下,如果expr==True
,我们已经越过了界限。if表达式:
语法表示True,在Python中仅表示True。(其他语言不是这个问题的一部分)。在这种情况下,True不是多余的,它是否等同于i/3==1,但这显然不是用户的意图。只是为了澄清您在那里做了什么,将其全部读到一个列表中,并用余数将其除开,如果余数=0,则将其添加到列表中,对吗?完全正确。“[…]”中的部分称为“列表理解”…如果您想了解更多信息,请查看第5.1.4节“所有非零值均为真”。对于i<3,i/3为假;对于所有其他情况,i/3为真。在使用“经典”除法运算符的Python版本中。如果在Python3中使用future division,那么只有当i==0时,i/3才会为false。@S.Lott,没错,所有非零值都为True,但True等于1。试试真的+3你会得到4。Kevin在他的样本中使用了print not print()。这就是为什么我假设这是一个“经典”除法算子。我只是想简单地说出来。Kevin显然是编程新手。@S.Lott,为了证明我的观点,尝试计算5/2==True,您将看到结果实际上是False而不是True
if i % 3 == 0
[x for x in range(20) if x % 3 == 0]