Python編程快速上手實(shí)踐項(xiàng)目題目,歡迎指證與優(yōu)化!
編寫一個(gè)名為 printTable()的函數(shù), 它接受字符串的列表的列表,將它顯示在組
織良好的表格中, 每列右對(duì)齊。假定所有內(nèi)層列表都包含同樣數(shù)目的字符串。例如,
該值可能看起來(lái)像這樣:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
你的 printTable()函數(shù)將打印出:
思路一:
1.計(jì)算列表中(包括內(nèi)部列表)最長(zhǎng)元素的長(zhǎng)度;
2.以最長(zhǎng)元素的長(zhǎng)度值作為全局右對(duì)齊的值打印列表
代碼:
import copy
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob1111111111111', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
def count_width(the_list):
#定義函數(shù):計(jì)算列表字符串最長(zhǎng)值
new_list=copy.deepcopy(the_list)
#復(fù)制列表保存到獨(dú)立的新列表
colWidths = [0] * len(new_list)
#創(chuàng)建一個(gè)列表,數(shù)目等同于tableData
i=0
while i < len(new_list):
new_list[i].sort(key = lambda i:len(i),reverse = True)
'''重新按照字符長(zhǎng)度逆序(從大到小),lamba表示匿名函數(shù),key = lambda i:len(i)代表
以元素i的len()值作為比較
'''
colWidths[i]=new_list[i][0]
# print (colWidths[i])
i=i+1
#將tableData[i]降序排序,取大值(第一個(gè)),得到一個(gè)每個(gè)內(nèi)層列表中最長(zhǎng)的字符串的列表
colWidths.sort(key = lambda i:len(i),reverse = True)
width=len(colWidths[0])
#將colWidths降序排序,取大值(第一個(gè))并計(jì)算其字符寬度
#print (width)
#print (the_list)
#print (new_list)
return width
def list_rjust(the_list,width):
for j in range (len(the_list[0])):
for i in range (len(the_list)):
print(the_list[i][j].rjust(width),end=" ")
print("\r")
list_rjust(tableData,count_width(tableData))
思路二:
1.計(jì)算列表(數(shù)組,沒(méi)有嵌套數(shù)組)最長(zhǎng)元素的值;
2.按照列表最長(zhǎng)元素的值打印列表(每列的最長(zhǎng)值可能不同)
代碼:
tableDate=[['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
def findmaxlen(Dates):
'''
計(jì)算一個(gè)數(shù)組中最長(zhǎng)元素的長(zhǎng)度
'''
maxlen=0
for i in range(len(Dates)):
if len(Dates[i])>maxlen:
maxlen=len(Dates[i])
return maxlen
#print(findmaxlen(tableDate[0]))
def printTable(the_list):
for j in range (len(the_list[0])):#打印內(nèi)部數(shù)組的第j個(gè)
for i in range (len(the_list)):#打印數(shù)組的第i個(gè)
print(the_list[i][j].rjust(findmaxlen(the_list[i])),end=' ')
#打印第i個(gè)數(shù)組的第j個(gè)內(nèi)部數(shù)組時(shí),按照第i個(gè)數(shù)組中的元素最長(zhǎng)值右對(duì)齊
print("\r")
printTable(tableDate)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。