1. 程式人生 > >第三章練習題及答案

第三章練習題及答案

進制 urn font python2 亂碼 什麽 中文 ngs default

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

-8,locale為zh_CN.GBK 終端為UTF-8,locale為zh_CN.UTF-8 終端為GBK,locale為zh_CN.GBK 終端為GBK,locale為zh_CN.UTF-8

2.如何進行編碼轉換?

# 答案 字符串在python內部中是采用unicode的編碼方式,所以其他語言先decode轉換成unicode編碼

#-*-coding:utf-8-*- 的作用是什麽?

編碼聲明

3.解釋py2 bytes vs py3 bytes的區別

# 答案 Python 2 將 strings 處理為原生的 bytes 類型,而不是 unicode(python2 str == bytes), Python

3 所有的 strings 均是 unicode 類型(python3 中需要通過 unicode ) string -> encode -> bytes bytes -> decode -> string

4.文件處理

r和rb的區別是什麽?

# 答案 r 讀模式 rb 二進制讀

解釋一下以下三個參數的分別作用

# 答案 open(f_name,r,encoding="utf-8") f_name 文件名 r 模式 encoding 編碼方式

5.函數基礎:

寫函數,計算傳入數字參數的和。(動態傳參)

# 答案 def func_sum(x, y):

return x + y 或 lambda x , y : 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)。
  閉包也是一種組織代碼的結構,它同樣提高了代碼的可重復使用性。

第三章練習題及答案