2013-05-08 4 views
0

이상한 오류가 발생했습니다. 나는 코드 기반 콘솔을 통해 텍스트 기반 게임을 실행하려고하는데, 코드는 IDLE에서 매우 잘 실행되지만 콘솔에서 실행하면 이름을 묻는 단계가 즉시 닫힙니다.Python 3.3 Console NameError

는 오류 코드는 " NameError: name 'JJ' is not defined

코드의 가정으로 실행 :

print ("*~~~~~~~~~~~~~~~~~~~~~*") 
print ("*|Welcome to the Game|*") 
print ("*~~~~~~~~~~~~~~~~~~~~~*") 
print ("") 
time.sleep(1) 
User_name = input ("What is your Name? ") 
time.sleep(1) 
print ("Welcome",User_name," enter irrelevant story information here") 
print("more irrelevant story here.") 
print ("more irrelevant story here") 
print ("") 
time.sleep (1) 

내가 파이썬 3.3를 실행 해요 여러 번 확인하고 콘솔 말한다"C : \ Python33 \ py.exe 그래서 나는 그것이 또한 일치한다고 생각합니다.

그리고 예, 분명히 오류가 아닌 시간 라이브러리를 가져 왔습니다.

많은 도움을 주셔서 감사합니다.

편집 : 혼란을 정리하기 : 여기에 무슨 일이 일어나고 있는지 보여주는 사진에 대한 링크입니다 : http://imgur.com/a/0nh11#0

는 첫 번째 사진은 오류가 표시가, 두 번째 사진은 코드를 보여줍니다 세 번째 사진에서 실행되는 프로그램을 보여줍니다 IDLE 오류없이.

+0

, 나를 위해 잘 작동합니다. – Juampi

+0

'input'을'raw_input'으로 바꾸어 보았습니까? 당신이 파이썬 2를 3 대신에 실행하는 것처럼 보이기 때문에. – Cairnarvon

+0

@Cairnarvon, 나는 당신이 그것을 찍은 것 같아요. 파이썬 2.x에서 프로그램을 실행하고 이름에 "JJ"를 입력 한 다음 위에서 설명한 정확한 오류가 발생했습니다. 나는 내 대답의 끝에 제안을 추가하고있다. – steveha

답변

1

대부분의 경우 콘솔에서 IDLE 및 Python 2에서 Python 3을 실행하고있을 가능성이 큽니다. 콘솔에서 매개 변수없이 python을 실행하고 사인 온 텍스트를보십시오. 너는 py.exe을 언급했다. py.exe은 단일 시스템에서 여러 버전의 Python을 실행하는 것을 관리하는 실행 프로그램입니다. 또한

#!python3 

, 3

단서가에 input이다 파이썬의 사용을 강제로 py.exe -3을 실행하여 원하는 파이썬의 버전을 실행하고 보장하기 위해, 스크립트의 첫 번째 행으로 다음을 추가 파이썬 2는 입력을 코드로 실행하므로 JJ을 입력하면 나타나는 오류가 발생합니다. raw_input하지 않습니다. raw_input 파이썬 3에서 사용할 수 없습니다, 파이썬에서 input 파이썬에서 raw_input 추천 작품 2

예 :만큼 나는 시간 모듈을 가져올 때

C:\>py -2 
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> raw_input('?') 
?JJ 
'JJ' 
>>> input('?') 
?JJ 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 1, in <module> 
NameError: name 'JJ' is not defined 
>>> ^Z 

