函數: 初識函數def()


上一篇有福利哦 嘿嘿嘿!

 

 

內容回顧:
  文件操作:
    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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM