简化 Python 中的 .format 打印

问题描述 投票:0回答:1

我正在尝试打印以下内容:

-----------------------------
|             |             |
|             |      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-3.x for-loop printing format
1个回答
0
投票

Python 支持格式字符串的概念。 如下所示的格式字符串允许您 将数据存储到字符串中,就像它一样 文字。这不需要回答您的问题 问题但它很好。列表理解 我将如何换行加入 你的循环变成一行。这是我的意见 这在一行中做了太多但是 这是一种可以做到的方法。

print('\n'.join([f'{col}{text if l == "H" else space:^13}{col}{space*6}{l}{space*6+col}' for l in text]))
© www.soinside.com 2019 - 2024. All rights reserved.