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

Python实现宾果卡生成遇变量未定义问题求助

宾果卡生成程序问题修复方案

修正后的完整代码

import random

def get_valid_card_count():
    while True:
        try:
            count = int(input('Enter the number of Bingo cards to generate (1-10): '))
            if 1 <= count <= 10:
                return count
            else:
                print("请输入1到10之间的整数!")
        except ValueError:
            print("输入无效,请输入整数!")

def generate_bingo_columns():
    # 生成各列的排序后数字
    B = sorted(random.sample(range(1, 16), 5))
    I = sorted(random.sample(range(16, 31), 5))
    # N列只生成4个数字,第三个位置插入免费空格
    N = sorted(random.sample(range(31, 46), 4))
    N.insert(2, '---')
    G = sorted(random.sample(range(46, 61), 5))
    O = sorted(random.sample(range(61, 76), 5))
    return B, I, N, G, O

def print_bingo_card(B, I, N, G, O):
    # 打印列标题
    print(f"{'B':^5}{'I':^5}{'N':^5}{'G':^5}{'O':^5}")
    # 逐行打印每列对应位置的元素
    for row in range(5):
        print(f"{B[row]:^5}{I[row]:^5}{N[row]:^5}{G[row]:^5}{O[row]:^5}")
    print("-" * 25)  # 分隔不同卡片

def main():
    card_count = get_valid_card_count()
    for _ in range(card_count):
        cols = generate_bingo_columns()
        print_bingo_card(*cols)

if __name__ == "__main__":
    main()

核心问题修复说明

  • 变量作用域问题:原代码中generate_nums的B/I/N/G/O是局部变量,sort_nums无法访问。修改后让generate_bingo_columns返回这些列的列表,在main中接收后传递给打印函数,解决未定义错误。
  • 输入验证逻辑错误:原get_cardnums逻辑混乱,重写为get_valid_card_count,通过循环确保用户输入1-10的有效整数,同时处理非整数输入的异常。
  • 打印格式错误:原代码直接打印列表而非逐行元素,修改后遍历每一行索引,打印对应列的元素;N列插入---到第三个位置(索引2),实现免费空格效果。
  • 多张卡片生成:原代码仅生成一张卡片,在main中通过循环调用生成和打印函数,生成用户指定数量的卡片,用分隔线区分不同卡片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:55:29