我想打印出文本列,我正试图通过for循环来完成这项工作。我试过使用这个:
a = 0
while a<58:
for x in Char[a],Numb[a]:
print (x)
a+=2
但这会在不同的行上打印出两个值。有什么方法可以打印出来吗
A 1
B 2
C 3
D 4
E 5 ...etc
a = 0
while a<58:
print Char[a], Numb[a]
a+=2
或者,如果你愿意,你可以添加一些格式使其固定宽度:
a = 0
while a<58:
print '{0:3} {1}'.format(Char[a], Numb[a])
a+=2
也许更干净一点:
for a in xrange(0,58,2):
print '{0:3} {1}'.format(Char[a], Numb[a])
您可以使用enumerate
和for
循环:
>>> import string
>>> for i,j in enumerate(string.ascii_uppercase,1) :
... print j,'t',i #in python 3 print (j,'t',i)
...
A 1
B 2
C 3
D 4
E 5
F 6
G 7
H 8
I 9
J 10
K 11
L 12
M 13
N 14
O 15
P 16
Q 17
R 18
S 19
T 20
U 21
V 22
W 23
X 24
Y 25
Z 26
一些备注:
- 将while循环重写为for循环更好,并且不太可能得到无限循环
zip
- 拆包元组/列表很好(例如
a, b = (1, 2)
) - 看看Python中的字符串格式,尤其是columns部分。或者简单地使用
t
(制表符的ASCII符号)
作为代码,它看起来像这样:
import string
chars = string.ascii_uppercase
digits = string.digits
for a in range(0, min(len(chars), len(digits)), 2):
for char, digit in zip(chars[a], digits[a]):
print("{0:>3} {1:>3}".format(char, digit))
像{i:>n}
这样的格式选项意味着:
>
:右对齐(你不需要。你也可以不带<
i
:元组的第i个元素n
:共n列。这也是没有必要的
我通常会做这样的东西:
import string
chars = string.ascii_uppercase
digits = string.digits
headers = ["chars", "digits"]
sizes = [(len(el) + 2) for el in headers]
formatter = "{0:>" + str(sizes[0]) + "} {1:>" + str(sizes[1]) + "}"
print(formatter.format(*headers))
print("-"*(sum(sizes) + len(sizes)))
for a in range(0, min(len(chars), len(digits)), 2):
for char, digit in zip(chars[a], digits[a]):
print(formatter.format(char, digit))
它给出
chars digits
-----------------
A 0
C 2
E 4
G 6
I 8
假设您的两个列表具有如下数据,那么下面的代码将完成
# for python3
Char=['A', 'B', 'C', 'D', 'E'] # these lists can have as many elements as you want
Numb=[1,2,3,4,5]
for x,y in zip(Char, Numb): #zip stops when the shorter list ends
print (x +" "+ str(y) )
输出
sh-4.2# python3 main.py
A 1
B 2
C 3
D 4
E 5