Python 如何使用通过函数获得的用户输入来更改全局变量?

Python 如何使用通过函数获得的用户输入来更改全局变量?,python,python-3.x,function,global-variables,mud,Python,Python 3.x,Function,Global Variables,Mud,我有一个全局变量,需要通过函数生成的用户输入进行修改 我正在尝试制作一个Zork风格的文本游戏,并希望用户在角色创建函数过程中输入角色名,以更改全局变量 我已经能够创建一个类来存储字符信息,并且能够在用户可用输入选项时出现的模拟命令提示符上显示类中的大部分信息 我使用全局变量定义角色的名称,直到角色创建阶段。我在创建()函数中使用“global”关键字,用用户输入更改变量 当提示准备好使用时,它仍然只将名称显示为00,而不是在创建()过程中生成的输入 我是个新手。任何建议、提示或指导都将受到珍视

我有一个全局变量,需要通过函数生成的用户输入进行修改

我正在尝试制作一个Zork风格的文本游戏,并希望用户在角色创建
函数
过程中输入角色名,以更改全局变量

我已经能够创建一个
来存储字符信息,并且能够在用户可用
输入
选项时出现的模拟命令提示符上显示
中的大部分信息

我使用
全局变量
定义角色的名称,直到角色创建阶段。我在
创建()
函数
中使用“
global
”关键字,用用户
输入更改变量

当提示准备好使用时,它仍然只将名称显示为
00
,而不是在
创建()过程中生成的
输入

我是个新手。任何建议、提示或指导都将受到珍视

导入时间
name=“00”##这就是我们想要改变的
##
def Intro():
打印(“\n\n\n欢迎参加游戏。”)
时间。睡眠(1)
打印(“这是一个试图制作基于文本的交互式游戏的尝试。”)
##
定义创建():
Character\u name=input(“\n您的角色名是:”)
时间。睡眠(1)
打印(“\n欢迎参加游戏”+角色名称+“\n”)
时间。睡眠(1.5)
Character\u class=input(“一个词中,name”+Character\u name+”的职业:)
t00n=字符名称+字符类
全局名称##这里我使用全局关键字
name=t00n
时间。睡眠(1)
打印(“\n”+t00n+“\n”)
时间。睡眠(2)
next\u func=input(“准备就绪时键入“next”开始。\n>>>:”)
如果next_func==“next”:
塞格威()
其他:
跳转()
##
def Jump():
Jump\u Prompt=input(“只需在中“跳转”:”)
如果跳转提示==“跳转”:
segway1()
其他:
跳转()
##
def segway():
打印(“可供选择的房间”)
提示符()
类别字符:
定义初始值(自身、名称、HP、全HP、AtS、AR):
self.name=name##现在应该=t00n吗?
self.hp=hp
self.full\u HP=full\u HP
self.AtS=AtS
self.AR=AR
def状态栏(自身):
返回“{}{}{}{}{}”。格式(“[Name:]”,self.Name,“[HP:]”,self.HP,“[Max HP:]”,self.full_HP)
Player1=字符(名称,100100,1,0)
##
def提示符():
_pr=输入(“>\n”)
返回
#开始
简介()
创建()
塞格威()
##即使creation()函数使用“global”关键字将“name”变量更改为用户输入,prompt()函数仍将名称显示为00。

啊,花了一点时间,但我想我找到了问题所在

在调用
Creation()
之前,使用name变量初始化Player1,在这里更改全局name变量,因此Player1将使用原始名称“00”创建

移动该行:

Player1=字符(名称,100,100,1,0)

将其放在底部的
Creation()
之后,但放在
segway()之前

Python或多或少地从上到下执行任何未插入的代码(不在函数、类等中的代码)


因此,在程序中从上到下移动,它将名称设置为“00”,然后使用原始名称创建Player1,然后调用
Intro()
Creation()
(将名称更改为t00n),最后是
segway()
啊,花了一点时间,但我想我发现了问题

在调用
Creation()
之前,使用name变量初始化Player1,在这里更改全局name变量,因此Player1将使用原始名称“00”创建

移动该行:

Player1=字符(名称,100,100,1,0)

将其放在底部的
Creation()
之后,但放在
segway()之前

Python或多或少地从上到下执行任何未插入的代码(不在函数、类等中的代码)


因此,在程序中从上到下移动,它会将名称设置为“00”,然后使用原始名称创建Player1,然后调用
Intro()
Creation()
(将名称更改为t00n),最后调用
segway()
,您需要在
提示符中使用全局关键字,并使用该全局名称更新
Player1.name

def prompt():

    #Take name from global scope
    global name

    #Assign it to Player1 name
    Player1.name = name

    _pr = input("<<< " + Character.stat_bar(Player1) + " >>> \n")
    return _pr
def提示符():
#从全局范围获取名称
全局名称
#将其分配给Player1 name
Player1.name=名称
_pr=输入(“>\n”)
返回
例如,您的提示将按预期工作

Welcome to the game.
This is an attempt to make an interactive text based game.

What will your Character's name be: Joe

Welcome to the game Joe 

In one word, name Joe's profession: Don

Joe the Don

When ready type 'next' to begin.
>>>:next
A room with options to choose from
<<< [Name:] Joe the Don [HP:] 100 [Max HP:] 100 >>> 
欢迎来到游戏。
这是一个基于文本的交互式游戏。
你的角色叫什么名字:乔
欢迎来到游戏乔
一句话,乔的职业是:唐
老头子乔
准备好后,键入“下一步”开始。
>>>:下一个
可供选择的房间
> 

您需要在
提示符中使用global关键字,并使用该全局名称更新
Player1.name

def prompt():

    #Take name from global scope
    global name

    #Assign it to Player1 name
    Player1.name = name

    _pr = input("<<< " + Character.stat_bar(Player1) + " >>> \n")
    return _pr
def提示符():
#从全局范围获取名称
全局名称
#将其分配给Player1 name
Player1.name=名称
_pr=输入(“>\n”)
返回
例如,您的提示将按预期工作

Welcome to the game.
This is an attempt to make an interactive text based game.

What will your Character's name be: Joe

Welcome to the game Joe 

In one word, name Joe's profession: Don

Joe the Don

When ready type 'next' to begin.
>>>:next
A room with options to choose from
<<< [Name:] Joe the Don [HP:] 100 [Max HP:] 100 >>> 
欢迎来到游戏。
这是一个基于文本的交互式游戏。
你的角色叫什么名字:乔
欢迎来到游戏乔
一句话,乔的职业是:唐
老头子乔
准备好后,键入“下一步”开始。
>>>:下一个
可供选择的房间
> 

我不确定我是否明白。如果我移动
Player1=字符(name,100100,1,0)
则会出现一个name错误:name'Player1'未定义。我可以看看代码的外观吗