[英]Python programming indentation issue
我想知道是否有人可以閱讀這段代碼並告訴我為什么會這樣。 我不能是第一個遇到這種情況的人,但是我環顧四周,在書中或其他地方找不到答案。
這一定有點小,但我看不到。
# 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
>>>
輸出在前兩列中對齊,但是在第三列中,十分之四似乎在右側。 ??
為了確保對齊,您可以首先使每個數字成為固定寬度的字符串。
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
這是制表符( '\\t'
)的工作方式與Python的print
方式的結合。 默認情況下, print
在它打印出的每個項目之間插入一個空格,因此第6行上實際打印出的內容是:
6.0<SPACE><TAB><SPACE>113.04<SPACE><TAB><SPACE>37.68
另一方面,Tab前進到下一行,該行是從行首開始的八個空格的倍數。 當打印第6行的第二個選項卡時,自上一個選項卡以來已輸出8個字符,因此該選項卡最終打印出完整的8個空格以到達下一個選項卡停靠點。
解決此問題的最簡單方法是通過明確指定空的sep
值來消除print
項目之間的間隔:
print(radius, '\t', area, '\t',format(circumference, '.2f'), sep='')
您將要使用字符串格式來確保列之間的間距一致:
line = '{:>12} {:>12} {:>12}'.format(radius, area, format(circumference, '.2f'))
print(line)
值12表示您每列(包括其中的文本)的寬度均為12個字符。
這是Python中字符串格式的官方參考
我重新排列了您的代碼,現在可以正常工作了。
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'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.