#1、继续整理函数相关知识点,画思维导图,写博客
#2、写函数,接收n个数字,求这些参数数字的和
def sum_func(*args):
total = 0
for i in args:
total += i
return total
print(sum_func(1,2,3,8,23,6)) #43
#3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a = 10
b = 20
def test5(a,b):
print(a,b) #20 10
c = test5(b,a)
print(c) #None
#4、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a = 10
b = 20
def test5(a,b):
a = 3
b = 5
print(a,b) #3 5
c = test5(b,a)
print(c) #None
#选做题:
#5、用面向函数的思想完成购物车作业
#函数一:实现三次登录功能
#函数二:实现新用户注册功能
#函数三:购物功能
#进阶任务:将购物功能拆分成多个函数
#默写作业:
def outer():
a = 1
def inner()
print(a)
return inner
inn = outer()
inn()
预习作业:
#装饰器的博客 http://www.cnblogs.com/Eva-J/articles/7194277.html
#写函数,检查获取传入的列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者
def func(l):
return l[1::2] # 切片的用法
print(func([1,2,3,4,5,6,7,8])) #[2, 4, 6, 8]
#写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5.
def func(x):
return len(x)>5
print(func('abcdefg')) #True
print(func('abcd')) #False
print(func([1,2,3,4,5,6])) #True
print(func((1,2,3,4))) #False
#写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
def func(l):
return l[:2]
print(func([1,2,3,4])) #[1, 2]
#写函数,计算传入字符串中【数字】、【字母】、【空格】以及【其它】的个数,并返回结果
def func(s):
dic = {'num':0,'alpha':0,'space':0,'other':0}
for i in s:
if i.isdigit():
dic['num'] += 1
elif i.isalpha():
dic['alpha'] += 1
elif i.isspace():
dic['space'] += 1
else:
dic['other'] += 1
return dic
print(func(' +23drfk87k hd-aGb& f')) #{'num': 4, 'alpha': 11, 'space': 3, 'other': 3}
#写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果
#'sakjdkj kjshd'
#[1,2,3,'',[],' ',(),'sdf sdfe']
#(1,2,3,'',[])
def func(x):
if type(x) is str and x:
for i in x:
if i == ' ':
return True
return False
elif x and type(x) is list or type(x) is tuple:
for i in x:
if not i:
return True
return False
elif not x:
return True
else:
return False
print(func('sakjdkj kjshd')) #True
print(func('sakjdkjkjshd')) #False
print(func([1,2,3,'',[],' ',(),'sdf sdfe'])) #True
print(func([1,2,3])) #False
print(func([1,2,3,''])) #True
print(func([1,2,3,' '])) #False
print(func([1,2,3,[]])) #True
print(func([1,2,3,()])) #True
#写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个的内容,并将新内容返回给调用者
# dic = {'k1':'v1v1','k2':[11,22,33,44]}
# ps:字典中的value只能是字符串或列表
def func(dic):
for k in dic:
if len(dic[k])>2:
dic[k] = dic[k][:2]
return dic
dic = {'k1':'v1v1','k2':[11,22,33,44]}
print(func(dic)) #{'k1': 'v1', 'k2': [11, 22]}
#写函数,接收两个数字参数,返回比较大的那个数字
def func(a,b):
if a>b:
return a
else:
return b
print(func(1,4)) #4
def func(a,b):
return a if a>b else b
print(func(1,4)) #4
#写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)
def func(filename,old,new):
with open(filename,encoding='utf-8') as f,open('%s.bak' % filename,'w',encoding='utf-8') as f2:
for line in f:
if old in line:
line = line.replace(old,new)
f2.write(line)
import os
os.remove(filename) #删除文件
os.rename('%s.bak' % filename,filename) #重命名文件
#写一个函数完成三次登录功能,再写一个函数完成注册功能