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