如何在Python 3中以行和列显示数字序列?

时间:2017-11-15 00:12:50

标签: python python-3.x numbers multiple-columns rows

我有一个编码分配来输入行和列长度,并创建一个功率表。以下示例适用于5行,5列。

enter image description here

到目前为止我的代码打印了正确的行数和列数,但我无法使计算工作。它只显示一张1,五乘五的表。

rows = int(input("Enter a number of rows: "))
cols = int(input("Enter a number of columns: "))

x = 1
y = 1
z = 1

line = ""

while x <= cols :
    line = line + format(y**cols, "4d")
    x = x + 1
while z <= rows :
    print(line)
    z = z + 1

3 个答案:

答案 0 :(得分:1)

基本问题是您需要嵌套循环。你的第二个问题是你永远不会改变y。您目前所做的是将1的电源序列计算为五个不同的行 - 然后再打印最后一行五次。尝试两处更改:

  1. 计算一条线,然后立即打印。 然后你转到下一行。
  2. 使用正确的变量。
  3. 更改后:

    while z <= rows:
        while x <= cols:
            line = line + format(x**cols, "4d")   # Note the variable change
            x = x + 1
            print(line)
    
        z = z + 1
    

    另外,查看for语句,因为这会简化操作。之后,查找list comprehension以获得更多压缩。

答案 1 :(得分:0)

相反,尝试在Python中创建2D数组,例如2D列表。

Matrix = [[0 for x in range(5)] for y in range(5)] 
    for i in range(5):
        for j in range(5):
            Matrix[i][j]=j^i

然后,使用嵌套的for循环打印您需要的数据。

for i in range (5):
    for j in range(5):
        print(Matrix[j][i])

答案 2 :(得分:0)

这是一种无论如何都可以保留填充的方法:

def grid(rows, cols, padding):
  max_num_len = len(str(rows**cols))
  return '\n'.join([
    ''.join(['{{:>{}}}'.format(max_num_len+padding).format((row+1)**(col+1))
             for col in range(cols)])
    for row in range(rows)
  ])

print(grid(5, 5, 3))