是否可以在同一个打印语句中查找和比较多行的长度?

时间:2016-07-09 16:41:39

标签: python-3.x

我目前正在为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之间的字符数?

1 个答案:

答案 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)

我希望这会有所帮助。