【问题标题】:Python if and else print conditionPython if 和 else 打印条件
【发布时间】:2017-05-08 08:55:13
【问题描述】:

如果一个整数能被 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 声明
  • 那么,您的代码对21 有什么作用?你想让它做什么呢?
  • 您要查找的关键字是elif
  • @cricket_007:哦,我的错!

标签: python if-statement conditional-statements


【解决方案1】:

你需要使用elif而不是if,并测试3和7的情况first

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

【讨论】:

    【解决方案2】:

    如果我没听错的话,这些是条件: 1) 如果数字能被 3 整除,则打印“Hi” 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
    

    此代码适用于上述条件。它明确地说明它们并强制逻辑。

    【讨论】:

    • 我改了它来解决问题
    • 为什么是最后一个elif?为什么不直接使用else
    • 只是为了确保满足条件。在这些情况下,我发现最好是明确的。这确实是 python 迭代和传递重要数字的顺序。
    • 它过于冗长和多余。你正在让 Python 做你已经测试过的额外工作。
    • 是的..我知道。但我发现在尝试解决问题时构建一些冗余有助于弄清楚 python 在做什么。
    【解决方案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 语句,例如,当它在 3 时,它会执行代码的第一部分,但是当它尝试时if i % 3 == 0 and i % 7 == 0:它会是假的,所以它会打印 i

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2018-01-13
      • 1970-01-01
      • 2015-10-23
      • 2022-11-11
      • 1970-01-01
      相关资源
      最近更新 更多