web-dev-qa-db-ja.com

Python 3でraw_inputを使うにはどうすればいいですか?

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

私はPython 3.1を使用していますが、dosポップアップを "フリーズ"させるためのraw_inputを取得できません。私が読んでいる本はPython 2.5用で、私はPython 3.1を使っています

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

467
Lonnie Price

raw_input()input()に改名されました

http://docs.python.org/dev/py3k/whatsnew/3.0.html から

873
balpha

これはPython 3.xと2.xで動作します。

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
105
Cees Timmerman

これに対処するための信頼できる方法は

from six.moves import input

six は、2/3の共通コードベースの問題点の多くにパッチを当てるモジュールです。

38
tacaswell

Python 3.xxではinput()ではなくraw_input()が必要です

16
Efs

他の人が指摘したように、Python 3.0ではraw_input関数はinputに改名されました、そしてあなたは本当により最新の本によってよりよく役立たれるでしょうが、私はの出力を見るためのより良い方法があることを指摘したいですあなたのスクリプト.

あなたの説明から、私はあなたが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を使う

IDLEはPythonと共にインストールされる簡単なプログラムエディタです。他の機能の中でも、ウィンドウ内でプログラムを実行できます。 .pyファイルを右クリックして、[IDLEで編集]を選択します。プログラムがエディタに表示されたら、F5キーを押すか、[実行]メニューから[モジュールの実行]を選択します。あなたのプログラムはあなたのプログラムが終了した後も開いたままになっているウィンドウで実行されるでしょう、そしてそこであなたはすぐに実行するためにPythonコマンドを入力することができます。

13
Weeble

Timmermanの解決方法はコードを実行するときにはうまくいきますが、pyflakesや同様のリンターを使用しているときにUndefined nameエラーが発生したくない場合は、代わりに次の方法を使用できます。

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass
7
jmagnusson

これは私が自分のスクリプトに書いたコードの一部で、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の存在をチェックしてそれに応じて動作するモジュールがあるかもしれません。それは安全側にとどまることです。

5
ChewbaccaKL

おそらく最善の解決策ではありませんが、私がここに来る前に、私はただ研究から中断することなく仕事を続けるためにその場でこれを作った。

def raw_input(x):
  input(x)

それから私が作業していたスクリプトでraw_input('Enter your first name: ')を実行すると、input()と同じようにそれをキャプチャします。

これをしない理由があるかもしれません、私はまだ出くわしていないということです!

1
Danijel-James W

raw_input()関数はPython 3.xから削除されました。入力python2がinput()とraw_input()の2つの関数を持っていたため

あなたが入力パラメータを取るために3.xで2.xの同じ機能を持ちたいならば、このwikiリンクに従ってください https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output

0
Rahul Anand