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”索要依赖于它接收的操作输入输入。但是似乎我无法使它工作:(
完全忘掉'global'关键字,它会创建错误的代码,请参阅[“为什么全局变量是邪恶的?”](http://stackoverflow.com/questions/19158339/why-are-global-variables-邪恶),尝试以工作流的形式绘制你的程序,数据从哪里来,你用它做了什么,它在哪里发生。 s的功能可以接收输入并返回输出,而不会触碰其他任何东西。 – spectras
如果你想调用一个函数''globalinputnum()'',你需要圆括号,因为你没有在这里调用函数,'num1'永远不会被定义,即使它是这样,函数也没有全局定义它。正因为如此,你的代码并不知道'num1'是什么。 –
'num1'在'if'块内定义。通过范围法律。 http://stackoverflow.com/questions/291978/short-description-of-scoping-rules –