打印Lis时防止Python断线后出现间距

2024-05-13 23:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

(是的,我到处寻找解决方案,如果我看到了,我就无法与我的问题联系起来。我是Python新手,抱歉!)你知道吗

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

例如 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)

好的。所以我设法建立了从1到“最终”变量的列表。 还设法找到我的新行将在哪些点(因此,var“spot”)上创建。(必须使用一个修正var和一些数学来达到它,但它是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(但我可能会做错,因为我还是新手)

嗯,我什么都试过了。希望有人能帮我。你知道吗

提前感谢:)


Tags: 代码用户varline序列解决方案listfinal
3条回答

您使用的方法的问题是,在序列中的每个"\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

使用itertools从iterable中分块获取:

>>> 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
>>> 

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

[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

相关问题 更多 >