如何在Python游戏中限制玩家数量为2至5人?
解决玩家数量限制(2-5人)的问题
你原来的修改存在两个核心问题:一是引用了未定义的players_dict变量,二是第二个while循环缺少完整的逻辑实现。以下是修正后的完整代码,完全满足你的需求:
from dataclasses import dataclass @dataclass class Player: firstname: str lastname: str coins: int slot: int def full_info(self) -> str: return f"{self.firstname} {self.lastname} {self.coins} {self.slot}" @classmethod def from_user_input(cls) -> 'Player': return cls( firstname=input("Please enter your first name:"), lastname=input("Please enter your last name: "), coins=100, slot=0) # 获取合法的玩家数量,限制在2-5之间 max_players = 0 while True: try: max_players = int(input("Please choose a number of players between 2 and 5: ")) if 2 <= max_players <=5: break print("Please choose a number between 2 and 5.") except ValueError: print("Invalid input! Please enter an integer.") # 创建对应数量的玩家 playersingame = [] for i in range(max_players): print(f"\n--- Player {i+1} Details ---") playersingame.append(Player.from_user_input()) # 输出所有玩家信息 print("\nAll Players in Game:") print([player.full_info() for player in playersingame])
关键修正说明:
- 变量名修正:用原代码中已定义的
playersingame列表替代了你错误使用的players_dict - 完善输入逻辑:增加了非数字输入的异常处理,避免程序崩溃;当输入不在2-5范围内时,重复提示直到输入合法
- 补充循环逻辑:用for循环直接创建对应数量的玩家,比while循环更简洁直观,同时增加了玩家编号提示,提升用户输入体验
- 保留原有功能:完全保留了你原有的Player类结构和方法,确保功能兼容性
你原有修改的问题点:
- 未定义
players_dict变量,原代码中存储玩家的容器是playersingame - 第二个while循环没有编写内部添加玩家的逻辑,导致无法创建玩家
- 没有处理非数字输入的情况,用户输入字母时会直接报错
内容的提问来源于stack exchange,提问作者opp080
相关产品推荐
相关产品推荐

