2016-10-18 3 views
1

두 개의 다른 숫자로 작동하는 기본 계산기를 쓰고 있습니다. 지금까지는 작동하는 프로토 타입을 만들었지 만 그것을 나누고 실수하는 동안 여러 가지 문제가 발생하여 을 별도로 게시하고 있습니다.파이썬 계산기를 잠그는 것


사용자가 적합한 운영자를 제공하지 않을 경우 프로그램에서 질문을 반복하기를 원합니다.

def optn_query(): 
    print("Hulk can different things with number!") 
    print("YOU!") 
    optn = input("What Hulk do with number?! ") 
    return optn 

내가 입력이 정확한지 결정하기 위해 if 문을 사용하십니까 : 그건 내가 지금 가지고있는 코드입니까? (정상적으로 hulk_math라고 함) 다음 함수가 중간에 실패하지 않을 것이다, 그래서


또한 내가 거기에 OPTN를 돌려주는 듯했지만 여전히 수행합니다

Traceback (most recent call last): 
    File "hulc.py", line 57, in <module> 
    main() 
    File "hulc.py", line 13, in main 
    hulk_math() 
    File "hulc.py", line 41, in hulk_math 
    if optn == "+": 
NameError: name 'optn' is not defined 

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

def hulk_math(): 
    optn = optn_query() 
    #The rest of your code 

또한, num1num2하지 않는 코드에 다른 곳에서 정의되어 그들이에 있도록 : 당신은 실제로 당신의 함수를 호출 할 필요가

def hulk_math(): 
    if optn == "+": 
     result = num1 + num2 
     print("Hulk ADDS!!! Hulk thinks it's {0}!".format(result)) 
    elif optn == "-": 
     result = num1 - num2 
     print("Hulk SUBTRACTS!!! Hulk thinks it's {0}!".format(result)) 
    elif optn == "*": 
     result = num1 * num2 
     print("Hulk MULTIPLIES!!! Hulk thinks it's {0}!".format(result)) 
    elif optn == "/": 
     result = num1/num2 
     print("Hulk DIVIDES!!! Hulk thinks it's {0}!".format(result)) 
    main() 
+0

프로그램을 작성하기 전에 기본 사항을 배우고 이해하고 싶다면 'optn'이 올 것이라고 생각 했습니까? 또한 while 루프를 유용하게 사용할 수 있으며 리턴은 sys.exit이 필요없는 함수를 끝낼 수 있습니다. –

답변

1

:

여기 hulk_math() 그 자체입니다 범위가 hulk_math이라면 프로그램도 거기에서 실패 할 것입니다.

+0

그것들은 존재하며, 게다가 optn과 같은 방식으로 정의됩니다. –

+0

main()에서 optn_query() 함수를 호출합니다. hulk_math()에서이 함수를 호출하면 코드의 다른 다른 함수를 반복 호출합니다. 사실 그것은 정말로 이상합니다. –

+1

왜'main'도 게시하지 않으시겠습니까? 이상한 설정처럼 들립니다. 'optn'가'main'에 값을 가지고 있다면, 명시 적으로하지 않으면 그 값은'hulk_math'에 전달되지 않는다는 것을 명심하십시오. 'hulk_math'는 아마도'def hulk_math (num1, optn, num2)'와 같아야합니다. –

0

자, return optn 대신에 global optn으로 작성하여 수정했습니다. 그렇게하면 변수가 전역 변수가되므로 다른 함수에서도 변수를 사용할 수 있습니다.

0

global을 사용하는 것은 올바른 방법이 아닙니다. 반환 값을 저장하고 인수로 전달하여 한 함수에서 다른 함수로 값을 전달합니다.

def main(): 
    intro() 
    num1 = num1_query() 
    optn = optn_query() 
    num2 = num2_query() 
    hulk_math(num1, optn, num2) 

def hulk_math(num1, optn, num2): 
    #Your original code will work as expected 
관련 문제