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
相关产品推荐
相关产品推荐

