对于给定的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
答案 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”查询是否为真,都会执行。