1、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def func(lis):
new_lis = lis[1::2]
return new_lis
print(func(['Kevin', 'Jose', 'Loki', 'Delia']))
print(func(('Kevin', 'Jose', 'Loki', 'Delia')))
# 运行结果:
['Jose', 'Delia']
('Jose', 'Delia')
2、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def obj_len(obj):
return len(obj) > 5
if obj_len('Congratulation!'):
print("'Congratulation!'的长度大于5。")
else:
print("'Congratulation!'的长度小于或等于5。")
if obj_len(['Kevin', 'Jose', 'Loki', 'Delia']):
print("['Kevin','Jose', 'Loki', 'Delia']的长度大于5。")
else:
print("['Kevin','Jose', 'Loki', 'Delia']的长度小于或等于5。")
if obj_len((1, 2, 3, 4, 5, 6)):
print("(1, 2, 3, 4, 5, 6)的长度大于5。")
else:
print("(1, 2, 3, 4, 5, 6)的长度小于或等于5。")
# 运行结果:
'Congratulation!'的长度大于5。
['Kevin','Jose', 'Loki', 'Delia']的长度小于或等于5。
(1, 2, 3, 4, 5, 6)的长度大于5。
3、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def list_len(lis):
return lis[:2]
print(list_len(['Kevin','Jose', 'Loki', 'Delia']))
print(list_len([1, 2, 3, 4, 5, 6]))
# 运行结果:
['Kevin', 'Jose']
[1, 2]
4、写函数,计算传入字符串中【数字】、【字母】、【空格】以及【其他】的个数,并返回结果。
def obj_num(s):
total = {
'digit': 0,
'alpha': 0,
'space': 0,
'other': 0
}
for i in s:
if i.isdigit():
total['digit'] += 1
elif i.isalpha():
total['alpha'] += 1
elif i.isspace():
total['space'] += 1
else:
total['other'] += 1
return total
print('"lhhlk2232kj hkd 23 =-=-"中【数字】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['digit']))
print('"lhhlk2232kj hkd 23 =-=-"中【字母】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['alpha']))
print('"lhhlk2232kj hkd 23 =-=-"中【空格】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['space']))
print('"lhhlk2232kj hkd 23 =-=-"中【其他】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['other']))
# 运行结果:
"lhhlk2232kj hkd 23 =-=-"中【数字】的个数 = 6
"lhhlk2232kj hkd 23 =-=-"中【字母】的个数 = 10
"lhhlk2232kj hkd 23 =-=-"中【空格】的个数 = 3
"lhhlk2232kj hkd 23 =-=-"中【其他】的个数 = 4
5、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
def have_space(obj):
if type(obj) is str:
if obj:
for i in obj:
if i.isspace():
return True
else:
continue
return False
else:
return True
elif type(obj) is list or tuple:
if obj:
for i in obj:
if i == [] or i == () or i == '':
return True
else:
continue
return False
else:
return True
else:
print('传入的对象不正确,请传入字符串、列表或元组!')
print('""中是否含有空内容:{}'.format(have_space("")))
print('"kdfjk kjdfk"中是否含有空内容:{}'.format(have_space("kdfjk kjdfk")))
print('"jfosifjosidf"中是否含有空内容:{}'.format(have_space("jfosifjosidf")))
print('[]中是否含有空内容:{}'.format(have_space([])))
print('["Kevin","Jose",""]中是否含有空内容:{}'.format(have_space(["Kevin", "Jose", ""])))
print('["Kevin","Jose","Loki"]中是否含有空内容:{}'.format(have_space(["Kevin", "Jose", "Loki"])))
print('()中是否含有空内容:{}'.format(have_space(())))
print('("Kevin","Jose","")中是否含有空内容:{}'.format(have_space(("Kevin", "Jose", ""))))
print('("Kevin","Jose","Loki")中是否含有空内容:{}'.format(have_space(("Kevin", "Jose", "Loki yao"))))
# 运行结果:
""中是否含有空内容:True
"kdfjk kjdfk"中是否含有空内容:True
"jfosifjosidf"中是否含有空内容:False
[]中是否含有空内容:True
["Kevin","Jose",""]中是否含有空内容:True
["Kevin","Jose","Loki"]中是否含有空内容:False
()中是否含有空内容:True
("Kevin","Jose","")中是否含有空内容:True
("Kevin","Jose","Loki yao")中是否含有空内容:False
6、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def value_len(dic):
for i in dic:
dic[i] = dic[i][:2]
return dic
print(value_len({"k1": "v1v1", "k2": [11,22,33,44]}))
# 运行结果:
{'k1': 'v1', 'k2': [11, 22]}
7、写函数,接收两个数字参数,返回比较大的那个数字。
方法一:
def max_num(a,b):
if a > b:
return a
else:
return b
print('5和10中较大的数字是:{}'.format(max_num(5,10)))
print('15和12中较大的数字是:{}'.format(max(15,12)))
# 运行结果:
5和10中较大的数字是:10
15和12中较大的数字是:15
方法二:
def max_num(a,b):
return a if a > b else b
print('5和10中较大的数字是:{}'.format(max_num(5,10)))
print('15和12中较大的数字是:{}'.format(max(15,12)))
# 运行结果:
5和10中较大的数字是:10
15和12中较大的数字是:15
8、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。
def modify_file(filename,old,new):
with open(filename, encoding = 'utf-8') as f1, open('%s.bak'%filename, 'w', encoding= 'utf-8') as f2:
for line in f1:
if old in line:
line = line.replace(old,new)
f2.write(line)
import os
os.remove(filename)
os.rename('%s.bak'%filename,filename)
modify_file('test.txt', '刘德华', '张学友')
9、写函数,接收n个数字,求这些参数数字的和。
def total(*args):
total = 0
for i in args:
total += int(i)
return total
print('2,4,6,7,8,10,23中所有数字的求和结果是:{}'.format(total(2,4,6,7,8,10,23)))
# 运行结果:
2,4,6,7,8,10,23中所有数字的求和结果是:60
10、用面向函数的思想完成购物车作业:
函数一:实现三次登录功能
函数二:实现新用户注册功能
函数三:购物车功能
进阶任务:将购物功能拆分成多个函数
网友评论