我正在用Python编写一个包含多个函数的简单游戏。我有一个参数,要求用户输入他们的名字。我希望能够解决用户的名字,在每个功能,而不是要求他们的名字了。
我在每个函数中使用了一个f字符串,并使用了变量{name}
,我希望用户名会显示在文本中,但我得到的是<built_in_function_input>
,而不是用户名。下面是greet()
函数,其中询问名称:
def greet():
name = input("what is you name?")
print(f"hi there {name}")
answer = input("do you want to play a stupid game")
if answer == "yes":
print("ok, lets play!")
select_showroom()
if answer == "no":
print("well your not missing anything!")
exit()
然后,如上所述,我在每个函数中使用包含变量{name}
的f字符串来通过用户名寻址用户:
def select_showroom():
name = input
print(f"""{name} your in the lobby of the design building, three showrooms are open today.
which one would you like to enter, 1, 2 or 3?""")
choice = input("< ")
if choice == "1":
showroom1()
elif choice == "2":
showroom2()
elif choice == "3":
showroom3()
else:
print("try again")
我会使用while循环吗?
1条答案
按热度按时间7kqas0il1#
首先让我们整理一些术语。变量不是
{name}
,而是name
。变量有作用域。请参阅Edo Akse的链接以了解更多有关范围的信息。作用域的一个简短总结是,除非变量在全局作用域中声明,并且在写入之前在函数中标记为
global
,否则变量仅限于在引入它的函数中存在。这给了你两个选择
1.你可以返回用户名并将其作为函数的参数传递给每个函数(通常首选)
1.你可以把用户名设置为全局的(在这种情况下这不是最糟糕的)
目前,其他函数都不知道变量
name
,因为它是一个局部变量。然而,这也必须是一个原始函数的名称,这就是为什么打印输出是说它是什么。例如,如果你将name
改为user_name
,我打赌你会得到一个更清楚的错误消息,没有这样的变量/它是未定义的。参见Python global variable/scope confusion