第三章練習題及答案
1.編碼問題
請說明python2 與python3中的默認編碼是什麽?
# 答案 py2默認ASCII碼,py3默認的utf8
為什麽會出現中文亂碼?你能列舉出現亂碼的情況有哪幾種?
# 答案 #coding:utf-8 #.py文件是什麽編碼就需要告訴python用什麽編碼去讀取這個.py文件。 sys.stdout.encoding,默認就是locale的編碼,print會用sys.stdout.encoding去encode()成字節流,交給terminal顯示。所以locale需要與terminal一致,才能正確print打印出中文。 sys.setdefaultencoding(‘utf8’),用於指定str.encode() str.decode()的默認編碼,默認是ascii。 以下幾種(local 為軟件運行時的語言環境): 終端為UTF
2.如何進行編碼轉換?
# 答案 字符串在python內部中是采用unicode的編碼方式,所以其他語言先decode轉換成unicode編碼
#-*-coding:utf-8-*- 的作用是什麽?
編碼聲明
3.解釋py2 bytes vs py3 bytes的區別
# 答案 Python 2 將 strings 處理為原生的 bytes 類型,而不是 unicode(python2 str == bytes), Python
4.文件處理
r和rb的區別是什麽?
# 答案 r 讀模式 rb 二進制讀
解釋一下以下三個參數的分別作用
# 答案 open(f_name,‘r‘,encoding="utf-8") f_name 文件名 r 模式 encoding 編碼方式
5.函數基礎:
寫函數,計算傳入數字參數的和。(動態傳參)
# 答案 def func_sum(x, y):
寫函數,用戶傳入修改的文件名,與要修改的內容,執行函數,完成整個文件的批量修改操作
# 答案 # 修改列表中字符串首字母大寫 def file_daxie(file): a=[] for i in file: b=i.capitalize() a.append(b) print(a)
寫函數,檢查用戶傳入的對象(字符串、列表、元組)的每一個元素是否含有空內容。
# 答案 def file_k(file): n=0 for i in file: if i==‘ ‘: n+=1 print(‘有%s個空‘%n)
寫函數,檢查傳入字典的每一個value的長度,如果大於2,那麽僅保留前兩個長度的內容,並將新內容返回給調用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]} PS:字典中的value只能是字符串或列表 #答案 def func(i): # i為所傳字典 for k, v in i.items(): if len(v) > 2: dic[k]= v[:2] else: continue return i print(func(dic)) {‘k1‘: ‘v1‘, ‘k2‘: [11, 22]}
解釋閉包的概念
閉包(closure)是函數式編程的重要的語法結構。函數式編程是一種編程範式 (而面向過程編程和面向對象編程也都是編程範式)。
在面向過程編程中,我們見到過函數(function);在面向對象編程中,我們見過對象(object)。函數和對象的根本目的是以某種邏輯方式組織代碼,並提高代碼的可重復使用性(reusability)。
閉包也是一種組織代碼的結構,它同樣提高了代碼的可重復使用性。
第三章練習題及答案