数独游戏开发:如何紧凑使用列表格式化字符串(无需逐个索引)
数独网格格式化的紧凑实现方案
直接解决方法
你不需要逐个列出索引,只需要把列表解包为格式化操作符所需的参数即可。Python的字符串%操作符接受元组作为参数,因此可以直接将列表转为元组,或者用*语法解包列表元素:
修改后的代码:
values =[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "9", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",] template = """ %s %s %s | %s %s %s | %s %s %s %s %s %s | %s %s %s | %s %s %s %s %s %s | %s %s %s | %s %s %s -------- -------- -------- %s %s %s | %s %s %s | %s %s %s %s %s %s | %s %s %s | %s %s %s %s %s %s | %s %s %s | %s %s %s -------- -------- -------- %s %s %s | %s %s %s | %s %s %s %s %s %s | %s %s %s | %s %s %s %s %s %s | %s %s %s | %s %s %s """ # 两种写法二选一 outGrid = template % tuple(values) # Python3.5及以上版本支持的简化写法 outGrid = template % (*values,)
进阶:动态生成模板(可选)
如果不想手动编写81个%s,可以动态生成模板字符串,进一步简化代码:
# 生成单行的格式模板:三组各3个%s,用|分隔 row_template = " ".join(["%s"]*3) + " | " + " ".join(["%s"]*3) + " | " + " ".join(["%s"]*3) # 拼接完整的数独网格模板:3行+分隔线+3行+分隔线+3行 full_template = "\n".join([row_template]*3) + "\n-------- -------- --------\n" + \ "\n".join([row_template]*3) + "\n-------- -------- --------\n" + \ "\n".join([row_template]*3) outGrid = full_template % tuple(values)
这种写法既避免了逐个索引的繁琐,也不用手动输入大量重复的%s,代码可读性和维护性更强。
内容的提问来源于stack exchange,提问作者Ethan2001
相关产品推荐
相关产品推荐

