2016-11-16 9 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)") 

der Fehler Ich erhalte istGibt es einen Weg, wie ich das schaffen kann?

--------------------------------------------------------------------------- 
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 

Ich versuche, etwas, das ein Grund Rechner hier zu schaffen, mit der definierte „globalinputnum“ für eine Eingabe über den Betrieb in Abhängigkeit fragen sie in der erhält Eingang. Allerdings scheint es, dass ich nicht in der Lage bin, um es :(

+1

Vergessen Sie das Schlüsselwort 'global' komplett. Es erzeugt schlechten Code. Siehe [" Warum sind globale Variablen böse? "] (Http://stackoverflow.com/questions/19158339/why-are-global-variables- (evil) Versuchen Sie, Ihr Programm in Form eines Workflows zu zeichnen: Wo Daten herkommen, was Sie damit machen, wohin es geht s in Funktionen, die Eingaben annehmen und Ausgaben zurückgeben und nichts anderes berühren. – spectras

+0

Sie benötigen Klammern, wenn Sie eine Funktion aufrufen wollen: 'globalinputnum()' weil Sie die Funktion hier nicht aufrufen, 'num1' ist niemals definiert, und selbst wenn dies der Fall ist, definiert die Funktion sie nicht global. Aus diesem Grund weiß Ihr Code nicht, was "num1" ist. –

+0

'num1' ist in einem 'if'-Block definiert. Gehen Sie dafür die Scope-Gesetze durch. http://stackoverflow.com/questions/291978/short-description-of-scoping-rules –

Antwort

-1

In Ihrem Code funktioniert.

#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)) 

Sie haben nicht wirklich globalinputnum genannt, nennen, wenn Sie Pars nach dem Namen haben müssen

#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)) 
Verwandte Themen