Webサイト工事中です! 閲覧できますが不具合があるかもしれません

Python 2とPython 3でのinput関数の違い

最近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系で全然違う挙動をすることがあるようです。

今後も気がついたら、記事にしていこうと思います。

 

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

斎藤 康毅
3,721円(12/03 21:47時点)
Amazonの情報を掲載しています
入門 Python 3

入門 Python 3

Bill Lubanovic
2,699円(12/03 21:47時点)
Amazonの情報を掲載しています
スラスラ読める Pythonふりがなプログラミング

スラスラ読める Pythonふりがなプログラミング

株式会社ビープラウド, リブロワークス
1,643円(12/04 00:53時点)
発売日: 2018/06/22
Amazonの情報を掲載しています

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

SESSIONS や Tokyo Demo Fest 等のイベントを主催してる人
各種最適化やIT・インフラ・3DCGが好き
◆YouTube: http://youtube.com/@FL1NE_
◆X(Twitter): @FL1NE

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次