作业1
1.编写函数,求1+2+3+…N的和
# 如果生成了一个新的数据,用返回值
def n_sum(nums):
sum1 = 0
for num in range(1, nums + 1):
sum1 += num
return sum1
def 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 random
def 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 = 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 str1
print(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 == str2
if 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 True
print(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_str1
print(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 + str1
print(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 indexs
names = ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']
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 count
print(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 max1
print(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方法)
例如:{'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.返回
请选择: