1,整理函数相关知识点,写博客。
函数:
- 函数是组织好的,可以被重复使用的,实现单一或者相关联功能的代码块.
- 函数能提高应用的模块性,和代码的重复利用率.python提供了很多内置函数,但你也可以自己创建函数,这被叫在用户自定义函数.
函数的定义:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def shuju(li): lst=[] for c in range(len(li)): if c%2!=0: lst.append(li[c]) return lst
3,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def long(long): if len(long)>5: return True else: return False print(long("aaaaaaaa"))
4,写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
def long(long): if len(long)>2: return long[0:2]
5,写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
def ceshi(shuru): shuzi,zimu,kongge,qita=0,0,0,0 for i in shuru : if i.isdigit(): shuzi +=1 elif i.isalpha(): zimu +=1 elif i==" ": kongge +=1 else: qita +=1 return "你输入的共有"+str(shuzi)+"个数字",str(zimu)+"个字母",str(kongge)+"个空格","其它的个数是"+str(qita) print(ceshi("qwer1234 我不是字母啊"))
6,写函数,接收两个数字参数,返回比较大的那个数字。
def bidaxiao(a,b): if type(a)==int and type(b)==int: if a>b: return a elif a<b: return b else: return "只能输入数字,请重新输入" print(bidaxiao(2,2))
7,写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def hanshu(i): dict={} for k,v in i.items(): if type(v)==list or type(v)==str: if len(v)>2: dict[k]=v[0:2] return dict print(hanshu({"k1": "v1v1", "k2": [11,22,33,44]}))
8,写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
def hanshu(i): dict={} num=0 for c in i: dict[num]=c num +=1 return dict print(hanshu([11,22,33]))
9,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
def hanshu(name,age,sex,xueli): s=open('student_msg',mode="w",encoding='utf-8') s.write('姓名:%s,年龄:%s,性别:%s,学历:%s' %(name,age,sex,xueli)) return s print(hanshu("张三",18,"男",1))
10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
def hanshu(): while 1 : i = input('任意键录入学生信息系统(Q键退出)') if i.upper()=="Q": break else: name=input('请输入姓名:') age=input('请输入年龄:') xueli=input('请输入学历:') sex=input("请输入性别;") if sex=="": s=open('student_msg1',mode="a+",encoding='utf-8') s.write('姓名:%s,年龄:%s,学历:%s,性别:男' %(name,age,xueli)) else: s = open('student_msg1', mode="a+", encoding='utf-8') s.write('姓名:%s,年龄:%s,学历:%s, 性别:%s' % (name, age, xueli,sex)) return s print(hanshu())
11,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。
def xiugai(a,b,c): import os with open("a",mode="r",encoding="utf-8") as f1, open("a1",mode='w',encoding='utf-8') as f2: for line in f1: new_line=line.replace(b,c) f2.write(new_line) os.remove("a") os.rename("a1","a") print(xiugai("a","an","1"))
12,写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)
def login(): for i in range(3): name=input("请输入用户名:") password=input("请输入密码:") if name in dic.keys(): if dic[name]== password: print("登录成功") return True else: print("用户名或密码错误,你还有%s次输入机会" % (2-i)) else: print("用户不存在") return False #s=login() #print(s) #注册 dic={"白白":123456,"张张":456789,"丽丽":112233,"小梅":445566} def register(): while 1: username = input('请输入用户名:') if username.upper() == "Q": return False if username in dic.keys(): print("用户名已存在,请重新输入.") else: break while 1: password = input("请输入6位由字母和数字组成的密码:") if password.upper() == "Q": return False if len(password) == 6: if password.isalnum() : psw = input("请再次确认你的密码:") if password == psw: dic[username] = password return True else: print("密码不一致") else: print("密码中包含不合法字符.") else : print("密码长度不合法") #print(register()) #*****菜单 dic={"白白":123456,"张张":456789,"丽丽":112233,"小梅":445566} while 1: choice=input("请选择:1.注册,2.登录,3.退出: ") if choice == "1": result1=register() if result1 : result12=login() else: break elif choice == "2": result1=login() break elif choice == "3": print("退出成功") break else: print("输入不合法,请重新输入.")