我目前正在为rpg的基于文本的charectersheet工作,到目前为止,它的表现相当不错。问题是,虽然我的东西运作良好,但我也希望它看起来不错,或者至少比纯文本好一点。
除此之外,我想出了将菜单放在"盒子中的想法,因此很容易将它们与已打印的所有其他stuf区分开来。像这样:
¤===========================¤
|Do you understand? |
|1. Yes |
|2. No |
|3. Your question is stupid |
¤===========================¤
到目前为止我制定菜单的方式是这样的:
print("please pick an option:\n"
"1. option 1\n"
"2. option 2\n")
choice = input()
if choice == "1":
print("Option 1")
elif choice == "2":
print("Option 2")
要创建这个功能,我必须知道菜单中最长的行有多长,所以我可以使盒子的大小正确。我知道还有其他方法可以做到这一点(比如手动操作),但这样我真的会学到新的东西,而且对我来说会更容易。
TL; DR: 有没有办法在单个打印语句中找到每组\ n之间的字符数?
答案 0 :(得分:1)
如果您使用的字体所有字符都相同(并且没有更宽的特殊字符,例如★),并且菜单中的所有元素(行)都是列表中的字符串(我会调用它现在是menuitems),您可以执行以下操作:
maximum_length = max({len(s) for s in menuitems})
(如果列表中有可变元素,则用大括号[]替换大括号{}
我不太清楚你对这个问题的意思:“有没有办法在单个打印语句中找到每组\ n之间的字符数?”但如果你的意思是字符串每一行中的字符数(我现在称之为字符串mystring):
mystring_linelengths = [len(line) for line in mystring.splitlines()]
for i in mystring_linelengths:
print(i)
我希望这会有所帮助。