0

对于给定的 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
4

3 回答 3

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:,那么您应该得到您期望的结果。

于 2013-02-06T14:57:41.963 回答
0

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

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

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

于 2013-02-06T14:57:21.807 回答
0

因为仅在 i%15 等于 0 的情况下才评估以if i%15==0开头的行print。在这些情况下,条件语句中的第一个“if”查询为真,这导致评估第一个“then”情况print j+k而不是第一个“其他”情况,即j if i%3==0 else k if i%5==0 else i.

编辑:请注意,仅当“if”查询为假时才执行“else”案例 - 无论“else”语句中的进一步“if”查询是否为真。

于 2013-02-06T14:59:06.020 回答