[python] Python 3에서 raw_input을 사용하는 방법

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

Python 3.1을 사용하고 있으며 raw_inputdos 팝업을 “고정”시킬 수 없습니다 . 내가 읽고있는 책은 Python 2.5 용이며 Python 3.1을 사용하고 있습니다.

이 문제를 해결하려면 어떻게해야합니까?



답변

Python 3부터 raw_input()로 이름이 변경되었습니다 input().

에서 의 새로운에서 파이썬 3.0, 내장 매크로 섹션 번째 항목.


답변

이것은 Python 3.x 및 2.x에서 작동합니다.

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


답변

이를 해결하는 신뢰할 수있는 방법은

from six.moves import input

6 개 는 2/3 개의 공통 코드 기반 문제점을 패치하는 모듈입니다.


답변

다른 사람들이 지적했듯이, raw_input함수는 inputPython 3.0에서 이름이 바뀌 었으며 최신 책을 통해 더 잘 제공 될 것이지만 스크립트의 출력을 볼 수있는 더 좋은 방법이 있다는 것을 지적하고 싶습니다 .

귀하의 설명에서, 귀하는 Windows를 사용하고 있다고 생각하고 .py파일을 저장 한 다음 파일을 두 번 클릭하여 실행합니다. 프로그램이 종료 되 자마자 팝업되는 터미널 창이 닫히므로 프로그램 결과를 확인할 수 없습니다. 이 문제를 해결하려면 사용자가 enter를 누를 때까지 raw_input/ input문을 추가하는 것이 좋습니다 . 그러나 앞에서 본 것처럼 프로그램의 오류와 같은 문제가 발생하면 해당 명령문이 실행되지 않고 무엇이 잘못되었는지 확인할 수 없으면 창이 닫힙니다. 명령 프롬프트 또는 IDLE을 사용하는 것이 더 쉬울 수 있습니다.

명령 프롬프트 사용

Python 프로그램이 포함 된 폴더 창을 볼 때 Shift 키를 누른 상태에서 창의 흰색 배경 영역을 마우스 오른쪽 단추로 클릭하십시오. 팝업되는 메뉴에는 “Open command window here”항목이 포함되어 있어야합니다. (이것은 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를 누르거나 “Run”메뉴에서 “Run module”을 선택하십시오. 프로그램은 프로그램 종료 후 열린 상태로 실행되며 Python 명령을 입력하여 즉시 실행할 수 있습니다.


답변

Timmerman의 솔루션은 코드를 실행할 때 훌륭하게 작동하지만 Undefined namepyflakes 또는 유사한 린터를 사용할 때 오류가 발생 하지 않으려면 다음을 대신 사용할 수 있습니다.

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


답변

다음은 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의 존재를 확인하고 그에 따라 동작하는 모듈이있을 수 있습니다. 안전한 곳에 머무르는 것이 좋습니다.


답변

아마도 가장 좋은 해결책은 아니지만 여기에 오기 전에 연구를 중단하지 않고 작업을 계속하기 위해 즉시 작업했습니다.

def raw_input(x):
  input(x)

그런 다음 raw_input('Enter your first name: ')작업중 인 스크립트를 실행할 때 처럼 스크립트를 캡처합니다 input().

내가 아직 오지 않았기 때문에 이것을하지 않는 이유가있을 수 있습니다!