C:\>py -3 
Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:57:17) [MSC v.1600 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> raw_input() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'raw_input' is not defined 
>>> input() 
JJ 
'JJ' 
>>> 
+0

그게 전부였습니다. 내 지름길이 파이썬 3.3인지 확인하기 위해 3.3이 아닌 다른 것을 어떻게 실행했는지는 잘 모르겠지만 #! python3을 사용하여 멋지게 해결했습니다. 고맙습니다! – Slice18

+0

'py.exe'는 Python 3.3 디렉토리에 있더라도 Python 3.3 인터프리터가 아닙니다 (기본적으로 거기에 설치되어 있지 않으므로 그곳에 왜 있는지는 모르겠습니다). 'python.exe'는 파이썬 인터프리터입니다. 'py.exe'는 스크립트 시작 부분에있는'#!'주석을 검사하여 실행할 Python 버전을 선택할 수있는 (Python 3.3에서 처음 사용 가능한) 시작 프로그램입니다. [Python Launcher for Windows] (http://docs.python.org/3/using/windows.html?highlight=launcher#python-launcher-for-windows)를 참조하십시오. –

+0

그 디렉토리가 똑같은 디렉토리에 설치되지 않은 것은 이상한 일입니다. 주식 설치에서 아무것도 변경하지 않았습니다. 당신의 해결책으로 문제가 해결되었지만 나는 그것에 너무 신경 쓰지 않습니다. 다시 한번 고마워. – Slice18

0

내가 볼 수있는 한 충분히 괜찮아 보입니다. 그리고, 나는 그것을 달렸다. 그리고 그것은 나에게 잘 움직이게했다. 그래서, 당신이 여기서 우리에게 보여준 코드를 정확하게 실행하지 못하고있는 것 같습니다. 어쩌면 더 많은 코드가 있거나 어쩌면 당신이 그것을 실행하려고했을 때 실수를했을 수도 있습니다.

프로그램을 콘솔에 붙여 넣는 것이 아니라 소스 파일에 넣는 것이 좋습니다. 그런 다음 오류가 발생하면 스택 백 트레이스는 Python에 문제가있는 프로그램의 정확한 지점을 표시합니다.

그런 다음 문제를 일으킨 원인을 파악하고 해결하십시오.

예를 들어, 제공 한 프로그램의 정확한 텍스트로 소스 파일을 만들고 실행하려고했습니다. 내가 time을 수입 한 적이 없기 때문에 나는 실패 할 것이라는 것을 알았다.

Traceback (most recent call last): 
    File "test.py", line 5, in <module> 
    time.sleep(1) 
NameError: name 'time' is not defined 

이 하나의 해결책 라인 5.

편집하기 전에 라인에 import time이다 : 나는 @Cairnarvon가 정답을 제안했다 생각 여기에 내가 가진 백 트레이스이다. 나는이 프로그램이 Python 2.x에서 실행되고 있다고 생각한다. @Cairnarvon은 수표로 raw_input()을 사용하도록 프로그램을 변경할 것을 제안했습니다. Python 2.x에서 실제로 실행중인 경우 프로그램이 갑자기 작동하고 Python 3.x에서 실행중인 경우 이 raw_input 줄에 표시됩니다.

는이 코드를 추가하는 것입니다 확인하는 또 다른 방법 :

import sys 
assert sys.version_info[0] >= 3 

이 검사에 대한 좋은 것은 당신이 그것을에서 떠날 수 있으며, 문제가 다시 발생하는 경우이 문제를 명확하게 말할 것입니다 .

편집 :,

다음
import sys 
print(sys.version) 

당신이 3로 시작하는 버전 번호를받을 수 있나요 경우 3.로 시작하는 버전 번호를 출력 확인하십시오 : 또한, 당신은 당신의 프로그램의 상단에이를 추가 할 수 있습니다 질문에 붙여 넣으십시오. 누군가가 버전 정보에 단서를 발견 할 수 있습니다.

+0

여기에 오해가 있다고 생각합니다. 코드는 아무런 문제없이 유휴 상태로 실행됩니다. 하지만 저장된 파일의 아이콘을 클릭하면이 오류가 발생합니다. http://imgur.com/izsys7h 여기 현재 코드의 화면 캡처가 있습니다. http : //imgur.com/GzZME 오, 시간을 가져 왔습니다. 코드가 IDLE에서 실행될 때마다 문제가되지 않습니다. 시도 할 때마다 콘솔 창에서 실행되지 않았습니다. 고마워요. – Slice18