我需要一些非常基本的Python 3.3帮助。我正在尝试使用for循环更好地理解格式化,我想简单地在两列中打印1-20中的奇数。
这是我尝试过的:
for col1 in range(1,10,2):
for col2 in range(11,20,2):
print(col1,'\t',col2)
出于某种原因,我的输出非常奇怪。左列有1-10的奇数,但每个数字在进入下一个数字之前列出五次
1 11
1 13
1 15
1 17
1 19
3 11
3 13
3 15
3 17
3 19
etc..
我想要的是:
1 11
3 13
5 15
7 17
9 19
答案 0 :(得分:4)
您应该使用zip
:
for i,j in zip(range(1,10,2), range(11,20,2)):
print('{}\t{}'.format(i,j))
[OUTPUT]
1 11
3 13
5 15
7 17
9 19
当您使用嵌套循环时,问题是您要在第一列中打印每个编号的第二列,这不是您想要的。相反,您希望同时迭代它们。这就是zip
派上用场的地方。
答案 1 :(得分:1)
这里不需要第二个for循环或zip
。相反,你需要的只是:
>>> for n in range(1, 10, 2):
... print(n, '\t', n + 10)
...
1 11
3 13
5 15
7 17
9 19
>>>
这是有效的,因为第二列中的数字只是第一列加上10中的数字。