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