Python 一次在多行上水平打印

Python print horizontally on multiple lines at once

string = "hello world"
for ch in string:
  print(f'''
        {ch}
        {ord(ch)}
        ''')
h   e   l   l   o        w   o   r   l   d
104 101 108 108 111  32  119 111 114 108 100 

实际输出:

h
104

e
101

... ... trimmed for brevity ... ...

l
108

d
100

一种方法是使用 list 推导式构建 ord 值,然后遍历 string 中的每个 char 和 ord 对,然后打印出每个字符填充到每个 ord 的字符串长度 - 即 102 的数值意味着填充宽度为 3.

string = "hello world"
ords = [ord(ch) for ch in string]

for ch, ord_ in zip(string, ords):
    len_ord = len(str(ord_))
    print(ch.ljust(len_ord), end=' ')

print()
print(*ords)

结果:

h   e   l   l   o      w   o   r   l   d   
104 101 108 108 111 32 119 111 114 108 100

如果您需要将其拆分成块,例如,如果您的字符串太长并且您需要它适合您的终端或 window,您可以使用提到的方法 here为了将字符串拆分成块,并且仍然保持上面相同的逻辑。

这是一个如何工作的例子。请注意,您需要根据终端 window.

的宽度调整 chunk_size
string = "hello world, how is it going there?"
ords = [ord(ch) for ch in string]

# TODO: can set this based on your terminal width
chunk_size = 10

for i in range(0, len(string), chunk_size):
    ords_chunk = ords[i:i + chunk_size]
    for ch, ord_ in zip(string[i:i + chunk_size], ords_chunk):
        len_ord = len(str(ord_))
        print(ch.ljust(len_ord), end=' ')
    print()
    print(*ords_chunk)

输出:

h   e   l   l   o      w   o   r   l   
104 101 108 108 111 32 119 111 114 108
d   ,     h   o   w      i   s      
100 44 32 104 111 119 32 105 115 32
i   t      g   o   i   n   g      t   
105 116 32 103 111 105 110 103 32 116
h   e   r   e   ?  
104 101 114 101 63