我写了另一个简单的程序,我将其称为基本的“Python计算器”。到目前为止,我发现我在Python 3.3.2中编写的一些代码存在问题。这是下面的代码,所以你可以在我陈述我的问题之前阅读它......
def startup_screen():
user_input_1 = int(input("Please enter your first number.\n"))
user_input_2 = int(input("Now please enter your second number.\n"))
command_list()
def command_list():
user_command = input("Now what would you like to do with these two numbers?\n").lower()
if user_command == "add":
calc_add()
elif user_command == "subtract":
calc_subtract()
elif user_command == "multiply":
calc_multiply()
elif user_command == "divide":
calc_divide
else:
print("Please try again.")
user_command
def calc_add():
add_result = (user_input_1+user_input_2)
print(add_result)
command_list()
def calc_subtract():
subtract_result = (user_input_1-user_input_2)
print(subtract_result)
command_list()
def calc_multiply():
multiply_result = (user_input_1*user_input_2)
print(multiply_result)
command_list()
def calc_divide():
divide_result = (user_input_1/user_input_2)
print(divide_result)
command_list()
startup_screen()
在这里,您可以看到我已定义startup_screen
,它将用户输入收集为整数,然后分别将其存储在user_1
和user_2
中。然后,用户被带到命令主屏幕,在那里他们可以选择对两个数字进行加,减,乘或除。然后根据用户输入确定该命令,因此如果用户想要添加两个数字,他们键入“add”并将它们带到add函数 - 如上所定义。
但是,在添加功能中,无法识别user_1和user_2输入,以及其他程序......因此会导致程序中出错。我不知道该怎么做。你能帮我吗?
非常感谢...
答案 0 :(得分:0)
将输入作为参数提供给后面的函数,如果它们是在函数中定义的,则值不是全局变量(任何函数都不能立即访问)。
def loadscreen():
...
command_home(user_input_1,user_input_2)
def command_home(user_input_1,user_input_2):
...
calc_add(user_input_1,user_input_2)
def calc_add(user_input_1,user_input_2)
add_result = (user_input_1 + user_input_2)
print(add_result)
答案 1 :(得分:0)
让我们从def calc_add():
函数的角度来看你的程序。
在第一行,
add_result = (user_input_1 + user_input_2)
你说,取user_input_1
的值将其添加到user_input_2
并将其转换为变量add_result
。好的,这是有道理的。
现在让我们得到第一个值user_input_1
...让我们看看,首先要检查的是'本地范围'。这就是我目前所处的职能。
def calc_add():
add_result = (user_input_1 + user_input_2)
print(add_result)
好吧不,没有...好吧也许这是输入参数之一?
def calc_add():
没有输入参数传递给此函数。好吧它必须是全球性的...但是等待废话......没有全球参数会被剥夺!尤其不是user_input_1
。好吧,我应该添加两个参数,但其中一个参数不存在!多数民众赞成不可能我最好抛出错误!
也许如果程序员通过了我需要的信息,它会更好, 也许是这样的:
def load_screen():
user_1 = int(input("Please enter your first number.\n"))
user_2 = int(input("Now please enter your second number.\n"))
command_home( user_1, user_2) # Okay command_home I took 2 inputs!
# Here they are work your magic!
def command_home(in1, in2): # Hey I need 2 varaibles to work, Ill call them in1 and in2.
# so based on the way command_home( user_1, user_2) is called
# in1 = user_1, in2 = user_2
command = input("Now what would you like to do with these two numbers?\n").lower()
if command == "add":
calc_add(in1, in2) #Okay, now i need to add my two inputs,
# but calc_add is another function it wont be able to see MY
# in1, in2 ... i better pass them over as parameters.
elif command == "subtract":
calc_subtract()
elif command == "multiply":
calc_multiply()
elif command == "divide":
calc_divide()
def calc_add(user_input_1,user_input_2 ): # Okay now i know where to look for user_input_1
# and user_input_2, they will be passed to me
# when someone calls me! Now i can find my varables
# and i wont throw an error!
add_result = (user_input_1 + user_input_2)
print(add_result)
答案 2 :(得分:0)
您没有将用户的输入传递给后来依赖它的函数,例如calc_add()。
解决这个问题的方法是修改你的代码:
def startup_screen():
user_1 = int(input("Please enter your first number.\n"))
user_2 = int(input("Now please enter your second number.\n"))
command_home(user_1,user_2)
def command_home(u1,u2):
command = input("Now what would you like to do with these two numbers?\n").lower()
if command == "add":
calc_add(u1,u2)
elif command == "subtract":
calc_subtract(u1,u2)
elif command == "multiply":
calc_multiply(u1,u2)
elif command == "divide":
calc_divide(u1,u2)
def calc_add(user_input_1,user_input_2):
add_result = (user_input_1 + user_input_2)
print(add_result)
"""the rest of the functions go here, must be defined to take the inputs passed"""
startup_screen()
我们重新定义了command_home以将两个对象作为输入(应该是来自user_1
的{{1}}和user_2
)。你可以打电话给他们,但我打电话给他们load_screen
和u1
,所以我不必打那么多。现在,u2
具有这些值,并且可以将它们传递给它所需要的函数。我们还更改了command_home
/ if
块中的所有函数调用,以便将elif
和u1
传递给这些函数。
然后,我们已经重新定义u2
以获取两个输入,并且我将它们调用为与函数内部相同的内容,因此我需要更少一行来更改 - calc_add
和{{ 1}}。
现在,当您要求将它们一起添加到user_input_1
时,它们存在且具有预期值,因此现在一切正常。