
RubyとPythonでは回数指定ループの挙動が違います。
ここに気づかないと、RubyのコードをPythonに変換しているときにハマります。
(実際小一時間ハマってました...)
Pythonではrange(1,1)とかくと何もイテレートされませんが、Rubyの場合は(1..1)で1回イテレートされます。
同じにするには、Pythonの時に1を足す必要があります。
サンプルコードと結果を対比すれば一発でわかります。
Pythonの挙動
1 2 | for i in range ( 1 , 1 ): print (i) |
結果
# 何も表示されない... |
Rubyの挙動
1 2 3 | ( 1. . 1 ).each{|i| puts i } |
結果
1 |
PythonとRubyを一緒にするには
Pythonでは+1します。
1 2 | for i in range ( 1 , 1 + 1 ): print (i) |
結果
1 |
教訓
RubyをPythonで書く時にrangeを使う場合は+1しとこう。
0 件のコメント :
コメントを投稿