梦想一步登天

导航

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)
View Code

 

作业二:

需求:写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于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)
View Code

 

作业三:

需求:写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否包含有空内容。
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)
View Code

 

作业四:

需求:写函数,检查传入列表的长度,如果大于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)
View Code

 

函数参数传递引用特例一:在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]
View Code

 

函数参数传递引用特例一:一旦遇到等于号,就会在内存中新创建并重新指向这个内容
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已重新指向新的内容
View Code

 

作业五:

需求:写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者
 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)
View Code

 

作业六:

  需求:写函数,检查传入字典的每一个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)
View Code

  方式二:在原来的字典中修改值,并返回给调用者

 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)  #打印原来的字典
View Code

 

posted on 2019-09-19 23:36  梦想一步登天  阅读(400)  评论(0编辑  收藏  举报