慕課python課後作業 python練習題

2021-10-19 23:50:24 字數 3997 閱讀 7068

一、函式

1、使用者傳入修改的檔名,指定要修改的內容,執行函式,完成批量修改的操作

12345678910def modify_file(filename,old,new):import oswithopen(filename,'r',encoding='utf-8') as read_f,open('.bak.swap','w',encoding='utf-8') as write_f:for linein read_f:if oldin line:line=line.replace(old,new)write_f.write(line)#修改過的內容寫到臨時檔案.bak.swapos.remove(filename)#將原始檔刪除os.rename('.bak.swap',filename)#將臨時檔案.bak.swap重新命名為之前的檔名filenamemodify_file('/users/jieli/a.txt','some','same')#使用者傳遞引數,實現將a.txt中的some改為same

2、寫函式,計算傳入字串中【數字】、【字母】、【空格] 以及 【其他】的個數

12345678910111213141516171819def check(msg):res= for sin msg:if s.isdigit():#判斷屬於數字res['num']+= 1elif s.isalpha():#判斷屬於字串res['string']+= 1elif s.isspace():#判斷屬於空格res['space']+= 1else:res['other']+= 1return resres= check('hello name:jim passowrd:win2008')#給函式傳入引數『hello name:jim passowrd:win2008』print(res)#結果是

3、寫函式,判斷使用者傳入的物件(字串、列表、元組)長度是否大於5

1234567891011121314151617def func1(str,list,tup):zi= len(str)li= len(list)tup= len(tup)if zi >5:print("字串長度大於5")else:print("字串長度小於或等於5")if li >5:print("列表長度大於5")else:print("列表長度小於或等於5")if tup >5:print("元組長度大於5")else:print("元組長度小於或等於5")func1("kwkwqehk",[11,22,33],(1,"215",5,6,59,6))

4、寫函式,檢查傳入列表的長度,如果大於2,那麼僅保留前兩個長度的內容,並將新內容返回給呼叫者。

12345def func1(seq):if len(seq) >2:seq=seq[0:2]#根據索引取元素,索引為0和1的return seqprint(func1([1,2,3,4]))#結果是[1, 2]

5、寫函式,檢查獲取傳入列表或元組物件的所有奇數字索引對應的元素,並將其作為新列表返回給呼叫者

123def func2(seq):return seq[::2]#按照索引判斷,指定步長為2print(func2((1,2,3,4,5,6,7)))#結果是(1, 3, 5, 7)

6、寫函式,檢查字典的每乙個value的長度,如果大於2,那麼僅保留前兩個長度的內容,並將新內容返回給呼叫者

1234567def func3(dic):d={}for key,valuein dic.items():if len(value) >2:#value長度大於2的d[key]=value[0:2]#新的value保留兩個長度的內容,並和key組成新字典dreturn dprint(func3())#結果是

二、裝飾器

1、寫乙個執行的時間是隨機的函式

123456import randomimport timedef func1():time.sleep(random.randrange(1,5))#random的randrange生成隨機的時間1到4秒print('welecome to func1')func1()

2、編寫裝飾器,為函式加上統計時間的功能

12345678910111213141516import timeimport randomfrom functoolsimport wrapsdef wrap(func):def auth(*args,**kwargs):start= time.time()res=func(*args,**kwargs)stop= time.time()print('run time is %s' % (stop- start))return resreturn auth@wrap              #裝飾器語法,相當於執行wrap(func)def func():time.sleep(random.randrange(1,5))print('welecome to func')func()

3、編寫裝飾器,為函式加上認證的功能

123456789101112131415161718import timedef wrap(func):def auth(*args,**kwargs):while true:name=input('username: ').strip()password=input('pwd: ').strip()if name=='wang' and password=='123':print('successful')res=func(*args,**kwargs)return reselse:print('error')continuereturn auth@wrapdef index():print('welecome to func1')index()

4、編寫裝飾器,為多個函式加上認證的功能(使用者的賬號密碼**於檔案),要求登入成功一次,後續的函式都無需再輸入使用者名稱和密碼

db檔案內容:

5、編寫裝飾器,為多個函式加上認證功能,要求登入成功一次,在超時時間內無需重複登入,超過了超時時間,則必須重新登入

6、編寫日誌裝飾器,一旦函式f1執行,則將訊息2017-07-21 11:12:11 f1 run寫入到日誌檔案中

三、宣告式程式設計練習

1、將names=['zhao','qian','sun','li']中的名字全部變大寫

12names=[name.upper()for namein names]print(names)

2、將names=['zhao','qian','sun','li']中以i結尾的過濾掉,儲存剩下的名字長度

12names=[namefor namein namesif not name.endswith('sb')]print(names)#結果['zhao', 'qian', 'sun']

3、求檔案a.txt中最長的行的長度(長度按字元個數算,需要使用max函式)

123withopen('aaa.log','r',encoding='utf-8') as f:res=max(len(line)for linein f)print(res)

4、檔案shopping.txt內容如下

mac 20000 3

lenovo 3000 10

tesla 1000000 10

chicken 200 1

(1)開支是多少

12345withopen('shopping.txt', encoding='utf-8') as f:info= [line.split()for linein f]#print(info)           #[['mac', '20000', '3'], ['lenovo', '3000', '10'], ['tesla', '1000000', '10'], ['chicken', '200', '1']]cost= sum(float(unit_price)* int(count)for _, unit_price, countin info)print(cost)#結果是支出的金額

(2)列印資訊,如格式為[,...]

1234567withopen('a.txt',encoding='utf-8') as f:info=[for linein f]print(info)

(3)單價大於10000的商品資訊

1234567withopen('a.txt',encoding='utf-8') as f:info=[for linein fif float(line.split()[1])>10000]print(info)

慕課python課後作業 python練習題

2道外企面試題。1 統計連續字串出現最大頻次 usr bin env python coding utf 8 def maxblock x l i for i in x 或者l list x num n 1for i in range len l 1 if l i l i 1 n 1 else n ...

11 02課後作業

charset utf 8 課程表title div style head border 2 bordercolor blue 課程表caption 專案th colspan 5 上課th colspan 2 休息th tr 星期td 星期一td 星期二td 星期三td 星期四td 星期五td 星期...

python 課後作業 python之路之課後作業

usr bin env python coding utf 8 importsysimportos teacher list pickle.load open setting.teacher db dir,rb for num,item in enumerate teacher list,1 pri...