day007-python函数之课后作业讲解
作业一:
需求:写函数,计算传入字符串中的【数字】、【字母】、【空格】以及【其他】的个数
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 #先定义一个函数
5 def func(args):
6 #定义一个计算数字的变量
7 digit_num = 0
8 # 定义一个计算字母的变量
9 al_num = 0
10 # 定义一个计算空格的变量
11 spance_num = 0
12 # 定义一个计算其他的变量
13 other_num = 0
14
15 for i in args:
16 if i.isdigit(): #判断是否为数字
17 digit_num += 1
18 elif i.isalpha(): #判断是否为字母
19 al_num += 1
20 elif i.isspace(): #判断是否为空格
21 spance_num += 1
22 else: #判断是否为其他
23 other_num += 1
24 return ("您输入的字符串中包含" + str(digit_num) + "个数字,包含" + str(al_num) + "个字母,包含" + str(spance_num) +"个空格,包含" + str(other_num) + "个其他字符。")
25 #提示用户输入字符串信息
26 enter = input("请您输入字符串信息进行计算:")
27 ret = func(enter)
28 print(ret)
作业二:
需求:写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5.
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 def obj_len(arg):
5 #在这里先对用户输入的内容进行判断,是否为字符串、列表、元组
6 if isinstance(arg, str) or isinstance(arg, list) or isinstance(arg, tuple):
7 if len(arg) > 5:
8 return"您输入的内容长度大于5."
9 else:
10 return"您输入的内容长度小于5."
11 return"您输入的内容不符合要求。"
12
13 enter = "kljdsah" #输入字符串
14 #enter = [11,22,33] 输入列表
15 #enter = (897,658,9879) 输入元组
16 #enter = 123 输入的数字,输出结果为您输入的内容不符合要求。
17 ret = obj_len(enter)
18 print(ret)
作业三:
需求:写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否包含有空内容。
1 def has_space(args):
2 for i in args:
3 if i.isspace():
4 return "您输入的内容中包含有空格!"
5 break
6 return args
7 result = str(input("请输入检查的内容:"))
8 ret = has_space(result)
9 print(ret)
作业四:
需求:写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
1 def function4(args):
2 if len(args) > 2:
3 return args[0:2] #采用切片的方式给用户返回前两个长度的内容
4 return args
5 result = [11,22,33]
6 ret = function4(result)
7 print(ret)
函数参数传递引用特例一:在ptyhon中,对于列表、字典以及集合,在传递函数参数时,实际是传递一个引用
1 def func1(args):
2 args.append(123)
3
4 li = [11,22]
5 func1(li)
6 print(li) ==》结果为[11,22,123]
7 #说明:在内存中,已存在li = args = [11,22],函数中,args.append(123)
8 #所以最终的返回的结果为[11,22,123]
函数参数传递引用特例一:一旦遇到等于号,就会在内存中新创建并重新指向这个内容
1 def func2(args):
2 args = 123
3
4 li = [11,22,33,44]
5 func2(li)
6 print(li) #结果为[11,22,33,44],不会受到args的影响,因为args已重新指向新的内容
作业五:
需求:写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者
1 def function5(args):
2 ret = [] #定义一个新的列表
3 for i in range(len(args)):
4 if i % 2 == 1:
5 ret.append(args[i])
6 else:
7 pass
8 return ret
9
10 li = [11,22,33,44,55]
11 result = function5(li)
12 print(result)
作业六:
需求:写函数,检查传入字典的每一个value的长度,如果大于2, 那么仅保留前两个长度的内容,并将其作为新内容返回给调用者
方式一:创建一个变量,把遍历符合条件的内容返回
1 def function6(args):
2 ret = {}
3 for key, value in args.items():
4 if len(value) > 2:
5 ret[key] = value[0:2]
6 else:
7 ret[key] = value
8 return ret
9
10 dic = {"k1":"vdah", "k2": [11,22,33], "k3": "qw"}
11
12 result = function6(dic)
13 print(result)
方式二:在原来的字典中修改值,并返回给调用者
1 def function(args):
2 for key, value in args.items():
3 if len(value) > 2:
4 args[key] = value[0:2]
5 else:
6 args[key] = value
7
8 dic = {"k1":"vdah", "k2": [11,22,33], "k3": "qw"}
9 function(dic)
10 print(dic) #打印原来的字典