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

2行目は、の場合にのみ実行されるi%15 == 0ため、印刷の最初の条件は常にtrueになります。つまり、2行目が実行されるたびに、が実行される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

if i%15==0始まる行printは、i%15 が 0 に等しい場合にのみ評価されるためです。これらの場合、条件ステートメント内の最初の「if」クエリが true であり、最初の「then」ケースの評価につながりますがprint j+k、最初の「else」ケースであるj if i%3==0 else k if i%5==0 else i.

編集:「else」ステートメント内のさらなる「if」クエリがtrueかどうかに関係なく、「if」クエリがfalseの場合にのみ「else」ケースが実行されることに注意してください。

于 2013-02-06T14:59:06.020 に答える