如何使用另一个函数中设置的变量
问题描述:
def set_values():
cycle_num = input("Cycle Amount: ")
probability = input("Probability: ")
main_menu()
return cycle_num, probability
def display_values(cycle_num, probability):
print(cycle_num)
print(probability)
def main_menu():
user_choice = input("Choose option 1 or 2")
if user_choice == "1":
set_values()
else:
display_values(cycle_num, probability)
if __name__ == main_menu():
main_menu()
我很努力地使用另一个函数中设置的变量。我必须指出我是python的新手。我怎么能做这个工作。提前致谢。如何使用另一个函数中设置的变量
答
有没有一些错误:
- 应该
if __name__=='__main__'
- 你让一个递归在
set_values
- 正如在评论中提到调用
main_menu()
当你set_values
返回两个值,但不使用他们 - 你将不得不使用
global
关键字来得到这个工作,这在很多时候是一个坏主意 - 也许你需要退出程序以适当方式(如选择“3”)
尝试是这样的:
def set_values():
cycle_num = input("Cycle Amount: ")
probability = input("Probability: ")
return cycle_num, probability
def display_values(cycle_num, probability):
print("Cycle Amount: ", cycle_num)
print("Probability: ", probability)
def main_menu():
cycle_num=0
probability=0
while True:
user_choice = input("Choose option 1, 2 or 3")
if user_choice == "1":
cycle_num, probability=set_values()
elif user_choice == "2":
display_values(cycle_num, probability)
else:
break
if __name__ == '__main__':
main_menu()
答
您遇到的scope概念的问题。当您调用函数时,您将分配两个变量并将它们返回到它们从中调用的原始函数。这部分是正确的。
你遇到问题的地方在于你的main_menu()
函数没有对这些值做任何事情。既然你不存储它们,它们就会消失。一个简单的解决方案是:
def set_values():
cycle_num = input("Cycle Amount: ")
probability = input("Probability: ")
return cycle_num, probability
def display_values(cycle_num, probability):
print(cycle_num)
print(probability)
def main_menu():
while True:
user_choice = input("Choose option 1 or 2 (ctrl-c exits): ")
if user_choice == "1":
cycle_num, probability = set_values()
elif user_choice == "2":
display_values(cycle_num, probability)
if __name__ == '__main__':
main_menu()
想想你可能想了解变量作用域。 http://stackoverflow.com/questions/291978/short-description-of-python-scoping-rules - 不会伤害阅读有关返回变量。 –
您正在调用set_values(),它返回两个值,但不存储这些值。他们被丢弃。我第二@ ChristopherSchneider的建议是你做一些阅读。 –
感谢您的评论 - 我花了一些时间以前查找过类似的问题,但似乎无法让我们在我的实际代码中工作(比我提供的例子复杂得多) – Matt