Ruby
Python
next
continue

Rubyist あがりの python 初心者がループ中の next に殺られた件

問題:次の Ruby プログラムを Python に移植しなさい

(※1)

for i in 0..4
    if 0 == i % 2
        next
    end
    puts i
end

実行結果 =>

 1
 3

・・・このように奇数が出力されれば正解。

移植例(誤)

for i in range(5):
    if 0 == i % 2:
        next
    print(i)

実行結果 =>

0
1
2
3
4

な、なんで、偶数も奇数も全部出てくるねーん!?
(私は、この種のバグで数時間、殺られました。)

試しに Python コマンドのインタラクティブモードで実行すると、

>>> for i in range(5):
...     if 0==i%2:
...         next
...     print(i)
...
<built-in function next>
0
1
<built-in function next>
2
3
<built-in function next>
4
>>>

・・・なんじゃこの、中途半端な警告?は!?
アカンなら最初からハッキリ、エラーだと言ってほしかったョ。。

移植例(正)

for i in range(5):
    if 0 == i % 2:
        continue
    print(i)

実行結果 =>

1
3

・・・奇数だけが出力された。 めでたし!

おそらく、Perl 使いも同様に、数千人がこの件で戦死したのではないだろうか?

注釈

※1
生粋の Rubyist なら、最初のやつはこんなふうに書くかな。

5.times do |i|
    next if 0 == i % 2
    puts i
end

まあ今回は、Rubyist を嵌める目的で、Python にもある文法の for を用いました。