Python if 和 else 打印条件

标签 python if-statement conditional-statements

如果一个整数能被3整除,打印“Hi”

如果能被7整除,打印“Bye”

如果能同时被3和7整除,打印"HiBye"

到目前为止,我已经尝试过:

for i in range(1,100):
    if i % 3 == 0:
        print "Hi"
    if i % 7 == 0:
        print "Bye"
    if i % 3 == 0 and i % 7 == 0:
        print "HiBye"
    else: 
        print i

但是我的数字重复了。即这是我得到的输出。

1
2
Hi
3
4
5
Hi
6
Bye
7
8
Hi
9
10
11
Hi
12
13
Bye
14
Hi
15
16
17
Hi
18
19
20
Hi
Bye
HiBye

如您所见,3 再次重复。我认为错误在于

else:
    print i

声明

最佳答案

您需要使用 elif 而不是 if,并首先测试3 和 7 情况:

if i % 3 == 0 and i % 7 == 0:
    print "HiBye"
elif i % 3 == 0:
    print "Hi"
elif i % 7 == 0:
    print "Bye"
else: 
    print i

您使用了独立 if 语句。每个 if 语句都会被测试并执行它们的 block ,而不管您的代码可能在之前或之后执行的其他 if 语句。然而,elif block 附加到它们的 if 语句,Python 只会执行一个 block ,即第一个条件为真的 block .

所以在上面的if..elif..elif..else系列测试中,if i % 3 == 0 and i % 7 == 0是没错,不会执行任何其他分支,包括 else 分支。

现在输出如下:

>>> for i in range(1, 22):
...     if i % 3 == 0 and i % 7 == 0:
...         print "HiBye"
...     elif i % 3 == 0:
...         print "Hi"
...     elif i % 7 == 0:
...         print "Bye"
...     else:
...         print i
...
1
2
Hi
4
5
Hi
Bye
8
Hi
10
11
Hi
13
Bye
Hi
16
17
Hi
19
20
HiBye

关于Python if 和 else 打印条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41288099/

相关文章:

Python Pygame 鼠标位置不更新

python - 匹配字符串结尾

javascript - `else if` 永远不会执行;只执行前面的`if`

java - If 语句在程序中无法正常工作以确定三角形类型

r - 在 R 中寻找模式

sql - 条件 AND OR 与 Drupal db_select

flutter - 什么?在 Dart 中做什么?

python - TypeError:Google App Engine 的 Python 中的预期字符串或缓冲区

javascript - 避免重复 javascript

python - 将 csv 文件中的日期字段读取到数据框中