Python数字猜谜游戏开发求助:新手按需求实现遇问题
数字猜谜游戏代码优化求助
我是编程新手,正在修第一门编程课。课程项目要求实现一个数字猜谜游戏,需满足以下要求:
- 包含类(class)、函数(function)
- 使用字典或列表
- 用到for循环和while循环
- 猜测范围是0-10之间的数字
- 最多2次猜测机会
我尝试写了代码,但可能有不符合要求或者需要改进的地方,恳请各位帮忙指正:
import random class Player: player = "" playerscore = 0 def gamestart(self): self.number = random.randint(0,7) self.guesss = 0 self.list = [] self.limit = 3 print() print("Guess what number I'm thinking off") print() print("Might even give you a hit if you do well enough") print() while self.limit > 0: self.player_guess = int(input("Well? What are you waiting for? Start guessing:")) print() if self.player_guess > 7 or self.player_guess < 0: print("Wow that was a terrible guess, think harder or we might be here all week long") print("also,", self.player_guess , "is not in the range...") print("Becareful though, you only have", self.limit, "guesss left") elif self.player_guess > self.number: self.guesss += 1 self.limit-= 1 print("WRONG") print(self.player, "You only have", self.limit, "guesss left") self.list.append(self.player_guess) elif self.player_guess < self.number: self.guesss += 1 self.limit -= 1 print("oh oh... wrong again!") print() print(self.player, "You only have", self.limit, "guesss left.") self.list.append(self.player_guess) else: self.limit -= 1 self.playerscore += 1 self.list.append(self.player_guess) print() print("wow, you actually got it right") print() print(self.player_guess, "IS THE CORRECT ANSWER!") print() print("you only had",self.limit,"left too...") print("Lets see all the numbers you guessed") print() for i in self.list: print(i) self.list.clear()
问题与优化建议
1. 匹配项目核心要求
- 猜测范围需从0-7改为0-10(对应代码:
random.randint(0,10)) - 猜测次数上限从3次改为2次(对应代码:
self.limit = 2)
2. 类属性初始化修正
当前直接在类内定义的player和playerscore是类属性,会被所有玩家实例共享。需改成实例属性,保证每个玩家数据独立:
def __init__(self, player_name): self.player = player_name self.playerscore = 0
3. 无效猜测的逻辑处理
目前输入超出范围时不消耗次数,可根据需求调整:
- 若要让无效输入消耗次数,在范围判断分支里添加
self.limit -=1 - 若不消耗,保持现有逻辑即可,但建议明确提示用户
4. 细节修正
- 拼写错误:
guesss改为guesses,hit改为hint - 列表命名优化:
self.list改为self.guess_history,提升可读性
5. 补充循环结束反馈
玩家用完所有次数未猜对时,需添加正确答案提示和历史猜测展示,避免流程突兀
优化后的完整代码
import random class Player: def __init__(self, player_name): self.player = player_name self.playerscore = 0 def show_remaining_guesses(self, remaining): print(f"{self.player}, 你还剩 {remaining} 次猜测机会") def gamestart(self): # 符合项目要求:0-10的猜测范围 self.number = random.randint(0, 10) self.guesses = 0 # 存储猜测记录的列表 self.guess_history = [] # 最多2次猜测机会 self.limit = 2 print("\n猜猜我心里想的数字是多少") print("如果表现不错,我可能会给你提示哦\n") while self.limit > 0: try: self.player_guess = int(input("别等了,开始猜吧:")) print() except ValueError: print("请输入有效的整数!") continue # 检查输入是否在合法范围内 if self.player_guess > 10 or self.player_guess < 0: print("这猜测太离谱了,好好想想范围!") print(f"{self.player_guess} 不在0-10的范围内...") self.show_remaining_guesses(self.limit) print() continue # 记录本次猜测 self.guess_history.append(self.player_guess) self.guesses += 1 self.limit -= 1 if self.player_guess > self.number: print("错啦!猜大了") self.show_remaining_guesses(self.limit) elif self.player_guess < self.number: print("错啦!猜小了") self.show_remaining_guesses(self.limit) else: self.playerscore += 1 print("\n哇,你居然猜对了!") print(f"{self.player_guess} 就是正确答案!") print(f"你还剩 {self.limit} 次机会没用呢...") print("看看你猜过的所有数字:") for guess in self.guess_history: print(guess) return # 用完所有次数未猜对的情况 print("\n你用完了所有猜测机会!") print(f"正确答案是 {self.number}") print("你猜过的数字有:") for guess in self.guess_history: print(guess) self.guess_history.clear() # 示例运行 if __name__ == "__main__": player1 = Player("小明") player1.gamestart()
内容的提问来源于stack exchange,提问作者Konnan
相关产品推荐
相关产品推荐

