在打印List时断开一行后保持Python间距

时间:2016-10-21 06:02:00

标签: python list python-3.x line spaces

(是的,我已经四处寻找解决方案,如果我看到它,我就无法解决我的问题。我是Python新手,对不起! )

我有工作要做,它告诉我: "用户将输入X和Y.显示从1到Y的序列,每行只有X个元素。"

e.g 2 4作为入口

1 2

3 4

例如2 6

1 2

3 4

5 6

好的......所以,我想这样做:

line, final = input().split()
line = int(line)
final = int(final)
List = []
i = 0
total = (final // line)
spot = 0
correction = 0
k = 1

if i != final:
List = list(range(1, final + 1, 1))
i += 1

while k != total:
spot = line * k + correction
correction += 1
k += 1
list.insert(List, spot, '\n')

print(*List)

确定。所以我设法将我的List从1构建到" final"变种。 还设法找到我的新线将被创建的点(因此,var" spot")。 (不得不使用校正变量和一些数学来达到它,但它是10/10)

到目前为止,这么好。 唯一的问题是这项工作应该在URI Online Judge上提供,并且我要求我的结果显示如下:

2 10作为入口

1 2

3 4

5 6

7 8

9 10

并且,使用我刚刚发布的代码,我得到了这个结果:

1 2

 3 4

 5 6

 7 8 

 9 10

因此,它说我的代码是错误的。我已经尝试过删除这些空间的所有内容(我认为)。使用sys不会起作用,因为它只打印一个参数。尝试使用join(但我可能做错了,因为我还是新的)

嗯,我已经尝试了很多东西。希望有人能帮助我。

提前致谢:)

4 个答案:

答案 0 :(得分:1)

您已经构建了一个包含每个必要字符的列表,包括换行符。因此,您有一个这样的列表:

[1, 2, '\n', 3, 4, '\n'...]

当您将参数解包为print()时,它会在每个参数之间放置一个分隔符,默认为空格。所以,它打印1,然后是空格,然后是2,然后是空格,然后是换行符,然后是空格......这就是为什么你在每行的开头都有一个空格。

不是将换行符插入列表,而是使用iternext列出的块:

>>> def chunks(x, y):
...     i = iter(range(1, y+1))
...     for row in range(y//x):
...             print(*(next(i) for _ in range(x)))
...     t = tuple(i)
...     if t:
...             print(*t)
...
>>> chunks(2, 6)
1 2
3 4
5 6
>>> chunks(2, 7)
1 2
3 4
5 6
7

答案 1 :(得分:0)

我将用户输入分成两个字符串然后将它们转换为int和comapre如果y大于x乘以2,因为这是绘制序列的最小值 然后我从1到y列出一个列表 并为每次迭代打印它们迭代2个元素

x,y=input().split()
if  int(y)>int(x)+2:
    s=range(1,int(y)+1)
    for i in range(0,len(s),2):
        print(' '.join(str(d) for d in s[i:i+2]))

结果:

1 2
3 4
5 6
7 8
9 10

答案 2 :(得分:0)

使用itertools从一个可迭代的块中取出:

>>> import itertools
>>> def print_stuff(x,y):
...   it = iter(range(1, y + 1))
...   chunk = list(itertools.islice(it,X))
...   while chunk:
...     print(*chunk)
...     chunk = list(itertools.islice(it,X))
... 
>>> print_stuff(2,4)
1 2
3 4
>>> 

在这里:

>>> print_stuff(2,10)
1 2
3 4
5 6
7 8
9 10
>>> 

答案 3 :(得分:0)

您正在使用的方法的问题是在系列中的每个"\n"字符后打印空格的结果。虽然这个想法非常聪明,但遗憾的是,我认为这意味着您必须采用不同的方法将换行符插入列表中。

尝试这种方法:(已编辑)

x, y = input().split()
x, y = int(x), int(y)

for i in range(1, y+1):
    if i % x == 0 or i == y:
        print(i)
    else:
        print(i, end=" ")

3 11

的输出
1 2 3
4 5 6
7 8 9
10 11

2 10

的输出
1 2
3 4
5 6
7 8
9 10