day9——函数初识
函数的定义:将可重复使用的,实现某种功能的代码段组织在一起
2、函数的语法:
def 函数名(参数):
函数体
return
2.1、函数名是一个变量,因此命名规则需遵守变量命名规则
3、函数的调用
函数名()
4、函数的返回值
return 可空、None、单个、多个以tuple返回给调用者
5、函数的参数:
函数定义时声明的变量的叫形参
1、位置参数
2、默认参数
函数调用时传给函数的叫实参
1、位置参数
定义多少个,调用时也必须传多少个
2、关键字参数
3、混合参数
位置参数需在关键字参数之前
函数返回值
return: 在函数执行的时候,遇到return就返回
函数后面什么都不写,返回None
函数中只写一个return,会返回None
多个返回值接受到的是元祖
参数:
函数执行的时候给函数传递信息
在函数生命的位置给的变量: 形参
在函数调用的地方给的具体的值:实参
实参
位置参数:按照形参的位置,传值
关键字参数:按照形参的名字给形参传值
混合参数:即用位置参数,也用关键字参数,先位置参数,后关键字参数
形参
位置参数
默认值参数
动态传参
day8——作业
1,整理函数相关知识点,写博客。
2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
① def func(a): l2 = [] for i in range(len(a)): if i % 2 == 1: l2.append(a[i]) return l2 print(func([1,2,3,4,5,6,7])) ② def baba(a): #传完参数以后,现在的 a = [1,2,3,4,5,6,7,8,4,5,6,78,9,8] return a[1::2] #对原列表进行切片形成一个新列表,将新列表返回给调用者 print(baba([1,2,3,4,5,6,7,8,4,5,6,78,9,8])) #爸爸接受return返回的值
3,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
① def func(a): return len(a) > 5 print(func('afdffsfsf')) ② def func(x):return True if len(x) > 5 else False print(func([1,2,3,4,5,6,7]))
4,写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
①: def func(a):return a[:2] if len(a) > 2 else None print(func([1,2,3,4])) ②: def func(a): return a[:2] print(func([1]))
5,写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
def func(a): s = s1 = s2 = s3 = 0 for i in a: if i.isspace(): s += 1 elif i.isalpha(): s1 += 1 elif i.isdigit(): s2 += 1 else: s3 += 1 return ('空格:%s,字母:%s,数字:%s,其他:%s,'%(s,s1,s2,s3)) print(func('fdkls4909fjksj jfkd'))
6,写函数,接收两个数字参数,返回比较大的那个数字。
def func(x,y):return x if x > y else y print(func(10,5))
7,写函数,检查传入字典的每一个value的长度,如果大于2,
那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
① dic = {"k1": "v1v1", "k2": [11,22,33,44]} def func(a): for i in a: a[i] = a[i][:2] return a print(func(dic)) ② dic = {"k1": "v1v1", "k2": [11,22,33,44]} newdic = {} def func(a): for k, v in a.keys(): if len(v) > 2: s = v[0:2] newdic[k] = s else: newdic[k] = v return a print(func(dic))
8,写函数,此函数只接收一个参数且此参数必须是列表数据类型,
此函数完成的功能是返回给调用者一个字典,
此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:
[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
① def func(a): dic = {} if type(a) == list: for k,v in enumerate(a): #枚举法 dic[k] = v return dic print(func([11,22,33,44]))
9,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。
用户通过输入这四个内容,然后将这四个内容传入到函数中,
此函数接收到这四个内容,将内容追加到一个student_msg文件中。
def func(name,sex,age,education): with open("student_msg","a",encoding="utf-8") as f: f.write(name+'_'+sex+'_'+age+'_'+education+'\n') name = input("请输入你的姓名:") gender = input("请输入你的性别:") age = input("请输入你的年龄:") education = input("请输入你的学历:") print(func(name,gender,age,education))
10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
def func(name,age,education,sex="男"): with open("student_msg","a",encoding="utf-8") as f: li = "\t".join([name,sex,age,education]) f.write(li+"\n") flag = 1 while flag: name = input("请输入你的名字(输入q或者Q退出):").strip() if name.strip().upper() == 'Q': flag = 0 break else: sex = input("请输入你的性别(默认为男,回车即可):") age = input("请输入年龄:") education = input("请输入学历") if sex =="女": func(name,age,education,sex) else: func(name,age,education)
11,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。
import os with open('change',encoding='utf-8') as f1,\ open('change.bak',encoding='utf-8',mode="w") as f2: for i in f1: new_line = i.strip().replace('alex','SB') f2.write('%s\n'% new_line) os.remove('change') os.rename('change.bak','change')
12,写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)
def register(): while True: username = input('请输入新帐号:').strip() password = input('请输入新密码:').strip() with open('name_list', encoding='utf-8', mode='a+') as f: f.seek(0) for i in f: i = i.split() if username in i: print('此帐号已存在,请重新注册!') break else: f.write('{}\t{}\n'.format(username, password)) return '注册成功' # print(register()) def login(): num = 1 while num <= 3: username = input('请输入用户名:') password = input('请输入密码:') with open('name_list', encoding='utf-8') as f1: for i in f1: i = i.split() if username in i and password in i: return '登录成功!' else: print('帐号或密码错误,请重新输入! 您还有%s次机会。' % (3 - num)) num += 1 return '登录失败!' # print(login()) print('1,登录\n2,注册') while True: choice = input('请输入序号:').strip() if choice == '1': print(login()) break elif choice == '2': print(register()) print(login()) break else: print('输入有误,请重新输入选择!')