【《Python程式設計: 從入門到實踐》習題答案--第八章:】
阿新 • • 發佈:2019-02-05
# 8-1 訊息 : 編寫一個名為display_message() 的函式, 它列印一個句子, 指出你在本章學的是什麼。 # 呼叫這個函式, 確認顯示的訊息正確無誤。 def display_message(): print('本章學習內容:def(函式)') display_message() # 8-2 喜歡的圖書 : 編寫一個名為favorite_book() 的函式, 其中包含一個名為title 的形參。 這個函式列印一條訊息, # 如One of my favorite books isAlice in Wonderland 。 呼叫這個函式, 並將一本圖書的名稱作為實參傳遞給它。 def favorite_book(title,price): print('One of my favorite books is: ' + title) favorite_book('java程式設計','') # 8-3 T恤 : 編寫一個名為make_shirt() 的函式, 它接受一個尺碼以及要印到T恤上的字樣。 # 這個函式應列印一個句子, 概要地說明T恤的尺碼和字樣。 # 使用位置實參呼叫這個函式來製作一件T恤; 再使用關鍵字實參來呼叫這個函式。 def make_shirt(size,msg): if msg == '': print('這件t恤衫的尺寸是:' + size + '; 印花文字為:' + '空') else: print('這件t恤衫的尺寸是:' + size + ';印花文字為:' + msg) make_shirt('XXXL','') make_shirt('XXXL',msg = 'hello_world!') # 8-4 大號T恤 : 修改函式make_shirt() , 使其在預設情況下製作一件印有字樣“I love Python”的大號T恤。 # 呼叫這個函式來製作如下T恤: 一件印有預設字樣的大號T恤、 # 一件印有預設字樣的中號T恤和一件印有其他字樣的T恤(尺碼無關緊要) 。 def make_shirt(size,msg = 'I love Python'): print('這件t恤衫的尺寸是:' + size + ';印花文字為:' + msg) make_shirt('大號T恤') make_shirt('中號T恤') make_shirt('小號T恤','其他字樣') # 8-5 城市 : 編寫一個名為describe_city() 的函式, 它接受一座城市的名字以及該城市所屬的國家。 # 這個函式應列印一個簡單的句子, 如Reykjavik is in Iceland 。 給用於儲存國家的形參指定預設值。 # 為三座不同的城市呼叫這個函式, 且其中至少有一座城市不屬於預設國家。 def describe_city(city_name,city_belong_country = 'china'): print(city_name + ' is in ' + city_belong_country) describe_city('shanghai') describe_city('beijing') describe_city('DC','america') # 8-6 城市名 : 編寫一個名為city_country() 的函式, 它接受城市的名稱及其所屬的國家。 # 這個函式應返回一個格式類似於下面這樣的字串:"Santiago, Chile" # 至少使用三個城市-國家對呼叫這個函式, 並列印它返回的值。 def city_country(city_name,city_belong_country): city_country1 = city_name + ',' +city_belong_country return city_country1 a = city_country('shanghai','china') b = city_country('beijing','china') c = city_country('DC','America') print(a) print(b) print(c) # 8-7 專輯 : 編寫一個名為make_album() 的函式, 它建立一個描述音樂專輯的字典。 # 這個函式應接受歌手的名字和專輯名, 並返回一個包含這兩項資訊的字典。 使用這個函式建立三個表示不同專輯的字典, # 並列印每個返回的值, 以核實字典正確地儲存了專輯的資訊。給函式make_album() 新增一個可選形參, # 以便能夠儲存專輯包含的歌曲數。 如果呼叫這個函式時指定了歌曲數, 就將這個值新增到表示專輯的字典中。 呼叫這個 # 函式, 並至少在一次呼叫中指定專輯包含的歌曲數。 def make_album(singer_name,album_name,song_number = ''): if song_number: s_a = {'singer_name':singer_name,'album_name':album_name,'song_number' : song_number} else: s_a = {'singer_name':singer_name,'album_name':album_name} return s_a a = make_album('HanHong','QingZangGaoYuan','5') b = make_album('AndiLiu','WangQingShui') c = make_album('LiuHuan','YouAndMe','7') print(a) print(b) print(c) # 8-8 使用者的專輯 : 在為完成練習8-7編寫的程式中, 編寫一個while 迴圈, 讓使用者輸入一個專輯的歌手和名稱。 # 獲取這些資訊後, 使用它們來呼叫函式make_album() , 並將建立的字典打印出來。 在這個while 迴圈中, 務必要提供退出途徑。 def make_album(singer_name,album_name,song_number = ''): if song_number: s_a = {'singer_name':singer_name,'album_name':album_name,'song_number' : song_number} else: s_a = {'singer_name':singer_name,'album_name':album_name} return s_a s_n_inp = '請輸入歌手名:(輸入’quit‘後退出)' a_n_inp = '請輸入專輯名:(輸入’quit‘後退出)' ac = True while ac: a = input(s_n_inp) b = input(a_n_inp) if a == 'quit' or b == 'quit' : break else: c = make_album(a,b) print(c) # 8-9 魔術師 : 建立一個包含魔術師名字的列表, 並將其傳遞給一個名為show_magicians() 的函式, 這個函式列印列表中每個魔術師的名字。 name_list = ['mag1','mag2','mag3'] def show_magicians(): for name in name_list: print(name) show_magicians() # 8-10 了不起的魔術師 : 在你為完成練習8-9而編寫的程式中, 編寫一個名為make_great() 的函式, # 對魔術師列表進行修改, 在每個魔術師的名字中都加入字樣“theGreat”。 呼叫函式show_magicians() , 確認魔術師列表確實變了。 name_list = ['mag1','mag2','mag3'] name_change = [] def make_great(name_list,name_change): while name_list: cur = name_list.pop() cur = 'great' + cur name_change.append(cur) def show_magicians(name_change): for name in name_change: print(name) make_great(name_list,name_change) show_magicians(name_change) # 8-11 不變的魔術師 : 修改你為完成練習8-10而編寫的程式, 在呼叫函式make_great() 時, 向它傳遞魔術師列表的副本。 # 由於不想修改原始列表, 請返回修改後的列表, 並將其儲存到另一個列表中。 分別使用這兩個列表來呼叫show_magicians() , # 確認一個列表包含的是原來的魔術師名字, 而另一個列表包含的是添加了字樣“the Great”的魔術師名字。 name_list = ['mag1','mag2','mag3'] name_change = [] def make_great(name_list,name_change): while name_list: cur = name_list.pop() cur = 'great' + cur name_change.append(cur) def show_magicians(name_change) for name in name_change: print(name) make_great(name_list[:],name_change) show_magicians(name_list) show_magicians(name_change) # 8-12 三明治 : 編寫一個函式, 它接受顧客要在三明治中新增的一系列食材。 這個函式只有一個形參(它收集函式呼叫中提供的所有食材) , # 並列印一條訊息, 對顧客點的三明治進行概述。 呼叫這個函式三次, 每次都提供不同數量的實參。 def sand_make(*ingredients): print( '新增的食材有:') for i in ingredients: print('--' + i) sand_make('1','2','3','4') sand_make('0') sand_make('1','2') # 8-13 使用者簡介 : 複製前面的程式user_profile.py, 在其中呼叫build_profile() 來建立有關你的簡介; # 呼叫這個函式時, 指定你的名和姓, 以及三個描述你的鍵-值對。 def user_profile(first,last,**else_info): name_file = {} name_file['first_name'] = first name_file['last_name'] = last for k ,v in else_info.items(): name_file[k] = v return name_file user_a = user_profile('ma','yun',company = 'TaoBao',Sex = 'man') print(user_a) user_b = user_profile('1','2',Sex = 'man') print(user_b) # 8-14 汽車 : 編寫一個函式, 將一輛汽車的資訊儲存在一個字典中。 這個函式總是接受制造商和型號, 還接受任意數量的關鍵字實參。 # 這樣呼叫這個函式: 提供必不可少的資訊, 以及兩個名稱—值對, 如顏色和選裝配件。 這個函式必須能夠像下面這樣進行呼叫: # car = make_car('subaru', 'outback', color='blue', tow_package=True) # 列印返回的字典, 確認正確地處理了所有的資訊。 def car_msg(manufacturer,model,**else_info): bas_msg = {} bas_msg['manufacturer'] = manufacturer bas_msg['model'] = model for k ,v in else_info.items(): bas_msg[k] = v return bas_msg car = car_msg('subaru', 'outback', color='blue', tow_package=True) print(car)