Python 对多个字符串变量应用相同的格式
我正在编写菜单。选项1、2和3将填充Python 对多个字符串变量应用相同的格式,python,python-3.x,Python,Python 3.x,我正在编写菜单。选项1、2和3将填充项目。选项4、5和6取决于项目的值。如果project==None,我想删除选项4、5和6 project = None menuOptions = {0 : 'Option4', 1 : 'Option5', 2 : 'Option6'} print(""" Choose: ━━━━━━━━━━━━ Text ━━━━━━━━━━━━ 1 : Option1 2 : Option2 3 : Option3 ━━━━━━━
项目
。选项4、5和6取决于项目的值。如果project==None
,我想删除选项4、5和6
project = None
menuOptions = {0 : 'Option4', 1 : 'Option5', 2 : 'Option6'}
print("""
Choose:
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
1 : Option1
2 : Option2
3 : Option3
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
4 : {0}
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
5 : {1}
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
6 : {2}
0 : Exit""".format('\u0336'.join(menuOptions[0]) + '\u0336' if project == None else menuOptions[0],
'\u0336'.join(menuOptions[1]) + '\u0336' if project == None else menuOptions[1],
'\u0336'.join(menuOptions[2]) + '\u0336' if project == None else menuOptions[2]))
上面的代码工作得很好,但我想知道是否有一种方法可以根据这个想法减少必要的代码:
format(
for opt in menuOptions:
'\u0336'.join(menuOptions[opt]) + '\u0336' if project == None else menuOptions[opt]
)
目标是能够将新元素添加到菜单选项中,在菜单中显示它们并应用相同的格式,而无需对其进行“硬编码”。因此,不确定这是否是您想要的,但您可以通过这样做稍微减少“硬编码”:
# list comprehension to get format options
# (you can use a loop here instead for more readability if needed)
x = ['\u0336'.join(menuOptions[opt]) + '\u0336' if project == None else menuOptions[opt] for opt in menuOptions]
print("""
Choose:
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
1 : Option1
2 : Option2
3 : Option3
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
4 : {0}
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
5 : {1}
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
6 : {2}
0 : Exit""".format(*x))
*
操作员为您解压列表。因此不确定这是否是您想要的,但您可以通过执行以下操作稍微减少“硬记录”:
# list comprehension to get format options
# (you can use a loop here instead for more readability if needed)
x = ['\u0336'.join(menuOptions[opt]) + '\u0336' if project == None else menuOptions[opt] for opt in menuOptions]
print("""
Choose:
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
1 : Option1
2 : Option2
3 : Option3
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
4 : {0}
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
5 : {1}
━━━━━━━━━━━━ Text ━━━━━━━━━━━━
6 : {2}
0 : Exit""".format(*x))
*
操作员为您解压列表。您可以在此处使用星号理解:
"""...""".format(*('\u0336'.join(opt) + '\u0336' if project is None else opt
for opt in menuOptions))
您可以在此处使用星号理解:
"""...""".format(*('\u0336'.join(opt) + '\u0336' if project is None else opt
for opt in menuOptions))
工作正常,只需更改.join(opt)
和.join(menuOptions[opt])
。谢谢,我不知道参数解包。工作正常,只需将.join(opt)
更改为.join(menuOptions[opt])
。谢谢,我不知道拆包的事。