如果一个整数能被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/