Day10-task

作业1 1.编写函数,求1+2+3+…N的和

# 如果生成了一个新的数据,用返回值 def n_sum(nums): sum1 = 0 for num in range(1, nums + 1): sum1 += num return sum1def lcx_sum1(nums): return sum(range(1, nums +1))print(n_sum(3)) print(lcx_sum1(4))

2.编写一个函数,求多个数中的最大值
def nums_max(*nums): return max(nums)print(nums_max(34, 56, 8, 3))

3.编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
import randomdef point_sum(nums): sum1 = 0 for i in range(nums): a = random.randint(1, 6) sum1 += a # sum1 += random.randint(1, 6) print(sum1)point_sum(4)

4.编写一个函数,交换指定字典的key和value。 例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}
dict1={'a':1, 'b':2, 'c':3} def exchange_k_v(dictx: dict): # 注意:遍历删除和增加,遍历对象应该原来没有进行修改的元容器的值 for key in dictx.copy(): value = https://www.it610.com/article/dictx[key] dictx.pop(key) dictx[value] = key print(dict1)exchange_k_v(dict1)

5.编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串 例如: 传入'12a&bc12d-+' --> 'abcd'
def extract_string(str1): list1 = [] for i in str1: if 'A' <= i <= 'Z' or 'a' <= i <= 'z': list1.append(i) return ''.join(list1)print(extract_string('12a&bc12d-+'))

6.写一个函数,求多个数的平均值
def nums_avg(*nums): sum1 = 0 for num in nums: sum1 += num print('这些数的平均值是:', sum1 / len(nums))nums_avg(1, 2, 3, 4, 5, 6)

7.写一个函数,默认求10的阶乘,也可以求其他数字的阶乘
def factorial(num = 10): sum1 = 1 for n in range(1, num + 1): sum1 *= n print(sum1)factorial()

**注意:以下方法不能使用系统提供的方法和函数,全部自己写逻辑 **
8.写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母 例如: 'abc' -> 'Abc' '12asd' --> '12asd'
def lcx_capitalize(str1): if 'a' <= str1[0] <= 'z': new_char = chr(ord(str1[0]) - 32) new_str1 = new_char + str1[1:] return new_str1 else: return str1print(lcx_capitalize('asd'))

9.写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束 例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
def lcx_endswith(str1, str2): list1 = []# 存储第一个字符串的最后几位 list2 = []# 存储第二个字符串的列表 if str2 in str1:# 如果字符串1包含字符串2就进入循环 for i in str1[-1:-(len(str2) + 1):-1]:# 遍历字符串1,从最后一位到字符串2的长度的那位字符 list1.append(i)# 依次加入列表1 # print(list1) for j in str2[-1::-1]:# 遍历字符串2 ,从最后一位开始向左遍历 list2.append(j)# 依次加入列表2 # print(list2) if list1 == list2:# 对列表1和列表2 进行比较 print('True') else: print('False') else: print('False')lcx_endswith('abc231ab', 'ab1')

def endswith(str1: str, str2: str): len2 = len(str2) end = str1[-len2:] return end == str2if endswith('text.py', '.py'): print('是python源文件') else: print('不是python源文件')

10.写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串 例如: '1234921' 结果: True
'23函数' 结果: False
'a2390' 结果: False
def lcx_isdigit(str1): for i in str1: if i < '0' or i > '9': print('False') break else: print('True')lcx_isdigit('1234921')

def lcx_isdigit1(str1): for char in str1: if not '0' <= char <= '9': return False return Trueprint(lcx_isdigit1('2ag4557'))

11.写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母 例如: 'abH23好rp1' 结果: 'ABH23好RP1'
def lcx_upper(str1): new_str1 = '' for char in str1: if 'a' <= char <= 'z': new_char = chr(ord(char) - 32) new_str1 += new_char else: new_str1 += char return new_str1print(lcx_upper('abH23好rp1'))

