Python if and else打印条件

2024-04-23 08:57:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如果整数可被3整除,则打印“Hi”

如果可以被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

但我的数字是重复的。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

声明


Tags: andin声明forif错误range数字
3条回答

您需要将代码更改为

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语句,并且当它的on 3(例如)执行代码的第一部分时,但是当它尝试if i % 3 == 0 and i % 7 == 0:时,它将为false,因此它将打印

您需要使用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将只执行其中一个块,这是条件为true的第一个块。

因此,在上面的if..elif..elif..else系列测试中,如果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

如果我理解正确,以下是条件: 1) 如果数字可被3整除,则打印“Hi” 2) 如果数字可被7整除,请打印“再见” 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

本规范适用于上述条件。它明确地陈述它们并强制逻辑。

相关问题 更多 >