繁体   English   中英

如何使用用户输入打印 6 行 7 个数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM