1.编写函数,求1+2+3+…N的和
def sum1(n:int):
"""
求1到n的和
:param n:
:return:
"""
sum2 = 0
for i in range(1, n+1):
sum2 += i
return sum2
sum3 = sum1(10)
print(sum3)
2.编写一个函数,求多个数中的最大值
def max1(*n: int):
"""
求输入数中的最大值
:param n:
:return:
"""
max2 = max(n)
return max2
max3 = max1(1, 2, 3, 9)
print(max3)
3.编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
import random
def sum1(n: int):
"""
求n个骰子的点数和
:param n:
:return:
"""
sum2 = 0
num1 = 0
d = 0
for i in range(n): # 几个骰子,循环几次
d += 1
num1 = random.randint(1, 6) #每次产生一个1到6的随机数
print('第%s个骰子的点数:%s' % (d, num1))
sum2 += num1 # 进行累加
return sum2
s = int(input('输入骰子个数:'))
sum3 = sum1(s)
print('总点数为:', sum3)
4.编写一个函数,交换指定字典的key和value。
例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}
def exchange(**dict1):
"""
使传入的参数变为字典,并交换key和value的值,输出结果
:param dict1:
:return:
"""
for i in dict1:
s = dict1[i]
m = i # 使用2个变量保存当前元素的键值。
del dict1[i]
dict1[s] = i # 删除这个键值对,在创建新的键值对
return dict1
dict2 = exchange(a=1, b=2, c=3)
print(dict2)
5.编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
例如: 传入'12a&bc12d-+' --> 'abcd'
def joint(*str1: str) -> str:
"""
提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
:param str1:
:return:
"""
str2 = ''
print(type(*str1)) # 为什么不能直接使用*str1
str3 = str(*str1) # 转化为字符串赋值给str3
for i in str3:
if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
str2 += i
return str2 # 提取字符串中的字母,并拼接到str2上
str4 = joint('2a3ASSA12fdfsd3')
print(str4)
6.写一个函数,求多个数的平均值
def avg(*num: int) -> int:
"""
输入数的平均值
:param num:
:return:
"""
avg1 = sum(num)/len(num)
return avg1
avg1 = avg(1, 2, 3, 4, 9, 10)
print(avg1)
7.写一个函数,默认求10的阶乘,也可以求其他数字的阶乘
def factorial(num: int) -> int:
"""
求num的阶乘
:param num:
:return:
"""
num2 = 1
for i in range(1, num+1):
num2 *= i # 累乘
return num2
factorial1 = factorial(10)
print(factorial1)
8.写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
例如: 'abc' -> 'Abc' '12asd' --> '12asd'
def capitalize(*str1: str) -> str:
"""
提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
:param str1:
:return:
"""
str3 = str(*str1) # 转化为字符串赋值给str3
if 'a' <= str3[0] <= 'z':
num1 = 65+(ord(str3[0])-97)
list1 = list(str3)
list1[0] = chr(num1) # 获取第一个字母在Unicode表上对应的序号,然后在转换成大写字母的序号。
str2 = ''.join(list1) # 变成字符串的样式
return str2
else:
return str3 # 提取字符串中的字母,并拼接到str2上
str4 = capitalize('g34fdgd23')
print(str4)
9 写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束.
例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
def endswith(str1: str, str2: str):
"""
判断一个字符串是否包含另一个字符串
:param str1:
:param str2:
:return:
"""
count1 = str1.count(str2)
if count1 == 0:
print('False')
else:
print('True')
endswith('adadsad', 'adsd')
10.写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串
例如: '1234921' 结果: True
'23函数' 结果: False
'a2390' 结果: False
def endswith(str1: str)-> str:
"""
判断一个字符串是否是纯数字字符串
:param str1:
:return:
"""
for i in str1: # 遍历字符串中所以的元素,只要是空或者不是纯数字元素组成的字符串输出False,否则输出True
if not('0' <= i <= '9'):
print('False')
break
else:
if str1 == '':
print(False)
else:
print('True')
endswith('12312sdfs')
11.写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母
例如: 'abH23好rp1' 结果: 'ABH23好RP1
def capitalize(str1: str) -> str:
"""
将一个字符串中所有的小写字母变成大写字母
:param str1:
:return:
"""
d = 0
list1 = list(str1)
for i in list1:
if 'a' <= i <= 'z':
num1 = 65+(ord(str1[d])-97)
list1[d] = chr(num1) # 获取字母在Unicode表上对应的序号,然后在转换成大写字母的序号,并修改列表的值。
d += 1
str4 = ''.join(list1)
print(str4)
capitalize('sd42fg45353fa')
12.写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
例如: 原字符:'abc' 宽度: 7 字符:'^' 结果: '^^^^abc'
原字符:'你好吗' 宽度: 5 字符:'0' 结果: '00你好吗'
def rjust(str1: str, wide1: int, str2: str) -> str:
"""
创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
:param str1:
:param wide1:
:param str2:
:return:
"""
str3 = str2*(wide1-len(str1))
print(str3+str1)
rjust('abc', 10, '*')
13.写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0] 元素: 1 结果: 0,4,6
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '赵云' 结果: 0,4
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '关羽' 结果: -1
def index(list1: list, str1: str) -> str:
"""
统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
:param list1:
:param str1:
:return:
"""
d = 0
list2 = []
for i in list1:
if i == str1:
list2.append(str(d))
d += 1
str4 = ','.join(list2)
if list2 == []:
print('-1')
else:
print(str4)
index([1, 2, 3, 'a', '赵云', 'a', 2, '赵云', 1], 1)
14.写一个自己的len函数,统计指定序列中元素的个数
例如: 序列:[1, 3, 5, 6] 结果: 4
序列:(1, 34, 'a', 45, 'bbb') 结果: 5
序列:'hello w' 结果: 7
def len(sequence) -> int:
"""
统计指定序列中元素的个数
:param sequence:
:return:
"""
d = 0
for i in sequence:
d += 1
print(d)
len([1, 2, 3, 'sdfs'])
15.写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
例如: 序列:[-7, -12, -1, -9] 结果: -1
序列:'abcdpzasdz' 结果: 'z'
序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98} 结果: 98
def max(sequence):
"""
获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
:param sequence:
:return:
"""
if type(sequence) == dict: # 当输入为字典时,求最大值
list1 = []
for i in sequence:
list1.append(sequence[i])
print(list1)
s = int(list1[0])
for z in list1[1::]:
if z > s:
s = z
print(s)
elif type(sequence[0]) == int: # 当输入为全为数字的列表
s = int(sequence[0])
for z in sequence[1::]:
if z > s:
s = z
print(s)
else:
s = sequence[0] # 当输入全为字母或数字的字符串
for z in sequence[1::]:
if ord(z) > ord(s):
s = z
print(s)
max('12312312367')
16.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在
例如: 序列: (12, 90, 'abc') 元素: '90' 结果: False
序列: [12, 90, 'abc'] 元素: 90 结果: True
def cunzai(sequence, str1):
"""
判断指定序列中,指定的元素是否存在
:param sequence:
:param str1:
:return:
"""
for i in sequence:
if i == str1:
print(True)
break
else:
print(False)
cunzai((1,2,3,90),'90')
17.写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串
例如: 原字符串: 'how are you? and you?' 旧字符串: 'you' 新字符串:'me' 结果: 'how are me? and me?'`
def replace(str1: str, str2: str, str3: str):
d = 0
s = 0
str5 = ''
list4 = []
for a in str1:
d += 1
if a == str2[0]:
if str1[d-1:d-1+len(str2)] == str2:
list4.append(d-1)
for i in list4:
if i == list4[-1]:
str5 = str5 + str1[s+len(str2):i:]+str3+str1[i+len(str3):-1:]
else:
if i == list4[0]:
str5 = str5 + str1[s:i:]+str3
else:
str5 = str5 + str1[s+len(str2):i:] + str3
s = i
print(str5)
replace('you and you yo you sd youfds', 'you', 'me')
18.写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能
def bingji(list1: list, list2: list):
list3 = list1+list2
print(list3)
bingji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])
def jiaoji(list1: list, list2: list):
list3 = []
list4 = []
for i in list1:
if i in list2:
list3.append(i)
for z in list2:
if z in list1:
list4.append(z)
print(list3+list4)
jiaoji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])
def buji(list1: list, list2: list):
list3 = []
list4 = []
for i in list1:
if i not in list2:
list3.append(i)
for z in list2:
if z not in list1:
list4.append(z)
print(list3 + list4)
buji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])
def chaji(list1: list, list2: list):
list3 = []
for i in list1:
if i not in list2:
list3.append(i)
print(list3)
chaji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])
19.写一个匿名函数,判断指定的年是否是闰年
def years(num: int):
"""
判断指定的年是否是闰年
:param num:
:return:
"""
if (num % 4 == 0 and num % 100 != 0) or num % 400 == 0:
print('输入的年份为闰年')
else:
print('输入的年份不为闰年')
years(2001)
20.写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
def reversed(list1: list):
"""
将一个指定的列表中的元素逆序
:param list1:
:return:
"""
list2 = []
for i in list1[::-1]:
list2.append(i)
print(list2)
reversed([1, 2, 3, 4])
21.写一个函数,获取指定列表中指定元素的下标(如果指定元素有多个,将每个元素的下标都返回)
例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回:0,3
def appoint(list1: list, num):
"""
获取指定列表中指定元素的下标
:param list1:
:param num:
:return:
"""
d = 0
list2 = []
for i in list1:
if i == num:
list2.append(str(d))
d += 1
str2 = ','.join(list2)
print(str2)
appoint([1, 2, 3, 4, 5, 1, 1], 1)
22.写一个函数,能够将一个字典中的键值对添加到另外一个字典中(不使用字典自带的update方法)
def update(dict1: dict, dict2: dict):
"""
将一个字典中的键值对添加到另外一个字典中
:param dict1:
:param dict2:
:return:
"""
for i in dict1:
dict2[i] = dict1[i]
print(dict2)
update({1: 'a', 2: 'b'}, {3: 'c', 4: 'd', 5: 'e'})
23.写一个函数,能够将指定字符串中的所有的小写字母转换成大写字母;所有的大写字母转换成小写字母(不能使用字符串相关方法)
def capitalize(str1: str) -> str:
"""
将指定字符串中的所有的小写字母转换成大写字母;所有的大写字母转换成小写字母
:param str1:
:return:
"""
d = 0
list1 = list(str1)
for i in list1:
if 'a' <= i <= 'z':
num1 = 65+(ord(str1[d])-97)
list1[d] = chr(num1) # 获取字母在Unicode表上对应的序号,然后在转换成大写字母的序号,并修改列表的值。
elif 'A' <= i <= 'Z':
num1 = 97 + (ord(str1[d]) - 65) # # 获取字母在Unicode表上对应的序号,然后在转换成小写字母的序号,并修改列表的值。
list1[d] = chr(num1)
d += 1
str4 = ''.join(list1)
print(str4)
capitalize('sdAAAAA2fg45AAAAAA53fa')
24.实现一个属于自己的items方法,可以将自定的字典转换成列表。列表中的元素是小的列表,里面是key和value (不能使用字典的items方法)
例如:{'a':1, 'b':2} 转换成 [['a', 1], ['b', 2]]
def items(dict1: dict):
"""
将自定的字典转换成列表。列表中的元素是小的列表,里面是key和value
:param dict1:
:return:
"""
list1 = []
list2 = []
for i in dict1:
list1.append(i)
list1.append(dict1[i])
list2.append(list1)
list1 = []
print(list2)
items({1: 'a', 2: 'b', 'a': 'sfsd'})
25.写一个函数,实现学生的添加功能:
=============添加学生================
输入学生姓名: 张胜
输入学生年龄: 23
输入学生电话: 15634223
===添加成功!
'姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001'
=====================================
1.继续
2.返回
请选择: 1
=============添加学生================
输入学生姓名: 李四
输入学生年龄: 18
输入学生电话: 157234423
===添加成功!
'姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001'
'姓名':'李四', '年龄':18, '电话:157234423', '学号':'0002'
=====================================
1.继续
2.返回
请选择:
def append1(name: str, age: int, tel: str):
global d
str1 = '姓名:%s,年龄:%s,电话:%s,学号:%s' % (name, age, tel, str(d).rjust(4, '0'))
return str1
d = 0
list1 = []
while True:
d += 1
print("==============================添加学生==============================")
name = input('输入姓名:')
age = input('输入年龄:')
tel = input('输入电话:')
str2 = append1(name, age, tel)
list1.append(str2)
print("====添加成功")
for i in list1:
print(i)
print("===============")
print('1.继续')
print('2.返回')
num1 = int(input('请输入:'))
if num1 == 1:
pass
else:
break