在if语句中进行除法

0 投票
6 回答
17568 浏览
提问于 2025-04-15 11:43

在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。

撰写回答