import sys
print(sys.platform)
print(2**100)
raw_input()
Python 3.1を使用していますがraw_input
、DOSポップアップを「フリーズ」できません。私が読んでいる本はPython 2.5用で、Python 3.1を使用しています
これを修正するにはどうすればよいですか?
import sys
print(sys.platform)
print(2**100)
raw_input()
Python 3.1を使用していますがraw_input
、DOSポップアップを「フリーズ」できません。私が読んでいる本はPython 2.5用で、Python 3.1を使用しています
これを修正するにはどうすればよいですか?
回答:
Python 3から、raw_input()
に名前が変更されましたinput()
。
以下からの新機能ではPython 3.0、組み込み関数セクション 2番目の項目。
input()
とraw_input()
。 a = input()
ユーザー入力を受け取り、正しいタイプに入れます。例:ユーザーが5 と入力した場合、inの値a
は整数5です。 a = raw_input()
ユーザー入力を受け取り、文字列として配置します。例:ユーザーが5と入力した場合、の値a
は文字列「5」であり、整数ではありません。私のようなpythonの初心者にとっては良い情報かもしれません。
これはPython 3.xおよび2.xで機能します。
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
global input
呼び出し関数の上部にa を付けて修正しました。
import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
。
__builtin__
名前が変更されbuiltins
ました。どちらも__builtins__
CPythonと同様に使用できます。
getattr(__builtins__, 'raw_input', input)
Python 2.7.2にインポートすると、デフォルトを返します。
他の人が示したように、このraw_input
関数はinput
Python 3.0で名前が変更されており、より最新の本を提供するほうがよいでしょうが、スクリプトの出力を確認するためのより良い方法があることを指摘したいと思います。 。
あなたの説明から、私はあなたがWindowsを使用していると思います、あなたは.py
ファイルを保存し、それをダブルクリックして実行します。プログラムが終了するとすぐにポップアップするターミナルウィンドウが閉じるため、プログラムの結果を確認することはできません。この問題を解決するには、ユーザーがEnterキーを押すまで待機するraw_input
/ input
ステートメントを追加することをお勧めします。ただし、これまでに説明したように、プログラムのエラーなどの問題が発生した場合、そのステートメントは実行されず、何が問題かを確認できずにウィンドウが閉じます。コマンドプロンプトまたはIDLEを使用する方が簡単な場合があります。
Pythonプログラムを含むフォルダーウィンドウを表示しているときに、Shiftキーを押しながら、ウィンドウの白い背景領域の任意の場所を右クリックします。ポップアップメニューには、「コマンドウィンドウをここに開く」というエントリが含まれている必要があります。(これはWindows VistaおよびWindows 7で機能すると思います。)これにより、次のようなコマンドプロンプトウィンドウが開きます。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Weeble\My Python Program>_
プログラムを実行するには、次のように入力します(スクリプト名に置き換えます)。
python myscript.py
... Enterキーを押します。(「python」が認識されないコマンドであるというエラーが発生した場合は、http://showmedo.com/videotutorials/video? name=960000&fromSeriesID=96を参照してください)プログラムが正常に完了するかどうかに関係なく、プログラムの実行が完了すると、ウィンドウは開いたままで、コマンドプロンプトが再び表示され、別のコマンドを入力できます。プログラムを再度実行する場合は、上向き矢印を押して前に入力したコマンドを呼び出し、Enterキーを押してもう一度実行することができます。毎回ファイル名を入力する必要はありません。
IDLEは、Pythonとともにインストールされるシンプルなプログラムエディターです。他の機能の中でも、ウィンドウでプログラムを実行できます。.py
ファイルを右クリックし、[ IDLEで編集] を選択します。プログラムがエディターに表示されたら、F5キーを押すか、[実行]メニューから[モジュールの実行]を選択します。プログラムは、プログラムの終了後も開いたままのウィンドウで実行されます。このウィンドウでは、Pythonコマンドを入力してすぐに実行できます。
pythonw -m idlelib.idle
Timmermanのソリューションはコードの実行Undefined name
時にうまく機能しますが、pyflakesまたは同様のリンターを使用しているときにエラーが発生したくない場合は、代わりに以下を使用できます。
try:
import __builtin__
input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
pass
Redefining built-in 'input' (redefined-builtin)
、Unable to import '__builtin__' (import-error)
、Invalid constant name "input" (invalid-name)
。
flake8
かpyflakes
無意味な警告がすべてのあなたの一日取らないように。
以下は、py2 / 3-agnostic環境で実行したくないスクリプトに追加したコードの一部です。
# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)
これで、real_raw_inputを使用できます。かなり高価ですが、短くて読みやすいです。生の入力を使用すると、通常は時間がかかる(入力を待つ)ため、重要ではありません。
理論的には、real_raw_inputの代わりにraw_inputを割り当てることもできますが、raw_inputの存在を確認し、それに応じて動作するモジュールが存在する場合があります。安全側に留まる方が良いでしょう。
おそらく最善の解決策ではありませんが、ここに来る前に、すぐに勉強を中断することなく作業を続けるためにこれをオンザフライで作成しました。
def raw_input(x):
input(x)
次に、raw_input('Enter your first name: ')
作業中のスクリプトを実行すると、スクリプトがキャプチャされinput()
ます。
私がまだ出会っていないので、これをしない理由があるかもしれません!
raw_input = input
ですか?