我必须编写一个接受数字n的程序,其中-6 即,数字使用字段宽度2打印,并右对齐。字段由单个空格分隔。最后一个字段之后没有空格。 输出:
输入起始号码:-2 数字必须直接在彼此下排列。
我完全不知道该怎么做 到目前为止,这是我的代码: 如果您能帮助我,我将非常感谢。
-2 -1 0 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 32
33 34 35 36 37 38 39
start = int(input('输入起始编号:'))
对于范围(n,n + 41)中的n:
答案 0 :(得分:1)
我假设您不允许使用库来为您列出数字,并且应该自己进行逻辑计算。
您需要打印6行数字。首先确定每行的第一个数字。这由range(n,n+42,7)
(注意,不是n+41
)给出。对于起始值-2,它们是数字-2、5、12、19、26、33。行中的每个其他数字仅是接下来的6个整数。如果行中的第一个数字为leftmost
,则整个行由range(leftmost, leftmost + 7)
给出。所以第一行是数字-2,-1、0、1、2、3、4。
要打印6行的7个数字,您需要循环执行6次迭代,每个leftmost
的值重复一次。在该循环中,您将打印其他数字。唯一的麻烦是列表中的所有数字后面都必须跟一个空格,除了最后一个空格。因此必须得到特殊对待。
您需要指定格式{0:2d}
,以确保“数字使用2的字段宽度打印”。
n = -2
for leftmost in range(n,n+42,7):
for value in range(leftmost,leftmost + 6):
print("{0:2d}".format(value), end=" ")
print("{0:2d}".format(leftmost+6))
-2 -1 0 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 32
33 34 35 36 37 38 39
答案 1 :(得分:0)
检查tabulate
库here,您可以使用它来格式化输出-tablefmt="plain"
参数产生一个非常相似的表。
如果将数字存储在list
中,则可以使用list slicing来获取每行包含7个数字的行,并将其放入另一个列表中,以满足tabulate
期望的格式
from tabulate import tabulate
n = 2
while not -6 < n < 2:
n = int(input('Please submit a number greater than -6 and smaller than 2:\n'))
number_list, output_list = [], []
for i in range(42):
number_list.append(n + i)
for i in range(6):
output_list.append(number_list[i*7:i*7+7])
print()
print(
tabulate(
output_list,
tablefmt='plain'
)
)
Please submit a number greater than -6 and smaller than 2:
-3
-3 -2 -1 0 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
32 33 34 35 36 37 38