函数的定义:将可重复使用的,实现某种功能的代码段组织在一起
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+'
')
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 = " ".join([name,sex,age,education])
f.write(li+"
")
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
'% 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('{} {}
'.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,登录
2,注册')
while True:
choice = input('请输入序号:').strip()
if choice == '1':
print(login())
break
elif choice == '2':
print(register())
print(login())
break
else:
print('输入有误,请重新输入选择!')