如何在嵌套宾果板列表中高亮显示随机生成的中奖号码?
宾果板中奖号码高亮实现方案
没问题,我来帮你搞定这个需求——只给宾果板里的中奖号码加上[]高亮,其他数字保持原样。下面是完整的可运行代码,以及详细的步骤说明:
import random # 原始宾果板嵌套列表 bingo_board = [ [" 1", " 2", " 3", " 4", " 5"], [" 6", " 7", " 8", " 9", "10"], ["11", "12", "13", "14", "15"], ["16", "17", "18", "19", "20"], ["21", "22", "23", "24", "25"] ] # 将嵌套宾果板转换为一维列表,方便抽取中奖号码 numbers = [n for row in bingo_board for n in row] # 随机选取10个不重复的中奖号码 winning_numbers = random.sample(numbers, 10) # 遍历宾果板,修改中奖号码的格式 highlighted_board = [] for row in bingo_board: highlighted_row = [] for num in row: if num in winning_numbers: # 给中奖号码加上[]包围 highlighted_row.append(f"[{num}]") else: highlighted_row.append(num) highlighted_board.append(highlighted_row) # 打印处理后的宾果板 for row in highlighted_board: print(" | ".join(row))
代码说明:
- 导入random模块:必须先导入才能使用
random.sample生成不重复的随机号码 - 一维列表转换:用列表推导式把嵌套的二维列表展开成一维,这样
random.sample可以直接从中抽取元素 - 中奖号码匹配:遍历每一行的每个数字,判断是否在中奖号码集合里(如果数据量更大,换成
set(winning_numbers)会提升匹配速度) - 格式修改与打印:把中奖号码用
[]包裹后,用join方法把每行元素用|分隔,打印出来的格式更贴近真实宾果板
举个随机生成的示例输出:
[ 1] | 2 | [ 3] | 4 | 5 6 | [ 7] | 8 | 9 | [10] 11 | 12 | [13] | 14 | 15 [16] | 17 | 18 | [19] | 20 21 | [22] | 23 | 24 | [25]
内容的提问来源于stack exchange,提问作者watchEm
相关产品推荐
相关产品推荐

