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