Python名字生成器输入suggest后后续问题未显示所选用户名问题排查
问题原因
你代码中后续问题的判断逻辑存在错误:
if name: dollarQuestion = input("Question for " + name + " would you like $1,000,000 or $0.01 every single day for thirty days?\n") elif nameSuggest: dollarQuestion = input("Question for " + nameSuggest + "would you like $1,000,000 or $0.01 every single day for thirty days?\n")
当用户输入suggest触发推荐功能时,name变量存储的值就是suggest,if name:的判断逻辑为只要变量不为空就成立,因此程序永远会走第一个分支,用name变量的值拼接问题,不会走到读取nameSuggest的分支,这就是用户名显示错误的核心原因。
同时代码还存在两处潜在问题:
start()函数内定义了和函数同名的全局变量start,后续如果需要调用start()函数会触发类型错误- 如果用户不触发
suggest分支,代码中nameSuggest变量未提前声明,后续访问会抛出未定义异常
修复方案
1. 修正用户名判断逻辑
将二选一问题前的判断逻辑替换为以下代码:
cls() # 优先判断是否走了推荐分支 if name == "suggest": display_name = nameSuggest else: display_name = name dollarQuestion = input(f"Question for {display_name} would you like $1,000,000 or $0.01 every single day for thirty days?\n")
2. 修复变量和函数重名问题
修改start()函数内的全局变量名,避免和函数名冲突:
def start(): # 将原来的global start改为其他名称 global start_input start_input = input("your name is " + name + " || thank you, you can now begin your game! \n press any key to continue:")
3. 可选:提前声明变量避免异常
在name = input("What would you like your name to be?...")代码前增加一行变量声明,避免分支未覆盖导致的变量未定义错误:
nameSuggest = ""
可选优化
你可以顺带修复代码中的拼写错误:
- 将
print("here are some of my syggestions: \n")中的syggestions改为suggestions - 将所有
recived改为received
内容的提问来源于stack exchange,提问作者khaled motasem
相关产品推荐
相关产品推荐

