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 :(
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
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. –
'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 –