You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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类结构和方法,确保功能兼容性

你原有修改的问题点:

  1. 未定义players_dict变量,原代码中存储玩家的容器是playersingame
  2. 第二个while循环没有编写内部添加玩家的逻辑,导致无法创建玩家
  3. 没有处理非数字输入的情况,用户输入字母时会直接报错

内容的提问来源于stack exchange,提问作者opp080

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:45:31