python函式練習題
1) 整理函式相關知識點,寫部落格。
”’
1、函式的定義:將可重複使用的,實現某種功能的程式碼段組織在一起
2、函式的語法:
def 函式名(引數):
函式體
return
2.1、函式名是一個變數,因此命名規則需遵守變數命名規則
3、函式的呼叫
函式名()
4、函式的返回值
return 可空、None、單個、多個以tuple返回給呼叫者
5、函式的引數:
函式定義時宣告的變數的叫形參
1、位置引數
2、預設引數
函式呼叫時傳給函式的叫實參
1、位置引數
定義多少個,呼叫時也必須傳多少個
2、關鍵字引數
3、混合引數
位置引數需在關鍵字引數之前
”’
2) 寫函式,檢查獲取傳入列表或元組物件的所有奇數位索引對應的元素,並將其作為新列表返回給呼叫者。
print('first'.center(40, '='))
def a3(arg):
ret = [ ]
for i in range(len(arg)):
if i % 2 == 1:
ret.append(arg[i])
else:
pass
return ret
li = [11,22,33,44,55]
r = a3(li)
print(li)
print(r)
3) 寫函式,判斷使用者傳入的物件(字串、列表、元組)長度是否大於5。
print('first'.center(40, '='))
def fun1(n):
print('判斷傳入物件的長度是否大於5')
if len(n) >= 5:
return True
else:
return False
content = input('請輸入內容:')
print(fun1(content))
4) 寫函式,檢查傳入列表的長度,如果大於2,那麼僅保留前兩個長度的內容,並將新內容返回給呼叫者。
dic = {"k1" : "v1v1", "k2": [11,22,33,44]}
def a4(arg):
ret = {}
for key, value in arg.items():
if len(value) > 2:
ret[key] = value[0:2]
else:
ret[key] = value
return ret
r = a4(dic)
print(r)
5) 寫函式,計算傳入函式的字串中,[數字]、[字母]、[空格] 以及 [其他]的個數,並返回結果。
def count(s):
dict = {'數字的個數:':0, '字母的個數:':0, '空格的個數:':0, '其他的個數:':0}
for i in s:
if i.isdigit():
dict['數字的個數:'] += 1
elif i.islower() or i.isupper():
dict['字母的個數:'] += 1
elif i.isspace():
dict['空格的個數:'] += 1
else:
dict['其他的個數:'] += 1
return dict
str = input('請輸入內容:')
res = count(str)
print(res)
注漢字isalpha判斷它為字母
6)寫函式,接收兩個數字引數,返回比較大的那個數字。
print('first'.center(40, '='))
def num(a,b):
if a > b:
return a
else:
return b
r = num(1,2)
print(r)
7),寫函式,檢查傳入字典的每一個value的長度,如果大於2,那麼僅保留前兩個長度的內容,並將新內容返回給呼叫者。
dic = {“k1”: “v1v1”, “k2”: [11,22,33,44]}
PS:字典中的value只能是字串或列表
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
def a4(arg):
ret = {}
for key, value in arg.items():
if len(value) > 2:
ret[key] = value[0:2]
else:
ret[key] = value
return ret
r = a4(dic)
print(r)
8)寫函式,此函式只接收一個引數且此引數必須是列表資料型別,
此函式完成的功能是返回給呼叫者一個字典,此字典的鍵值對為此列表的索引及對應的元素。
例如傳入的列表為:[11,22,33] 返回的字典為 {0:11,1:22,2:33}。
def ret_dic(l):
dic = {}
if type(l) == list: # 判斷型別,如果用is not 判斷的是記憶體地址
for k, v in enumerate(l):
dic[k] = v
return dic
# 避免為空,return必須要返回的是個物件,故需要把return放帶外面
# 如果傳給的是空列表或其他型別的資料,不能返回None
teacher_answer
def ret_dic2(lis):
dic = {}
if type(lis) == list:
for index in lis:
dic[index] = lis[index]
return dic # *******important
9)寫函式,函式接收四個引數分別是:姓名,性別,年齡,學歷。
使用者通過輸入這四個內容,然後將這四個內容傳入到函式中,此函式接收到這四個內容,將內容追加到一個student_msg檔案中。
def input_file(name, sex, age, education):
with open(“student_msg”, “a”, encoding=”UTF-8”) as f:
li = “\t”.join([name, sex, age, education])
f.write(li+”\n”)
name = input(“請輸入您的姓名:”)
sex = input(“請輸入您的性別:”)
age = input(“請輸入您的年齡:”)
education = input(“請輸入您的學歷:”)
input_file(name, sex, age, education)
10)對第9題升級:支援使用者持續輸入,Q或者q退出,性別預設為男,如果遇到女學生,則把性別輸入女。
def input_file(name,age, education,sex="男"):
with open(name, "a+", encoding= "UTF-8" ) as f:
s = "\t".join([name, sex, age, education])
f.write(s +"\n")
# nr=s +"\n"
# f.write(nr)
while 1:
name = input("請輸入您的姓名(輸入q或Q退出):")
if name.strip().upper() == "Q":
break
else:
sex = input("請輸入您的性別(預設為男,回車即可):")
age = input("請輸入您的年齡:")
education = input("請輸入您的學歷:")
if sex == "女":
input_file(name,age, education,sex )
else:
input_file(name,age, education)
print("輸入成功")
break
11)寫函式,使用者傳入修改的檔名,與要修改的內容,執行函式,完成整個檔案的批量修改操作(升級題)。
def change_file(file_name, old_mesg, chang_mesg):
with open(“file_name”,”r”,encoding=”UTF-8”) as f1,\
open(“temp_file”,”w”,encoding=”UTF-8”) as f2:
for line in f1:
line = line.replace(old_mesg, chang_mesg)
f2.write(line)
import os
os.remove(file_name)
os.rename(“temp_file”, file_name)
12,寫一個函式完成三次登陸功能,再寫一個函式完成註冊功能(升級題)
user_name = 13321
password = 133211
def login():
for i in range(0,3):
name = int(input('請輸入賬號:'))
if name == user_name:
psw = int(input('請輸入密碼:'))
if psw == password:
print('登入成功'.center(40, '='))
return
else:
print('密碼錯誤'.center(40, '='))
if i == 2:
print('您的機會已用完,請12小時之後再試')
else:
print('您還有%s次機會' % (2 - i))
else:
print('賬號不存在'.center(40, '='))
if i == 2:
print('您的機會已用完,請12小時之後再試')
else:
print('您還有%s次機會' % (2 - i))
res = login()
def regist():
while 1:
print('請註冊'.center(40, '='))
re_name = int(input('請輸入賬號:'))
if re_name == user_name:
print(''.center(40, '='))
else:
re_psw = int(input('請輸入密碼:'))
return '註冊成功'.center(40, '=')
re = regist()
print(re)