问题与文本框

时间:2017-10-03 18:48:25

标签: python

我知道这已经被一次又一次地问到了;但是,我找不到任何使用我正在使用的代码设法使其工作的人。这个问题有几个解决方案 - 我知道。但我想知道为什么我的不起作用。我很确定我错过了一些盯着我的东西,但我现在面临的问题是盒子没有合并在文本周围;相反,它只是打印在一行上。我附上了截图:https://imgur.com/a/2KviR

这是我的代码:

echo

运行时结果:

def Boxmaker():                                                     # Creating a function
    text = 'Arlidio'                                                # Defining Variable Text
    borders = text.splitlines()                                     # Spliting up 'Arlidio' into seperate lines
    boxwid = max(len(s) for s in borders)                           # Calculates length of longest word in 'borders'
    boxitems = ['|' + '¯' * boxwid + '|']                           # For the length of longest word creates box top border
    boxitems.append('|' + '_' * boxwid + '|')                       # Adds bottom border to existing variable 'boxitems'
    print(text.join(boxitems))                                      # Prints fused text

2 个答案:

答案 0 :(得分:2)

你基本上有三个字符串,它们是:

"|¯¯¯¯¯¯¯|"  # top border
"Arlidio"    # text
"|_______|"  # bottom border

听起来你想要做的就是将这些按顺序组合在一起,将每一行分开。那将是这样的:

"\n".join([topborder, text, bottomborder])

请记住,str.join将对象视为参数的分隔符,例如",".join(["Hello", " World!"]) == "Hello, World!"。因此,您的代码将文本"Arlidio"分隔为顶部和底部边框,但不会将任何换行符放在任何位置。

答案 1 :(得分:1)

你需要使用new line,或者自动将所有内容打印在同一行,只是为了给你一个想法试试这个:

text = ' Arlidio'
borders = text.splitlines()
boxwid = max(len(s) for s in borders)
boxitems = ['|' + '¯' * boxwid + '|'+ '\n']
boxitems.append('\n|' + '_' * boxwid + '|')
print(text.join(boxitems)