Kenneth A.Lambert著的資料結構(用python語言描述)的第一章課後程式設計答案

lightmare625發表於2018-07-14
 

第6題:工資部門將每個支付週期的僱員資訊的列表儲存到一個文字檔案,

             每一行的格式:<last name><hourly wage><hours worked>

             編寫一個程式,讓使用者輸出檔名並且最終向終端輸出報表。

自行建立一個txt檔案,如下圖所示:

程式碼:

方法一、從txt檔案中讀取內容,並向excel表格檔案寫入

  1. import xlwt
  2. word=[]
  3. fileName=input("請輸入檔名:")
  4. f=open(fileName,'r')
  5. content=f.readlines()
  6. i=0
  7. for line in content:
  8. line=line.split()
  9. word.append(line)
  10. f.close()
  11. print(word)
  12. w =xlwt.Workbook(encoding = 'utf-8') #建立一個工作簿
  13. ws =w.add_sheet('1') #建立一個工作表
  14. for i in range(len(content)):
  15. for j in range(len(word[0])):
  16. ws.write(i,j,word[i][j])
  17. w.save('salary.xls')

最終,產生了一個salary.xls檔案,檔案內的內容和txt中一致

方法二、從txt檔案中讀取內容,並在控制檯以表格形式展現

  1. from prettytable import PrettyTable
  2. word=[]
  3. fileName=input("請輸入檔名:")
  4. f=open(fileName,'r')
  5. content=f.readlines()
  6. i=0
  7. for line in content:
  8. line=line.split()
  9. word.append(line)
  10. f.close()
  11. print(word)
  12. for i in range(len(content)):
  13. if i==0:
  14. table = PrettyTable(word[0])
  15. else:
  16. table.add_row(word[i])
  17. table.reversesort = True
  18. print(table)
結果展示:
  1. +----------+-------------+------------+
  2. | lastName | hoursWorked | hourlyWage |
  3. +----------+-------------+------------+
  4. | Bob | 4 | 80 |
  5. | Ann | 8 | 160 |
  6. | Jack | 6 | 120 |
  7. | Lee | 13 | 260 |
  8. | Steven | 24 | 480 |
  9. +----------+-------------+------------+

第7題:在名為stats.py的模組中定義一些函式:計算列數字的中位數、眾數和平均數,以列表為引數,返回一個單個的數字

程式碼:

  1. #以下函式定義在一個stats.py的檔案中,
  2. #當import stats,可呼叫以下函式
  3. #計算中位數
  4. def median(lst):
  5. if len(lst)%2==0:
  6. return lst[len(lst)//2-1:len(lst)//2+1]
  7. else:
  8. return lst[len(lst)//2:len(lst)//2+1]
  9. #計算眾數
  10. def mode(lst):
  11. return max(lst.count(x) for x in set(lst))
  12. #計算平均數
  13. def mean(lst):
  14. return sum(lst)/len(lst)

呼叫自定義模組的步驟(lst是一個列表):

1. 匯入該模組:import stats

2.呼叫函式:stats.median(lst)  or  stats.mode(lst)  or stats.mean(lst)


第8題:編寫程式,允許使用者在檔案的文字中導航。程式提示輸入一個檔名,並且輸出想要放入到列表中的文字 行, 實際行號範圍是從1到檔案行數,如果使用者輸入0,程式退出。否則程式輸出和該行號相關的行。

程式碼:

  1. fileName=input("請輸入檔名:")
  2. addLines=input("請輸入文字:")
  3. f=open(fileName,'a+')
  4. f.write('\n'+addLines)
  5. f.seek(0)
  6. content=f.readlines()
  7. print(content)
  8. f.close()
  9. num=1
  10. while num:
  11. print("目前檔案的行號範圍為1~",len(content))
  12. num=int(input("請輸入一個行號:"))
  13. if num==0:
  14. break
  15. else:
  16. print(content[num-1])
  17. num=0

結果例項:

第9、10題:寫一個簡單的圖書館的軟體系統,看我的下一個部落格,提供轉換門:https://blog.csdn.net/LZH_12345/article/details/79679433

相關文章