[英]How to print 6 rows of 7 numbers with user input
我必须编写一个接受数字 n 的程序,其中 -6 < n < 2。该程序必须将数字 n 到 n+41 打印为 6 行,每行 7 个数字。 第一行必须包含值 n 到 n+6,第二行必须包含值 n+7 到 n+7+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('Enter the start number: '))
for n in range(n,n+41):
如果你能帮助我,我将不胜感激。
我假设您不允许使用库为您列出数字,并且应该自己做逻辑。
您需要打印 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
检查这里的tabulate
库,您可以使用它来格式化输出 - tablefmt="plain"
参数生成一个非常相似的表格。
如果您将数字存储在list
您可以使用列表切片来获取每行 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.