ユーザープロンプトに次の質問を設定します。
_save_flag is not set to 1; data will not be saved. Press enter to continue.
_
input()
はpython3では動作しますが、python2では動作しません。 raw_input()
はpython2では動作しますが、python3では動作しません。コードがpython 2とpython 3?
_raw_input
_をinput
にPython 2:
_try:
input = raw_input
except NameError:
pass
_
これで、input
はPython 2でも文字列を返します。
six
を使用して2/3互換コードを記述している場合、six.input()
はraw_input()
in Python 2およびinput()
in Python 3。
これを行う最善の方法は
import six
six.moves.input()
... 2と3で機能します。
更新:この方法は、将来インストールする場合にのみ機能し、上記の回答ははるかに優れており、より一般化できます。
this cheatsheet よりきれいに見える別のメソッドがあります:
# Python 2 and 3:
from builtins import input
Python2でコードを記述して futurize を使用するか、python3でコードを記述して pasteurize を使用できます。これにより、互換性のあるコードについて考える複雑さがなくなり、優れたプラクティスが保証されます。
この特定の質問について
from builtins import input
上記のスクリプトが生成するものです。
関数を明示的にロードします。
_from builtins import input
_
すると、python2とpython3でinput()
を使用できます。
依存関係をインストールする必要がある場合があります。
_pip install future
_
これは、python 2で、raw_input()
が文字列としてstdinに与えられたすべてを受け入れ、input()
が与えられた引数のデータ型を保持するためです(つまり、与えられた引数がint
型の場合、 int
のみとして残りますが、raw_input()
の場合のようにstring
に変換されません。つまり、input()
を使用すると、stdinで指定された引数を文字列として受け取り、同じものを評価します。そして、この評価は引数を対応する型に変換します。
_# Python 2.7.6
>>> a = raw_input("enter :- ")
enter :- 3
>>> type(a) # raw_input() converts your int to string
<type 'str'>
>>> a = input("enter :- ")
enter :- 3
>>> type(a) # input() preserves the original type, no conversion
<type 'int'>
>>>
_
したがって、Python 2でinput()
を使用する場合、ユーザーは引数を渡すときに注意する必要があります。文字列を渡す場合は、引用符で渡す必要があります(pythonは引用符内の文字を文字列として認識するため)。それ以外の場合はNameError
がスローされます。
_ >>> a = input("enter name :- ")
enter name :- Derrick
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'Derrick' is not defined
>>> a = input("enter name :- ")
enter name :- 'Derrick'
>>> a
'Derrick'
_
一方、raw_input()
を使用する場合、引数として文字列として受け入れるすべての引数を渡す際に、データ型について心配する必要はありません。ただし、コード内で適切な型変換を行う必要があります。
Python 2のinput()
に必要なこの余分な注意を避けるため、Python 3で削除されました。また、Python 3.でraw_input()
はinput()
に名前が変更されました。 Python 2のinput()
の機能は、Python 3にはもうありません。Python 3のinput()
は、Pythonでraw_input()
が提供していたものを提供します。
この投稿 は、詳細な理解に役立つ場合があります。