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

Python使用PrettyTable生成宾果卡时遇TypeError问题求助

宾果卡生成代码中PrettyTable报错排查指引

我正在完成学校的作业,并非请求他人代做,只是想找出使用PrettyTable时的错误。

生成宾果卡的代码

import random
from prettytable import PrettyTable
x = PrettyTable
def generate_bingo_card():
    dict = {'B': [], 'I': [], 'N': [], 'G': [], 'O': []}
    counter = 0
    while True:
        if counter == 5:
            break
        else:
            randb = random.randint(1, 15)
            randi = random.randint(16, 30)
            randn = random.randint(31, 45)
            randg = random.randint(46, 60)
            rando = random.randint(61, 75)

            dict['B'].append(randb)
            dict['I'].append(randi)
            dict['N'].append(randn)
            dict['G'].append(randg)
            dict['O'].append(rando)
            counter += 1
    return dict

def print_bingo_card(card):
    x.add_column('B', [card['B']])
    x.add_column('I', [card['I']])
    x.add_column('N', [card['N']])
    x.add_column('G', [card['G']])
    x.add_column('O', [card['O']])

print(print_bingo_card(generate_bingo_card()))

运行报错信息

File "C:\Users\Joshu\OneDrive\Desktop\Python assignment 3\a3q6_bingo.py", line 26, in print_bingo_card
    x.add_column('B', [card['B']])
TypeError: PrettyTable.add_column() missing 1 required positional argument: 'column'

问题排查与修复方向

  • 未实例化PrettyTable对象:x = PrettyTable只是将类本身赋值给变量x,而非创建类的实例。add_column是实例方法,必须通过类的实例调用。修复:将该行改为x = PrettyTable()。
  • 列数据格式错误:card['B']本身就是包含5个元素的列表,额外套一层[]会导致每列仅含一个列表元素,不符合宾果卡每行一个数字的格式。修复:将x.add_column('B', [card['B']])改为x.add_column('B', card['B']),其余列同理修改。
  • 函数无返回值导致打印None:print_bingo_card函数未返回PrettyTable对象,最终print语句会输出None。修复:在函数末尾添加return x,或者直接在函数内执行print(x)。

额外优化建议:generate_bingo_card中随机数可能重复,可用random.sample生成不重复数字,比如dict['B'] = random.sample(range(1,16), 5),替代循环生成逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:01:07