- 函数
- 概念:对功能的封装
- 格式: def 函数文件名(形参列表):\n 函数体(return)\n 调用:函数名(实参)
- return
- 函数在运行过程中遇到return,程序停止,随即返回return后的值
- 1函数中没有return,或者return后没有值,返回None
- 2函数中间如果有return,但是没有指定返回的值,返回None
- 3函数中有return 值 , 返回指定的值
- 参数:函数执行的时候给函数传递信息
- 形参:定义函数过程中,函数名位置设置的变量
- 位置参数
- 默认参数,先位置参数后
- 动态参数
- 实参:函数调用过程中赋予的值
- 位置参数,按照形参的位置赋值
- 关键字参数,按照形参的名字给形参传值
- 混合参数:即用位置参数也用关键字参数(位置参数在前,关键字参数在后)
- 传参:函数调用过程中,把实参赋予形参的过程
- 形参:定义函数过程中,函数名位置设置的变量
习题
2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
# def jishu(tools):
# l = []
# for i in range(len(tools)):
# if i % 2 != 0:
# l.append(tools[i])
# return l
# s = jishu([1,2,3,4,5,6,7])
# print(s)
# 3写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
# def ms(tools):
# a = len(tools)
# if a >5:
# return "max"
# else:
# return "min"
# s = ms("1,2,3,4,56,6,")
# print(s)
#
# 4写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
# def chang(tools):
# l = []
# for i in range(len(tools)):
# if len(tools) > 2:
# l.append(tools[i])
# return l[0], l[1]
# s = chang([1,2,3,4,5,6,7])
# print(s)
# 5写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
# def panduan(tools):
# s = 0
# z = 0
# k = 0
# q = 0
# for i in tools:
# if i.isdigit() == True:
# s+=1
# elif i.isalpha() == True:
# z+=1
# elif i==" ":
# k+=1
# else:
# q+=1
# return ("数字出现%s次字母出现%s次空格出现%s次其他出现%s次"%(s,z,k,q,))
# s=panduan("1,2,3,3,' 'a,s,dsadasd@#$")
# print(s)
#6写函数,接收两个数字参数,返回比较大的那个数字。
# def shuzi():
# a = int(input("请输入一个数字:"))
# b = int(input("请再输入一个数字:"))
# if a > b:
# return a
# elif b > a:
# return b
# else:
# return "一样大"
# s =shuzi()
# print(s)
# 7写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# def duan(dic):
# for i in dic.keys():
# if len(dic[i]) > 2:
# dic[i] = dic[i][0:2]
# return dic
# z = duan({"k1": "v1v1", "k2": [11,22,33,44]})
# print(z)
# 8写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
# def fan(tools):
# dic = {}
# if isinstance(tools, list):
# for i in range(len(tools)):
# dic[i] = tools[i]
# return dic
# z=fan([1,2,3,4,5])
# print(z)
# 9写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
# def student(name,sex,age,edu):
# f = open("student-msg",mode="w",encoding="utf-8")
# f.write("姓名:%s\n性别:%s\n年龄%s\n学历:%s"%(name,sex,age,edu))
# f.flush()
# f.close()
# student("wangjun","man","24","研究生")
# # 10对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
# def student(name,age,edu,sex="男"):
# f = open("student-msg",mode="a",encoding="utf-8")
# f.write("姓名:%s\n年龄%s\n学历:%s\n性别:%s\n"%(name,age,edu,sex))
# f.flush()
# f.close()
# while 1:
# yonghu=input("请输入学生信息,输出q退出;")
# if yonghu.lower()=='q':
# break
# n = input("输入名字:")
# a = input("输入年龄:")
# e = input("输入学历:")
# s = input("输入性别:")
# if s == "":
# student(n,a,e)
# else:
# student(n,a,e,s)
11,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。
def func(filename, old, new):
# # import os
# # with open(filename, mode="r", encoding="utf-8") as f1, \
# # open("filename_副本", mode="w",encoding="utf-8") as f2:
# # for line in f1:
# # s = line.replace(old,new)
# # f2.write(s)
# # os.remove(filename)
# # os.rename("filename_副本",filename)
# # func("a1.txt","wohenhao","i m not good")