正方形和立方表

问题描述 投票:0回答:4

我正在自学Python,但我被我购买的书中的一个问题所困扰。我似乎只能正确地获得数字,但无法获得标题。我想知道这是否与

format
方法使其看起来更好有关?这是我到目前为止所拥有的:

number = 0
square = 0
cube = 0

for number in range(0, 6):
    square = number * number
    cube = number * number * number
    print(number, square, cube)

我要退货:

0  0  0
1  1  1
2  4  8
3  9  27
4  16 64
5  25 125

我希望我想要的输出是这样的:

number    square    cube
     0         0       0
     1         1       1
     2         4       8
     3         9      27
     4        16      64
     5        25     125
python math
4个回答
2
投票

这里我们可以使用括号中的格式指定数字的宽度

print('number    square    cube')
for x in range(0, 6):
  print('{0:6d}\t {1:7d}\t {2:3d}'.format(x, x*x, x*x*x))

这会导致

number    square    cube
     0         0       0
     1         1       1
     2         4       8
     3         9      27
     4        16      64
     5        25     125

1
投票

您需要打印标题行。我使用制表符

\t
来适当地分隔数字,并使用f-stings,因为它们很棒(查找它们)。

number = 0
square = 0
cube = 0

# print the header
print('number\tsquare\tcube')

for number in range(0, 6):
    square = number * number
    cube = number * number * number
    # print the rows using f-strings
    print(f'{number}\t{square}\t{cube}')

输出:

number  square  cube
0       0       0
1       1       1
2       4       8
3       9       27
4       16      64
5       25      125

唯一不做的是右对齐列,您必须编写一些自定义打印函数,根据该列中的每个项目确定列空间的正确宽度。老实说,这里的输出没有任何区别,我会关注代码的实用性,而不是打印到终端时的样子。


1
投票

您可能会考虑一种更简洁的方法,它也使用

format
,正如您所猜测的。我认为这是值得学习的,因为格式规范迷你语言很有用。结合 f-stings,您可以从 8 行代码减少到 3 行。

print('number\tsquare\tcube')
for number in range(0, 6):
    print(f'{number:>6}{number**2:>8}{number**3:>6}')

这里的数字(例如:>6)并不特殊,只是为了让您获得所需的输出。然而,

>
会强制数字在可用空间内右对齐。


0
投票

假设您正在阅读 Deitel 和 Deitel 撰写的《Python 简介》,并且该问题来自第 2 章练习。在第 2 章中我们还没有学到很多东西,所以根据我们通过这本书学到的知识直到这个问题,这是我的答案:

print('number', '\t', 'square', '\t', 'cube')
print('0', '\t\t', 0**2, '\t\t\t', 0**3)
print('1', '\t\t', 1**2, '\t\t\t', 1**3)
print('2', '\t\t', 2**2, '\t\t\t', 2**3)
print('3', '\t\t', 3**2, '\t\t\t', 3**3)
print('4', '\t\t', 4**2, '\t\t', 4**3)
print('5', '\t\t', 5**2, '\t\t', 5**3)
© www.soinside.com 2019 - 2024. All rights reserved.