1. 程式人生 > >python函式練習題

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)