簡體   English   中英

格式化清單

[英]Formatting lists

我需要創建一個函數,該函數從用戶那里獲取列表的輸入並以如下方式返回它們:

>>> print_table([[0,1,2,3,4,5],[0,1,4,9,16,25],[0,1,8,27,64,125]])
0   1   2   3   4   5   
0   1   4   9   16  25  
0   1   8   27  64  125 
>>> print_table(times_table(6,6))
0   0   0   0   0   0   0   
0   1   2   3   4   5   6   
0   2   4   6   8   10  12  
0   3   6   9   12  15  18  
0   4   8   12  16  20  24  
0   5   10  15  20  25  30  
0   6   12  18  24  30  36

times_table是指我當前的代碼:

def times_table(s):
    n = int(input('Please enter a positive integer between 1 and 15: '))
    for row in range(n+1):
        s = ''
        for col in range(n+1):
                s += '{:3} '.format(row * col)
        print(s)

可以的話請幫助我。

要獲得用戶輸入的兩個值,即列數和行數,可以執行以下操作:

in_values = input('Please enter two positive integers between 1 and 15, separated by comma (e.g. 2,3): ')
m,n =  map(int, in_values.split(','))
print(m,n)

要打印出格式化的列表列表,您可能希望考慮通過字符串的format()方法使用字符串格式。 我在上例中注意到的一件事是,您只能得到3位數字,並且數字之間的間距似乎沒有變化。 對於具有大量數字的列表,這可能會弄亂表的格式。 通過使用format()方法,您可以考慮到這一點,並使表保持良好的間距。

我想到的最簡單的方法是確定整個列表中最大的單個數字(最多數字),然后將其合並到格式中。 我建議您閱讀python類型字符串的字符串格式(包括迷你格式語言)。

假設s是傳遞給print_table的參數:

maxchars = len(str(max(max(s))))

這將在列表的單個條目中提供最大數量的字符。 然后,您可以在for循環中的行格式中使用此數字:

for lst in l:
        output = ""
        for i in lst:
            output += "{0:<{1}} ".format(i, maxchars)
        print(output)

行輸出+ =“ {0:<{1}}” .format(i,maxchars)表示在空格中打印左調整(<)的數字({0}映射到格式調用中的i)字符“ maxchars”寬({1}映射到格式調用中的maxchars)。

因此,根據您上面的列表列表,它將打印為:

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

但是,如果數字大得多(或任何數字大得多,例如125被125125替換,它將看起來像這樣),因為它將每個項目填充適當數量的字符空間以包含多個6個字符:

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

上面的示例考慮了可變數量的字符,但是您也可以使用整數來格式化字符串,方法是將{1}替換為整數,並省略maxchars部分(包括設置和傳遞給format),如果這樣做的話足夠了。

output += "{0:<4} ".format(i)

(可選)您可以弄清楚如何確定給定列中的最大數目,然后適當地設置該列的格式,但是我不會在此答案中給出該數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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