如何用Python创建网格系统并遍历输出所有区块组合?
搞定Python网格区块打印的小技巧
嘿,我来帮你解决这个网格打印的问题!你现在的思路是对的,但定义Columns和Rows的方式有点冗余,咱们可以简化代码,轻松实现你想要的输出格式。
优化后的解决方案
首先,咱们把列和行的定义简化一下——既然你需要的就是字母A到H,以及数字1到16,完全不用字典,直接用列表和range就能搞定:
# 定义列字母列表 columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] # 生成1到16的行号(range的结束值要+1,因为是左闭右开) rows = range(1, 17) # 遍历每一个行号,生成对应行的区块组合 for row_num in rows: # 用列表推导式生成当前行的所有区块(列字母+行号) current_row = [f"{col}{row_num}" for col in columns] # 把列表里的字符串用空格连接,然后打印 print(' '.join(current_row))
代码解释
- 简化定义:
columns直接存需要的字母,rows用range(1,17)自动生成1到16的整数,比手动写字典高效太多啦。 - 生成每行内容:用列表推导式快速生成一行里的所有区块(比如行号1时,得到
['A1', 'B1', ..., 'H1'])。 - 格式化打印:
' '.join(current_row)把列表里的元素用空格拼接成字符串,打印出来就是你想要的格式。
如果坚持要用原来的字典
要是你不想改之前的字典定义,也可以提取字典里的值来使用:
Columns = { "A": 'A', "B": 'B', "C": 'C', "D": 'D', "E": 'E', "F": 'F', "G": 'G', "H": 'H', } Rows = { "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "10": 10, "11": 11, "12": 12, "13": 13, "14": 14, "15": 15, "16": 16, } # 提取字典中的列和行值 columns = list(Columns.values()) rows = list(Rows.values()) # 后面的逻辑和之前一样 for row_num in rows: current_row = [f"{col}{row_num}" for col in columns] print(' '.join(current_row))
运行上面的代码,控制台就会输出你想要的网格区块组合啦!
内容的提问来源于stack exchange,提问作者Furpz
相关产品推荐
相关产品推荐

