我想知道是否有人可以阅读此代码并告诉我为什么会这样。我不能成为第一个遇到这种情况的人,但我环顾四周,无法在书中或其他地方找到答案。
这必须是次要的,但我无法看到它。
# This program will find and calculte the radius
# area and circumference of a circle.
def main():
print('Radius\tArea\tCircumference')
print('----------------------------')
print()
for radius in range(1, 11):
for area in range(1, 11):
for circumference in range(1, 11):
pi = 3.14
diameter = radius * 2
radius = diameter / 2
area = pi * radius**2
circumference = (2 * pi) * radius
print(radius, '\t', area, '\t',format(circumference, '.2f'))
main()
输出:
Radius Area Circumference
----------------------------
1.0 3.14 6.28
2.0 12.56 12.56
3.0 28.26 18.84
4.0 50.24 25.12
5.0 78.5 31.40
6.0 113.04 37.68
7.0 153.86 43.96
8.0 200.96 50.24
9.0 254.34 56.52
10.0 314.0 62.80
>>>
输出在前两列中对齐,但第三列中的十列中有四列似乎是右侧的选项卡。 ??
答案 0 :(得分:2)
为确保对齐,您可以先将每个数字设为固定宽度的字符串。
def main():
print('Radius\tArea\tCircumference')
print('----------------------------')
print()
for radius in range(1, 11):
for area in range(1, 11):
for circumference in range(1, 11):
pi = 3.14
diameter = radius * 2
radius = diameter / 2
area = pi * radius**2
circumference = (2 * pi) * radius
#print(radius, '\t', area, '\t' , format(circumference, ".2f"))
radius_str = "%0.2f" % radius
area_str = "%0.2f" % area
circumference_str = "%0.2f" % circumference
print("%6s\t%6s\t%6s" % (radius_str, area_str, circumference_str))
main()
输出:
Radius Area Circumference
----------------------------
1.00 3.14 6.28
2.00 12.56 12.56
3.00 28.26 18.84
4.00 50.24 25.12
5.00 78.50 31.40
6.00 113.04 37.68
7.00 153.86 43.96
8.00 200.96 50.24
9.00 254.34 56.52
10.00 314.00 62.80
答案 1 :(得分:2)
您需要对输出read string formatting a demo
进行对齐 print('{:<10}{:<10}{:<10}'.format(area,radius,circumference))
答案 2 :(得分:1)
这是tab('\t'
)工作方式和Python print
工作方式的组合。默认情况下,print
在打印出的每个项目之间插入一个空格,因此实际打印出来的内容(例如)第6行是:
6.0<SPACE><TAB><SPACE>113.04<SPACE><TAB><SPACE>37.68
另一方面,Tab前进到下一列,该列是从行首开始的八个空格的倍数。当打印第6行的第二个选项卡时,自上一个选项卡以来已输出8个字符,因此选项卡最终打印出完整的8个空格以进入下一个制表位。
解决此问题的最简单方法是通过明确指定空print
值来消除sep
项之间的空格:
print(radius, '\t', area, '\t',format(circumference, '.2f'), sep='')
答案 3 :(得分:0)
您需要使用字符串格式来确保列之间的间距保持一致:
line = '{:>12} {:>12} {:>12}'.format(radius, area, format(circumference, '.2f'))
print(line)
值12表示每个列(包括其中的文本)将为12个字符宽。
的官方参考答案 4 :(得分:0)
我重新安排了您的代码,现在它可以正常工作。
def main():
print('Radius\tArea\tCircumference')
print('----------------------------')
print()
for radius in range(1, 11):
for area in range(1, 11):
for circumference in range(1, 11):
pi = 3.14
diameter = radius * 2
radius = diameter / 2
area = pi * radius**2
circumference = (2 * pi) * radius
print(radius, '\t', format(area, '.2f')+'\t ' ,format(circumference, '.2f'))