如何修复UnboundLocalError错误?Python用户注册代码问题排查
修复UnboundLocalError及代码逻辑问题
先拆解你的代码里的问题,对应给出修复方案:
- 函数返回值无效:原
address()里写了两个return,第一个执行后函数直接结束,第二个永远跑不到。要返回姓名和地址两个值,用元组返回就行。 - 函数调用完全错误:
nextPerson()里喊的inputAddress()、inputName()根本没定义,你要调用的是自己写的地址输入函数(我后面改了名字避免冲突)。 - 缩进混乱:
nextPerson()的调用位置和else块缩进全错,整个流程逻辑要放在函数内部,缩进必须对齐。 - 没做循环逻辑:原需求是输入yes就继续注册,得用循环把输入和询问的流程包起来,不然只会执行一次。
- 变量名冲突:用
address当变量名和函数名重名,容易搞出错误,换个名字更稳妥。 - 输入大小写不兼容:只判断
"yes",用户输Yes、YES就不管用了,转成小写再判断更友好。
修复后的完整代码:
def get_address(): input_name = input("Enter Name: ") input_address = input("Enter address: ") # 返回姓名和地址两个值 return input_name, input_address def next_person(): while True: # 调用函数获取并解包姓名和地址 name, address = get_address() # 显示注册的信息 print(f"已注册:姓名 - {name},地址 - {address}") next_input = input("Next Person to register? type Yes or No: ").strip().lower() if next_input != "yes": # 输入不是yes就停止注册 break # 启动注册流程 next_person()
这段代码的逻辑:启动后先让用户输入姓名地址,显示注册信息,然后询问是否继续。只要输入yes(不管大小写)就重复流程,输入其他内容就退出。
内容的提问来源于stack exchange,提问作者JustAskin'
相关产品推荐
相关产品推荐

