LoginSignup
2
0

More than 5 years have passed since last update.

pyファイルの実行が出来ずハマった件(input関数)

Posted at

VS Codeでデバッグしている時は正しく動くのに、pyファイルをダブルクリックしたら動かないという事象に見舞われました。

結論としては、VS Code上ではPython 3.x系が動いていて、ダブルクリックによる実行時には2.xが動いていたためでした。

よって、どちらのバージョンにも対応できるような方法を考えた話です。

input関数の仕様が違う

Python 2.x系と3.x系ではinput関数の仕様が違います。

Python 2.xの場合、input関数を普通に呼んでしまうと、ユーザ入力値は数値として扱われます。

そのため、文字列を扱いたい場合には、

raw_input

という別の関数が用意されています。

3.x系になるとこの2つはinputに統合されました。

以上の理由から、Python 2.x系と3.x系で処理を分けてあげる必要があります。

実行されているPythonのバージョンを取得

Pythonのバージョンを取得する方法は以下です。

test.py
import sys

PYTHON_VERSION = sys.version_info.major #一応定数として入れておく

バージョンを区別

今回はinput関数を使うので、関数をラッピングします。

test.py
def char_input( text ):
    if PYTHON_VERSION == 2:
        return raw_input( text ) #Python 2.x
    else:
        return input( text ) #Python 3.x

これで、char_input関数を使えば、どちらのバージョンにでも対応できます。

おわりに

これ、結構ハマりました・・・

最初try文でトラップして、調べていくうちにinputが原因だと分かりました。

VS Codeのデバッガでは普通に動いていたのでおかしいなーと。

たまたま自分のPCに以前使っていたPython2.x系がインストールされていたためここに気づきましたが、

こういったバージョンの違いによる対応をしてあげるのが親切ですね。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0