编写Guess Who?猜名字小游戏时代码功能无法正常运行求助
Guess Who? 猜名字游戏问题修复说明
问题原因定位
- 变量错误:首先是
nombreelegido=print(...)的错误赋值,print()的返回值为None,你相当于直接把存储用户猜测的变量赋值成了空值;其次接收用户输入的变量名拼写错误,写为了nobreelegido(缺失字母m),用户输入的内容根本没有存入正确的校验变量。 - 逻辑顺序错误:当前代码先接收用户输入,再随机生成目标名字,逻辑颠倒,就算变量正确也无法匹配校验。
- 函数未调用:仅完成了
validanombre校验函数的定义,没有编写主动调用的代码,函数不会自动执行,自然无法生效。 - 无限递归风险:校验函数末尾又调用了自身,没有设置终止条件,一旦调用就会进入无限循环,最终触发栈溢出报错。
修复方案
完整修复后代码
import random # 存储待猜测的演员名字列表 actores = ["Leonardo","Pedro","Marilyn","Tom","Brad","Angelina","Meryl"] # 先随机抽取目标名字 nombrerandom = random.choice(actores) # 展示提示信息、接收用户输入 print("Adivina quien es el actor que estoy pensando de los siguientes nombres:",actores) nombreelegido = input("Dame el nombre del actor:") # 公布正确答案 print("El nombre del actor era:",nombrerandom) def validanombre(nombreelegido,nombrerandom): if nombreelegido == nombrerandom : print("Su respuesta es correcta") else: print("Su respuesta es incorrecta") # 调用校验函数执行逻辑 validanombre(nombreelegido,nombrerandom)
核心修改点
- 调整执行顺序:把随机生成目标名字的逻辑移到用户输入之前,保证校验的逻辑合理性
- 修正变量错误:删除给
nombreelegido赋值print的错误代码,修正用户输入的变量名拼写 - 删除校验函数内的递归调用代码,避免无限循环
- 末尾添加校验函数的调用代码,触发校验逻辑
内容的提问来源于stack exchange,提问作者Jorge Vela Fernández
相关产品推荐
相关产品推荐

