2014-10-17 6 views
-1

calc == off 일 때이 오류가 발생하는 이유는 무엇입니까? 프로그램은 내가 변경된 후에 끝나야합니다.파이썬. 이거 작동하지 않아야합니까? 오류는 "NameError : name 'off'가 정의되지 않았습니다."

데프 CALC는() :

i="i" 

while i=="i": 
    calc = input("Enter your calculation ") 

    if calc!="off" or "Off": 
     ans = eval(calc) 
     print(ans) 

    else: 
     i="a" 
+1

당신을 파이썬 2에서'raw_input()'을 사용하기로되어있다. –

+0

조건문 역시 다소 꺼져있다. –

+0

또는 파이썬 3을 사용하는 경우 eval call이 범인이 될 수 있습니다. –

답변

1

문제는 calc에 문자열을 보내고 eval 야한다는 것입니다. 존재하지 않는 "off"라는 로컬 변수를 찾고 있습니다. 우리가 나쁜 구문의 주제에있는 동안

이 작동하지 않습니다 :

if calc!="off" or "Off": 

당신이 대신 원하는 : 이상적으로

if calc not in ("off", "Off"): 

나 :

if calc.lower() != "off": 
+0

정말 감사했습니다. 그래서 호기심에서 "또는"무엇입니까? – user3548949

+0

downvoting 및 비판 해 주셔서 감사하지만 당신 자신의 대답에 같은 실수를 지적. – carmenism

+0

@vulpix - 논리 오류를 지적하는 것이 두 번째 관심사였습니다. 당신의 대답은 "나의 NameError를 생산하는 것은 무엇입니까?"라는 질문에 답하지 못했습니다. 당신의 대답이 질문에 답하지 않는다면 그것은 downvotes을받을 자격이 있습니다. –