You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将用户输入存储为Python全局变量?

嘿,很高兴看到你通过开发文字冒险游戏学Python——这真的是超棒的实践方式!

先解答你的核心疑问:你的问题出在变量作用域上——你在playerName()函数里定义的name是局部变量,函数执行完后这个变量就会被销毁,所以其他函数根本找不到它。

你想的用全局变量是一个可行的解决办法,但其实还有更适合新手、也更符合Python编程习惯的方式,我给你两种方案:


方案1:让函数返回姓名(推荐)

这种方法不需要全局变量,而是让playerName()函数把用户输入的姓名“交出来”,然后你把它存在一个全局的变量里,其他函数需要用的时候直接用这个变量,或者把它作为参数传给函数。

修改后的代码示例:

def playerName():
    name = input("Before we begin, what is your name, warrior? ")
    print("\n")
    print("Welcome {}, now be on your way!".format(name))
    print("\n")
    return name  # 关键:把输入的姓名返回出去

# 调用函数,把返回的姓名存在一个变量里
player_name = playerName()

# 举个其他函数用这个姓名的例子
def check_inventory():
    print(f"{player_name}, your inventory is empty. Maybe go loot some chests!")

# 测试一下
check_inventory()

如果你想更规范一点,还可以把姓名作为参数传给其他函数:

def check_inventory(name):
    print(f"{name}, your inventory is empty. Maybe go loot some chests!")

# 调用时传入姓名变量
check_inventory(player_name)

方案2:使用全局变量

如果你确实想用全局变量,也很简单:先在函数外面定义一个全局的name变量,然后在playerName()函数里用global关键字声明你要修改的是这个全局变量,而不是创建一个新的局部变量。

代码示例:

# 先在全局作用域定义变量
name = ""

def playerName():
    global name  # 声明:下面的name是全局的那个name
    name = input("Before we begin, what is your name, warrior? ")
    print("\n")
    print("Welcome {}, now be on your way!".format(name))
    print("\n")

# 调用函数,此时全局的name已经被赋值
playerName()

# 其他函数里直接用全局的name
def encounter_monster():
    print(f"Oh no! A monster jumps out at {name}!")

encounter_monster()

最后纠正一下你的小误解:print("string" + name)这个写法本身是对的,但前提是name在当前函数的作用域里能被找到。之前你出错是因为name只在playerName()里是局部变量,其他函数看不到它。

慢慢来,搞懂变量作用域是Python入门的关键一步,你现在通过做游戏来实践,进步肯定会很快的!

内容的提问来源于stack exchange,提问作者Cl4rify

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:09:39