行和列的多个列表

问题描述 投票:1回答:2

我一直在寻找像熊猫之类的答案,但我认为我不允许使用它,所以我碰壁了我的作业,如果有人可以帮助我,我将不胜感激。关于如何使我的代码能够处理字符串值作为输入和否定输入的任何建议?我是python的新手。

n = int(input("enter a number:"))
x = range(int(1),n)
list_1 = [x+1 for x in range(n)]
list_1.insert(0,"m")
list_2 = [x+2 for x in range(n)]
list_2.insert(0,"m+1")
list_3 = [(x+1) ** (x+2) for x in range(n)]
list_3.insert(0,"m**(m+1)")
list_of_lists = [list_1, list_2, list_3]

if n>=0:
    for a in zip(*list_of_lists):
        print(*a)


elif n<0:
    print("sorry, only positive integers please")

所给的全部是

m m+1 m**(m+1)
1 2 1
2 3 8
3 4 81
4 5 1024
5 6 15625

我希望它像这样的地方

m    m+1    m**(m+1)
1    2      1
2    3      8
3    4      81
4    5      1024
5    6      15625
python
2个回答
0
投票

我认为这是您想要的:

n = int(input("enter a number:"))
# Do the check earlier.
if n>=0:
  x = range(int(1),n)
  list_1 = [x+1 for x in range(n)]
  list_1.insert(0,"m")
  list_2 = [x+2 for x in range(n)]
  list_2.insert(0,"m+1")
  list_3 = [(x+1) ** (x+2) for x in range(n)]
  list_3.insert(0,"m**(m+1)")
  list_of_lists = [list_1, list_2, list_3]

  # Print here, use a sep(arator) of \t -> tab
  # instead of the default one which is space.
  for a in zip(*list_of_lists):
        print(*a, sep = '\t', end = '\n')

elif n<0:
    print("sorry, only positive integers please")

此将在控制台中打印:

enter a number: 5
m   m+1 m**(m+1)
1   2   1
2   3   8
3   4   81
4   5   1024
5   6   15625

1
投票

代替

print(*a)

使用

print("{:<8} {:<8} {:<8}".format(*a))

[将每个元素放置在8个字符的宽度列中,并对其进行左调整(因为<位于8的前面)。

© www.soinside.com 2019 - 2024. All rights reserved.