在if语句中进行除法
在Python中,如果我有一个范围(比如一系列数字),我想要逐个遍历这些数字,并把每个数字都除以另一个数字,我可以在一个if语句里做到这一点吗?
a = range(20)
for i in a:
if i / 3 == True:
print i
6 个回答
2
在命令提示符下:
>>> [i for i in range(20) if i%3 == 0]
>>> [0, 3, 6, 9, 12, 15, 18]
或者
>>> a = [i for i in range(20) if i%3 == 0]
>>> print a
[0, 3, 6, 9, 12, 15, 18]
>>>
7
是的,不过。
请,务必不要说 if some expression == True
。这样说是多余的,会让很多人搞不清楚你在想什么。
更重要的是。
i/3
是商。
i%3
是余数。如果 i 是 3 的倍数,那么 i%3 == 0
。
3
这里每个人都很好地解释了怎么做才对。我想说的是,你们哪里做错了。
if i / 3 == True
这段代码等价于:
if i / 3 == 1
因为 True 等于 1。所以你实际上是在检查 i 除以 3 是否等于 1。你的代码会打印出 3、4、5。
我觉得你想做的是检查 i 是否是 3 的倍数。可以这样写:
if i % 3 == 0
当然,你可以用 if 语句来实现这个功能。或者你也可以用 列表推导式加上 if。
[x for x in range(20) if x % 3 == 0]
对于那些给这个内容投反对票的人,来自 Python 文档:
布尔值就是两个常量对象 False 和 True。它们用来表示真假值(虽然其他值也可以被认为是假的或真的)。 在数字上下文中(比如作为算术运算符的参数时),它们分别表现得像整数 0 和 1。