最近Pythonを勉強し始めたのですが、input関数で早速ちょっとつまづいたので、記録しておきます。
今回はPythonに置けるinput関数の違いです。
Python2系の場合
Python2系ではinput関数で入力した値がデータ式として認識されるようです。
例えば、
print('Enter your name') name = input() print('name is : ' + name)
のようなinputに文字列を渡すようなコードは思った通りには動かないでしょう。
Enter your name FL1NE Traceback (most recent call last): File "test.py", line 2, in <module> name = input() File "<string>", line 1, in <module> NameError: name 'FL1NE' is not defined
こんな感じになります。
エラーをみるとFL1NEが定義されていないということでした。データ式として扱われるのでFL1NEという名前の変数や関数がないということになります。
では1 + 1のような式を与えてみるとどうでしょうか。文字と数列を加算することはできないので最後のコードをとりあえず変更して実行します。
print('Enter your name') name = input() print(name)
Enter your name 1+1 2
お、1+1の結果である2が帰ってきましたね。
同様にデータとして正しいシングルクォーテーションで囲んだ ‘FL1NE’ を渡すと…
Enter your name "FL1NE" FL1NE
このようになります。
Python3系の場合
Python3系ではinput関数で入力した値が文字列として認識されるようです。
そのため、Python2系でうまく動かなかった次のコードが想定通りに動くことでしょう。
print('Enter your name') name = input() print('name is : ' + name)
Enter your name FL1NE name is : FL1NE
このようになります。
また、Python2系の時のように次のようにコードを変更し、入力として1 + 1を渡してみるとどうなるでしょうか
print('Enter your name') name = input() print(name)
Enter your name 1+1 1+1
1+1がそのまま文字列として表示されました。
まとめ
このようにPython2系とPython3系で全然違う挙動をすることがあるようです。
今後も気がついたら、記事にしていこうと思います。
コメント