python基礎學習之文件操作&函數
1、文件處理相關
1、編碼問題
①python2與python3中的默認編碼:
py2默認使用ASCII碼,py3默認使用utf-8
②為什么會出現中文亂碼,中文亂碼的情況有哪些?
#sys.stdout.encoding,默認就是locale的編碼,print會用sys.stdout.encoding去encode()成字節流,交給terminal顯示。所以,locale需要與terminal一致,才能正確print打印出中文
下面還是直接給大家介紹下可以正確打印出中文的方式咯:
終端為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編碼,再encode轉換成utf-8編碼。
3、#-*-coding:utf-8-*-的作用
起到編碼聲明的作用
4、解釋py2 bytes vs py3 bytes的區別
python2將strings處理為原生的bytes類型,而不是unicode(python2 str == bytes)
python3所有的string均是unicode類型(python3需要通過unicode)
string -> encode -> bytes
bytes -> decode -> string
5、文件處理
①r和rb的區別:r是讀模式,而rb是二進制讀模式,即數據讀到的內容直接是二進制bytes模式
②解釋open中以下三個參數的作用:
open(f_name,'r',encoding='utf-8'):f_name是文件名,r是模式,encoding是編碼方式
2、函數基礎
1、寫函數,計算傳入參數的和。(動態傳參)
def func_sum(x,y):
return x+y 或 lambda x,y:x+y
2、寫函數,用戶傳入修改的文件名,與要修改的內容,執行函數,完成整個文件的批量修改操作
#修改列表中字符串(首字母大寫)
def file_daxie(file): a = [] for i in file: b = i.capitalize() a.append(b) print(a)
3、寫函數,檢查用戶傳入的對象(字符串、列表、元組)的每一個元素是否有空內容
def file_k(file): n = 0 for i in file: if i == ' ': n += 1 print('有%s個空'%n)
4、寫函數,檢查傳入字典的每一個value的長度,如果大于2,那么僅保留前兩個長度的內容,并將新內容返回給調用者。
dic = {'k1':'v1v1','k2':[11,22,33,44]}
def func(i):
for k,v in i.items():
if len(v) > 2:
dic[k] = v[ :2]
else:
continue
return i
print(func(dic))
5、解釋閉包的概念
閉包(closure)是函數式編程的重要的語法結構。函數式編程是一種編程范式(注:面向過程編程和面向對象編程也是編程范式)
閉包是一種組織代碼的結構,它同樣能提高代碼的可重復使用性。
3、函數進階
1、寫函數,返回一個撲克牌列表,里面有52項,每一項是一個元組
例如:[(‘紅心’,2),(‘草花’,2),……(‘黑桃’,‘A’)]
def cards(): num = [] for i in range(2, 11): num.append(i) num.extend(['J', 'Q', 'K', 'A']) type = ['紅心', '草花', '方塊', '黑桃'] result = [] for i in num: for j in type: result.append((j,i)) return result print(cards())
2、寫函數,傳入n個數,返回字典{‘max’:最大值,‘min’:最小值}
例如:min_max(2,5,7,8,4)
返回:{‘max’:8,‘min’:2}
def max_min(*args): the_max = args[0] the_min = args[0] for i in args: if i > the_max: the_max = i else: the_min = i return {'max': the_max, 'min': the_min} res = max_min(2, 4, 6, 48, -16, 486) print(res)
浙公網安備 33010602011771號