《父與子的程式設計之旅(第3版)》第22章習題答案

謝婷婷發表於2020-08-27

本文針對第22章章末的習題提供參考答案。當然,有些習題的正確答案不止一個,特別是“動手試一試”,不過你可以通過這些答案來判斷自己的思路是否正確。

第22章 檔案的輸入和輸出

測試題

(1) Python用來處理檔案的物件稱為檔案物件。

(2) open()函式可以用來建立檔案物件,這是Python的內建函式之一。

(3) 檔名是在磁碟上(或快閃記憶體盤等其他儲存介質)儲存檔案時使用的名字,檔案物件則用於需要在Python中處理的檔案。檔案物件名與磁碟上的檔名無須相同。

(4) 當程式完成檔案的讀寫操作時,應當關閉檔案。

(5) 如果以追加模式開啟檔案,並在檔案中新增內容,那麼所新增的資訊會增加(追加)到檔案末尾。

(6) 如果以寫模式開啟檔案,然後在檔案中寫入內容,那麼檔案中原有的內容都會丟失,並替換為新的資料。

(7) 要重置為從檔案的起始位置開始讀取,可以使用seek()方法,並傳入引數0,如下所示。

myFile.seek(0)

(8) 在使用pickle模組把Python物件儲存到檔案中時,可以使用pickle.dump()方法,並指定希望儲存的物件以及檔名作為引數,如下所示。

pickle.dump(myObject, "my_pickle_file.pkl")

(9) 要從pickle檔案還原或獲取物件,可以使用pickle.load()方法,並指定pickle檔案作為引數,如下所示:

myObject = pickle.load("my_pickle_file.pkl")

記住,pickle檔案必須用二進位制模式('wb''rb')開啟。

動手試一試

(1) 下面這個簡單的程式可以造出一些滑稽句子:

import random
noun_file = open("nouns.txt", 'r')
nouns = noun_file.readline()
noun_list = nouns.split(',')
noun_file.close()
adj_file = open("adjectives.txt", 'r')
adjectives = adj_file.readline()
adj_list = adjectives.split(',')
adj_file.close()
verb_file = open("verbs.txt", 'r')
verbs = verb_file.readline()
verb_list = verbs.split(',')
verb_file.close()
adverb_file = open("adverbs.txt", 'r')
adverbs = adverb_file.readline()
adverb_list = adverbs.split(',')
adverb_file.close()
noun = random.choice(noun_list)
adj = random.choice(adj_list)
verb = random.choice(verb_list)
adverb = random.choice(adverb_list)
print("The", adj, noun, verb, adverb + '.')

這裡的單詞檔案應當是用逗號分隔的單詞列表。

(2) 下面的程式會把一些個人資料儲存在一個文字檔案中。

name = input("Enter your name: ")
age = input("Enter your age: ")
color = input("Enter your favorite color: ")
food = input("Enter your favorite food: ")
my_data = open("my_data_file.txt", 'w')
my_data.write(name + "\n")
my_data.write(age + "\n")
my_data.write(color + "\n")
my_data.write(food)
my_data.close()

(3) 下面的程式使用pickle模組儲存一些資料。

import pickle
name = input("Enter your name: ")
age = input("Enter your age: ")
color = input("Enter your favorite color: ")
food = input("Enter your favorite food: ")
my_list = [name, age, color, food]
pickle_file = open("my_pickle_file.pkl", 'wb')
pickle.dump(my_list, pickle_file)
pickle_file.close()

相關文章