上一篇有福利哦 嘿嘿嘿!
內容回顧:
文件操作:
open(文件路徑, mode)
mode 里面所有帶b的 都是字節操作, 帶b 可以省略 encoding
絕對路徑: 從磁盤根目錄去尋找
相對路徑: 相對於當前文件的位置
常用操作:
seek() 移動光標
開頭seek(0)
結尾seek(0,2)
tell() 獲取光標的位置
truncate() 截斷文件
主要內容:
三元運算符(表達式):c = a if a>b else b 當a大於b 返回a,否則返回b
函數.: 概念: 對一個代碼塊,或者功能的封裝, 什么時候用, 什么時候執行
語法:
def 函數名():
(tab)函數體
函數名: 跟變量名的命名規則一樣.
函數的調用: 函數名()
返回值: return, 函數在執行過程中,或者執行完畢, 可以使用return 返回給調用者一個結果
*******************只要程序執行到return 函數就會被停止,后面的內容不會再執行
1,直接寫個 return 或者整個函數不寫return, 返回 None
2, return 后面加一個變量或者值(返回值)
3, return 后面可以加多個返回值, 多個返回值會被解釋器打包成元組, 統一返回, 接受的地方,可以接收一個變量,也可以是多個變量(解構)
參數: 在調用函數的時候,給函數傳遞的一些信息. 參數寫在小括號里面.
如果在聲明函數的時候,設置的參數,在調用的時候,必須給賦值.
參數可以有很多個,每個參數之間用逗號隔開
形參: 在函數聲明的位置上給出變量的聲明, 形式參數 (有三種形式,今天只講倆)
1, 位置參數:同下, 而且到目前為止,用的都是位置參數;
2, 默認值參數, 當出現很多重復的參數的時候, 考慮使用默認值參數,
默認值參數,必須寫在位置參數后面, 當調用的地方不給出值的時候,會使用默認值.
3, 動態參數(預習內容)
實參: 在函數調用的時候,給函數傳遞的變量,叫做實際參數.
1, 位置參數:按照位置,把實參一個一個賦值給形參. 如果位置混亂, 輸出的結果也是混亂的.
2, 關鍵字參數: 對照形參,給每個參數賦值
3, 混合參數: 位置參數,跟關鍵字參數 混合使用. 必須先寫位置參數,在寫關鍵字參數,
內容不難, 來一波 刷題與答案哈哈哈... 比較懶 堆一起了哈.
1 #2,寫函數,檢查獲取傳入列表或元組對象的所有奇數位索引對應的元素,並將其作為新列表返回給調用者。 2 def jishu(lis): 3 jishu_list = [] 4 for n in range(1,len(lis),2): 5 6 jishu_list.append(lis[n]) 7 8 return jishu_list 9 a=(0,1,2,2,4,8,6,9,8) 10 11 ret = jishu(a) 12 print(ret) 13 14 # 3,寫函數,判斷用戶傳入的對象(字符串、列表、元組)長度是否大於5。 15 def list_len(a): 16 if len(a) > 5: 17 return True 18 else: 19 return False 20 a = [1,25,5,7,5,] 21 ret = list_len(a) 22 print(ret) 23 24 # 4,寫函數,檢查傳入列表的長度,如果大於2,那么僅保留前兩個長度的內容,並將新內容返回給調用者。 25 def cha_len(a): 26 if len(a)>2: 27 return a[:2] 28 a = [1,2,] 29 print(cha_len(a)) 30 31 # 5,寫函數,計算傳入函數的字符串中,[數字]、[字母]、[空格] 以及 [其他]的個數,並返回結果。 32 def count(string): 33 digit_count = 0 34 alpha = 0 35 false = 0 36 qita = 0 37 for i in string: 38 if i.isdigit(): 39 digit_count += 1 40 elif i.isalpha(): 41 alpha += 1 42 elif i == ' ': 43 false += 1 44 else: 45 qita += 1 46 return '數字的個數%s' % digit_count, '字母的個數 %s' % alpha, '空格的個數 %s' % false, '其他的個數 %s' %qita 47 48 a ='a1 b1 c3 d4 .....' 49 print(count(a)) 50 51 52 # 6,寫函數,接收兩個數字參數,返回比較大的那個數字。 53 def get_max(a,b): 54 return a if a>b else b 55 a=110 56 b=110 57 print(get_max(a,b)) 58 59 # #7,寫函數,檢查傳入字典的每一個value的長度,如果大於2,那么僅保留前兩個長度的內容,並將新內容返回給調用者。 60 # dic = {"k1": "v1v1", "k2": [11,22,33,44]} 61 # PS:字典中的value只能是字符串或列表 62 def value_2(dic): 63 for k,v in dic.items(): 64 if len(v) > 2: 65 dic[k] = v[:2] 66 return dic 67 dic = {"k1": "v1v1", "k2": [11,22,33,44]} 68 print(value_2(dic)) 69 70 ''' 71 8,寫函數,此函數只接收一個參數且此參數必須是列表數據類型, 72 此函數完成的功能是返回給調用者一個字典,此字典的鍵值對為此列 73 表的索引及對應的元素。例如傳入的列表為:[11,22,33] 返回的字 74 典為 {0:11,1:22,2:33}。 75 ''' 76 def list_dict(lis): 77 dic = {} 78 n = 0 79 if type(lis) == list: 80 for value in lis: 81 dic[n] = value 82 n +=1 83 return dic 84 else: 85 return '請傳入一個列表' 86 lis = [11,22,33] 87 print(list_dict(lis)) 88 89 90 '''9,寫函數,函數接收四個參數分別是:姓名,性別,年齡,學歷。 91 用戶通過輸入這四個內容,然后將這四個內容傳入到函數中,此函數 92 接收到這四個內容,將內容追加到一個student_msg文件中。 93 ''' 94 def cunchu(name, set, age, xueli): 95 with open('student_msg', 'w', encoding='utf-8') as f: 96 f.write('''name:%s 97 set:%s 98 age:%s 99 xueli:%s''' %(name,set,age,xueli)) 100 return 101 name = input('名字:') 102 set = input('性別:') 103 age = input('年齡:') 104 xueli = input('學歷:') 105 cunchu(name,set,age,xueli) 106 107 #10,對第9題升級:支持用戶持續輸入,Q或者q退出,性別默認為 108 # 男,如果遇到女學生,則把性別輸入女。 109 110 def cunchu(name, age, xueli, set = '男'): 111 with open('student_msg', 'a', encoding='utf-8') as f: 112 f.write(''' name:%s 113 set:%s 114 age:%s 115 xueli:%s\n''' % (name, set, age, xueli)) 116 return 117 while 1: 118 end = input('輸入Q或q退出,輸入其他任意鍵繼續運行:').upper() 119 if end =='Q': 120 break 121 name = input('名字:') 122 set1 = input('性別:') 123 age = input('年齡:') 124 xueli = input('學歷:') 125 if set == '男': 126 cunchu(name, age, xueli) 127 else: 128 cunchu(name, age, xueli,set=set1) 129 130 # 11,寫函數,用戶傳入修改的文件名,與要修改的內容,執行函數, 131 # 完成整個文件的批量修改操作(升級題)。 132 with open('test4.txt',mode='w',encoding='utf-8') as f: 133 f.write('''alex是老男孩python發起人,創建人。 134 alex其實是人妖。 135 誰說alex是sb? 136 你們真逗,alex再牛逼,也掩飾不住資深屌絲的氣質。''') 137 def wenjian(name, old, new): 138 import os 139 with open(name,mode='r',encoding='utf-8') as f,\ 140 open(name+'_new',mode='w',encoding='utf-8') as f1: 141 for line in f: 142 line =line.replace(old, new) 143 f1.write(line) 144 os.remove(name) 145 os.rename(name+'_new.txt',name) 146 147 # 12,寫一個函數完成三次登陸功能,再寫一個函數完成注冊功能 148 dic = {'123':'123'} 149 def denglu(): 150 print('開始登錄') 151 times = 3 152 while times >0: 153 username = input('用戶名:').strip() 154 password = input('密碼:').strip() 155 if (username in dic) and (password == dic[username]): 156 print('登錄成功') 157 break 158 else: 159 print('輸入錯誤!') 160 times -= 1 161 162 def zhuce(): 163 print('開始注冊') 164 username1 = input('請輸入你想注冊的用戶名:') 165 password1 = input('請輸入您的密碼:') 166 dic[username1] = password1 167 return dic 168 169 zhuce() 170 denglu()