628
import sys
print(sys.platform)
print(2**100)
raw_input()

Python 3.1 を使用していますがraw_input、dos ポップアップを「フリーズ」することができません。私が読んでいる本はPython 2.5用で、私はPython 3.1を使用しています

これを修正するにはどうすればよいですか?

4

9 に答える 9

1132

Python 3 以降、raw_input()に名前が変更されましたinput()

What's New In Python 3.0 の Builtins セクションの2 番目の項目から。

于 2009-06-05T08:35:38.023 に答える
125

これは Python 3.x および 2.x で機能します。

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
于 2011-09-06T14:59:18.150 に答える
16

他の人が指摘したように、raw_input関数はinputPython 3.0 で名前が変更されました。実際には、より最新の本の方が適していますが、スクリプトの出力を表示するより良い方法があることを指摘したいと思います。 .

あなたの説明から、あなたは Windows を使用していて、.pyファイルを保存してから、それをダブルクリックして実行していると思います。ポップアップする端末ウィンドウは、プログラムが終了するとすぐに閉じるため、プログラムの結果がどうなったかはわかりません。これを解決するために、あなたの本ではraw_input/inputステートメントを追加して、ユーザーが Enter キーを押すまで待機することを推奨しています。ただし、これまで見てきたように、プログラムのエラーなどで何か問題が発生した場合、そのステートメントは実行されず、何が問題なのかを確認できないままウィンドウが閉じます。コマンド プロンプトまたは 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 と共にインストールされる単純なプログラム エディターです。他の機能の中でも、ウィンドウ内でプログラムを実行できます。ファイルを右クリックし、[ .pyIDLE で編集] を選択します。プログラムがエディターに表示されたら、F5 キーを押すか、[実行] メニューから [モジュールの実行] を選択します。プログラムは、プログラムの終了後も開いたままのウィンドウで実行され、Python コマンドを入力してすぐに実行できます。

于 2012-02-23T11:05:27.277 に答える
8

Timmerman のソリューションは、コードを実行するときにうまく機能しますが、pyflakes または同様のリンターを使用するときにエラーが発生したくない場合はUndefined name、代わりに次を使用できます。

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass
于 2013-08-20T09:54:29.387 に答える
6

これは、py2/3 に依存しない環境で実行したくないスクリプトに挿入したコードの一部です。

# 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 の存在をチェックし、それに応じて動作するモジュールがあるかもしれません。安全側にとどまるほうがよいでしょう。

于 2014-09-22T11:02:21.813 に答える