2016-11-16 1 views
0
def globalinputnum(): 
global all_list 
global choice 
if choice in itertools.chain(subtraction, addition): 
    num1 = int(input("ENTER FIRST NUMBER")) 
    num2 = int(input("ENTER SECOND NUMBER")) 
elif choice in itertools.chain(multiplication, division): 
    if choice in multiplication: 
     num1 = int(input("ENTER MULTIPLIER NUMBER")) 
     num2 = int(input("ENTER MULTIPLICAND NUMBER")) 
    else: 
     num1 = int(input("ENTER DIVIDEND NUMBER")) 
     num2 = int(input("ENTER DIVIDOR NUMBER")) 
elif choice in itertools.chain(square,root): 
    num3 = int(input("ENTER A NUMBER")) 



"""Dictionaries""" 
#Warning:Extremely messy! 
division = ["Division","Divide","/","div"] 
multiplication = ["*","x","times","multiply","multiplication","multiple"] 
subtraction = ["-",'minus','subtract','subtraction'] 
addition = ['+','plus','addition','add'] 
root = ['root','squareroot','square root'] 
square = ['square','squared','power 2'] 
basic_double = [division,multiplication,subtraction,addition] 
basic_single = [root,square] 
basic_specific = [division, multiplication] 
all_list = [division,multiplication,subtraction,addition,root,square] 


#Code 
while repeat_option in repeat: 
choice = input("Input type of operation!(+,-,*,/,^2,^1/2)") 
globalinputnum 
if choice in addition: 
    print(num1,"+",num2,"=",(num1+num2)) 
elif choice in subtraction: 
    print(num1,"-",num2,"=",(num1-num2)) 
elif choice in division: 
    num1 = int(input("ENTER DIVIDEND NUMBER")) 
    num2 = int(input("ENTER DIVIDOR NUMBER")) 
    print(num1,"/",num2,"=",(num1/num2)) 
elif choice in multiplication: 
    num1 = int(input("ENTER MULTIPLIER NUMBER")) 
    num2 = int(input("ENTER MULTIPLICAND NUMBER")) 
    print(num1,"*",num2,"=",(num1*num2)) 
elif choice in square: 
    print(num3,"^2","=",(num3**2)) 
elif choice in root: 
    print(num3,"^(1/2)","=",(num3**(1/2))) 
else: 
    print("something went wrong!", math.pi) 
repeat_option = input("Do you want to perform another calcualtion?(Y/N)") 

나는 점점 오전 오류가 뭔가를 만들려고 해요이 작업을 수행 할 수있는 방법이 있습니까?

--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
<ipython-input-11-4abd45f9246e> in <module>() 
61  globalinputnum 
62  if choice in addition: 
---> 63   print(num1,"+",num2,"=",(num1+num2)) 
64  elif choice in subtraction: 
65   print(num1,"-",num2,"=",(num1-num2)) 

NameError: name 'num1' is not defined 

입니다 여기에 기본 계산기 사용하여 정의 된 "globalinputnum"는에서 수신 동작에 따라 입력을 요청합니다 입력. 그러나 내가 당신의 코드에서 :(

+1

'global' 키워드를 완전히 잊어 버리면 잘못된 코드가 생성됩니다. [ "왜 전역 변수가 나쁜가?"] (http://stackoverflow.com/questions/19158339/why-are-global-variables- 악의적 인 것) 워크 플로우의 형태로 프로그램을 그려보십시오. 데이터가 어디에서 왔는지, 어디서 무엇을하는지, 어디로 가는지 등을 분석하십시오. 입력을 받아 들여 출력을 반환하고 아무것도 터치하지 않는 함수에서. – spectras

+0

'globalinputnum()'함수를 호출하고자 할 때 괄호가 필요합니다. 여기에서 함수를 호출하지 않기 때문에'num1'이 정의되지 않았고, 함수가 전역 적으로 정의되지 않았기 때문에 괄호가 필요합니다. 이 때문에, 여러분의 코드는'num1'이 무엇인지 알지 못합니다. –

+0

'num1'은 'if'블록 내에 정의되어 있습니다. 이를위한 범위 법을 살펴보십시오. http://stackoverflow.com/questions/291978/short-description-of-scoping-rules –

답변

-1

를 작동하게 할 수없는 오전 보인다. 당신은 실제로 당신이 이름 뒤에 괄호를해야하는 경우 전화, globalinputnum 호출되지 않은

#Code 
while repeat_option in repeat: 
choice = input("Input type of operation!(+,-,*,/,^2,^1/2)") 
globalinputnum 
if choice in addition: 
    print(num1,"+",num2,"=",(num1+num2)) 

#Code 
while repeat_option in repeat: 
choice = input("Input type of operation!(+,-,*,/,^2,^1/2)") 
globalinputnum() 
if choice in addition: 
    print(num1,"+",num2,"=",(num1+num2)) 
관련 문제