簡體   English   中英

Python編程縮進問題

[英]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

您需要對齊輸出以格式化 演示 格式 讀取字符串

 print('{:<10}{:<10}{:<10}'.format(area,radius,circumference))

這是制表符( '\\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM