如果整数可以被3整除,请打印"嗨"
如果可以被7整除,请打印"再见"
如果可以被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
语句
答案 0 :(得分: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
您使用了独立的 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
答案 1 :(得分:0)
您需要将代码更改为
for i in range(1,100):
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 语句,并且当它在3上时,例如它执行代码的第一部分但是当它尝试if i % 3 == 0 and i % 7 == 0:
时它将是假的,因此它打印我
答案 2 :(得分:0)
如果我理解你的话,这些是条件: 1)如果数字可被3打印"嗨" 2)如果数字可以被7打印" Bye" 4)如果数字可以被3和7打印" HiBye" 5)如果不满足上述条件,请打印该号码。
for i in range(1,100):
if i % 3 == 0 and i % 7 == 0:
print "HiBye"
elif i % 3 == 0:
print "Hi"
elif i % 7 == 0:
print "Bye"
elif i % 3 != 0 and i % 7!= 0:
print i
此代码适用于上述条件。它明确地陈述了它们并强制逻辑。