Python if和else打印条件

The*_*tor 1 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

else:
    print i
Run Code Online (Sandbox Code Playgroud)

声明

Mar*_*ers 8

您需要使用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
Run Code Online (Sandbox Code Playgroud)

你使用了独立的 if陈述.if无论if您的代码之前或之后执行的其他语句是什么,都会测试每个语句并执行它们的块.elif但是,块附加到它们的if语句中,Python只会执行其中一个块,第一个的条件为真.

因此,在上面的if..elif..elif..else一系列测试中,如果i % 3 == 0 and i % 7 == 0为True,则不会执行任何其他分支,包括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
Run Code Online (Sandbox Code Playgroud)