python 一旦我有一个参数询问它们的名字,我如何在每个函数中寻址它们而不再次询问?

nwnhqdif  于 2023-09-29  发布在  Python
关注(0)|答案(1)|浏览(96)

我正在用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循环吗?

7kqas0il

7kqas0il1#

首先让我们整理一些术语。变量不是{name},而是name。变量有作用域。请参阅Edo Akse的链接以了解更多有关范围的信息。
作用域的一个简短总结是,除非变量在全局作用域中声明,并且在写入之前在函数中标记为global,否则变量仅限于在引入它的函数中存在。
这给了你两个选择
1.你可以返回用户名并将其作为函数的参数传递给每个函数(通常首选)
1.你可以把用户名设置为全局的(在这种情况下这不是最糟糕的)
目前,其他函数都不知道变量name,因为它是一个局部变量。然而,这也必须是一个原始函数的名称,这就是为什么打印输出是说它是什么。例如,如果你将name改为user_name,我打赌你会得到一个更清楚的错误消息,没有这样的变量/它是未定义的。
参见Python global variable/scope confusion

相关问题