为什么条件运算符没有给出预期的结果(在Python中)?

时间:2013-02-06 14:53:25

标签: python

对于给定的Python代码,任何人都可以帮我找到为什么我没有得到预期的结果吗?

i=1
j="Hello"
k="World"
while i<101:
    if i%15==0: # thanks for answers, this is an extra if which I forgot to remove
        print j+k if i%15==0 else j if i%3==0 else k if i%5==0 else i
    i+=1

我的期望:

1
2
Hello
4
World
Hello
7
.
14
HelloWorld
.
.

但结果是:

HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld

3 个答案:

答案 0 :(得分:1)

if i%15==0:
    print j+k if i%15==0 else j if i%3==0 else k if i%5==0 else i

第二行仅在i%15 == 0时执行,因此打印的第一个条件始终为真。也就是说,每次执行第二行i%15 == 0时,由于您有j+k if i%15==0,因此始终会打印j+k

如果您删除了行if i%15==0:,那么您应该得到您期望的结果。

答案 1 :(得分:0)

因为print语句在模数检查范围内,所以print语句只能达到15的倍数。

在print语句中,如果i可被15整除,则满足第一个if条件。

由于这些原因,唯一可能打印的值是j+k或HelloWorld。

答案 2 :(得分:0)

由于if i%15==0,以print开头的行仅在i%15等于0的情况下进行评估。在这些情况下,条件语句中的第一个“if”查询为true,这导致评估第一个“然后”案例print j+k但不是第一个“其他”案例的评估,即j if i%3==0 else k if i%5==0 else i

编辑:请注意,只有当“if”查询为false时才会执行“else”情况 - 无论“else”语句中的“if”查询是否为真,都会执行。