12.写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充 例如: 原字符:'abc' 宽度: 7 字符:'^' 结果: '^^^^abc'
原字符:'你好吗' 宽度: 5 字符:'0' 结果: '00你好吗'
def lcx_r_just(str1: str, width: int, char: str): count = width - len(str1) return count * char + str1print(lcx_r_just('你好吗', 5, '0')) print(lcx_r_just('abc', 7, '^'))

13.写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1 例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0] 元素: 1 结果: 0,4,6
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '赵云' 结果: 0,4
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '关羽' 结果: -1
def lcx_index(list1: list, item): if item not in list1: return -1 indexs = [] for x in range(len(list1)): if list1[x] == item: indexs.append(x) return indexsnames = ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] print(lcx_index(names, '赵云')) print(lcx_index(names, '关羽'))

14.写一个自己的len函数,统计指定序列中元素的个数 例如: 序列:[1, 3, 5, 6] 结果: 4
序列:(1, 34, 'a', 45, 'bbb') 结果: 5
序列:'hello w' 结果: 7
def lcx_len(nums): """ 实现len函数 :param nums: 序列 :return: """ count = 0 for num in nums: count += 1 return countprint(lcx_len('hello w'))

15.写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值 例如: 序列:[-7, -12, -1, -9] 结果: -1
序列:'abcdpzasdz' 结果: 'z'
序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98} 结果: 98
def lcx_max(seq): if isinstance(seq, dict): values = list(seq.values()) else: values = list(seq) max1 = values[0] for item in values[1:]: if item > max1: max1 = item return max1print(lcx_max([-7, -12, -1, -9])) print(lcx_max('abcdpzasdz')) print(lcx_max({'小明':90, '张三': 76, '路飞':30, '小花': 98}))

16.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在 例如: 序列: (12, 90, 'abc') 元素: '90' 结果: False
序列: [12, 90, 'abc'] 元素: 90 结果: True
def lcx_in(char, *nums): """ 实现in操作 :param char: 元素 :param nums: 序列 :return: """ for num in nums: if char == num: print('True') break else: print('False')lcx_in(90, 12, '90', 'abc')

17.写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串 例如: 原字符串: 'how are you? and you?' 旧字符串: 'you' 新字符串:'me' 结果: 'how are me? and me?'

18.写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能

作业2 1.写一个匿名函数,判断指定的年是否是闰年

2.写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
def lcx_inverted(*nums): """ 逆序 :param nums:序列 :return: """ list1 = [] list2 = list(nums) print(list2) for num in list2[-1::-1]: list1.append(num) print(list1)lcx_inverted(12, 23, 34, 45)

3.写一个函数,获取指定列表中指定元素的下标(如果指定元素有多个,将每个元素的下标都返回) 例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回:0,3

4.写一个函数,能够将一个字典中的键值对添加到另外一个字典中(不使用字典自带的update方法)

5.写一个函数,能够将指定字符串中的所有的小写字母转换成大写字母;所有的大写字母转换成小写字母(不能使用字符串相关方法)
def lcx_upper_lower(str1): new_str1 = '' for char in str1: if 'a' <= char <= 'z': new_char = chr(ord(char) - 32) new_str1 += new_char elif 'A'<= char <= 'Z': new_char = chr(ord(char) + 32) new_str1 += new_char else: new_str1 += char print(new_str1)lcx_upper_lower('abH23好rp1')

6.实现一个属于自己的items方法,可以将自定的字典转换成列表。列表中的元素是小的列表,里面是key和value (不能使用字典的items方法) 【Day10-task】例如:{'a':1, 'b':2} 转换成 [['a', 1], ['b', 2]]

7.写一个函数,实现学生的添加功能:
=============添加学生================ 输入学生姓名: 张胜 输入学生年龄: 23 输入学生电话: 15634223 ===添加成功! '姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001' ===================================== 1.继续 2.返回 请选择: 1 =============添加学生================ 输入学生姓名: 李四 输入学生年龄: 18 输入学生电话: 157234423 ===添加成功! '姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001' '姓名':'李四', '年龄':18, '电话:157234423', '学号':'0002' ===================================== 1.继续 2.返回 请选择:


    推荐阅读