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

Python宾果游戏代码仅生成1个面板,如何按玩家数生成对应数量面板?

问题根源

  • 外层循环变量和存储玩家总数的变量重名,导致玩家总数被覆盖:你最初将输入的玩家数量存入变量s,但外层循环直接用s作为迭代变量,第一次循环后s就会被赋值为1,原有的玩家总数丢失,循环只会执行1次。
  • 面板尺寸相关变量b、bb和内层循环变量重名,第一次生成面板后这两个变量的值会被迭代修改,第二次及之后的循环无法进入内层生成面板的逻辑。
  • 冗余&逻辑问题:import random语句放在内层循环中会重复执行,应移到代码开头;else分支的链式调用逻辑存在问题,可能导致打印/写入格式异常。

修复后代码

import random
# 补全文件写入对象初始化逻辑
t = open("宾果面板结果.txt", "w", encoding="utf-8")

player_count = int(input("请输入玩家数量: "))
board_size = int(input("请输入面板尺寸: "))
table_size = int(input("请输入乘法表大小: "))

# 外层循环生成对应数量的面板,使用独立迭代变量避免覆盖原始数值
for player_idx in range(1, player_count + 1):
    used_nums = ['0']
    t.write(f"{player_idx}. 面板 \n\n")
    print(f"{player_idx}. 面板 \n")
    # 每次生成面板都读取原始尺寸参数,避免变量被修改
    for row in range(1, board_size + 1):
        for col in range(1, board_size + 1):
            number = random.randint(1, table_size) * random.randint(1, table_size)
            # 生成不重复的面板数字
            while number in used_nums:
                number = random.randint(1, table_size) * random.randint(1, table_size)
            t.write(str(number))
            print(str(number), end=' ')
            # 补空格对齐格式
            if number <= 9:
                t.write("   ")
                print("   ", end='')
            elif number >= 100:
                t.write(" ")
                print(" ", end='')
            else:
                t.write("  ")
                print("  ", end='')
            used_nums.append(number)
        t.write("\n\n")
        print(" ")
    print(" ")

t.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:06:01