我正在尝试打印以下内容:
-----------------------------
| | |
| | P |
| | Y |
| | T |
| PYTHON! | H |
| | O |
| | N |
| | ! |
| | |
-----------------------------
| | |
| | |
| | |
| | |
|PYTHON! | PYTHON!|
| | |
| | |
| | |
| | |
-----------------------------
这是我所拥有的:
rowBorder = '-' * 29
col = '|'
space = ' '
emptyColRow4 = (col + space * 13 + col + space * 13 + col + "\n") * 4
text = 'PYTHON!'
emptyRow = col+space*13+col+space*13+col
print(rowBorder)
print(emptyRow)
for l in text:
if l != 'H':
verticalLetter = '{}{}{}'.format(col + space*13 + col + space*6,l,space*6+col)
else:
verticalLetter = '{}{:^13}{}{}{}'.format(col,text, col + space*6,l,space*6+col)
print(verticalLetter)
print(emptyRow)
print(rowBorder)
print(emptyColRow4,end='')
print('{}{:<13}{}{:>13}{}'.format(col,text,col,text,col))
print(emptyColRow4,end='')
print(rowBorder)
这可以简化吗?具体来说,有什么方法可以将 for 循环直接嵌入到 print 语句中吗?
Python 支持格式字符串的概念。 如下所示的格式字符串允许您 将数据存储到字符串中,就像它一样 文字。这不需要回答您的问题 问题但它很好。列表理解 我将如何换行加入 你的循环变成一行。这是我的意见 这在一行中做了太多但是 这是一种可以做到的方法。
print('\n'.join([f'{col}{text if l == "H" else space:^13}{col}{space*6}{l}{space*6+col}' for l in text]))