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

