1.编写函数,求1+2+3+…N的和
def func1(n=0):
sum1 = 0
for i in range(1,n+1):
sum1 += i
return sum1
print(func1(5))
2.编写一个函数,求多个数中的最大值
def func2(*num: float):
return max(num)
print(func2(1.7,2,4.6,55,0,-5.4))
3.编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
import random
def func3(n=0):
sum1 = 0
for i in range(1,n+1):
random_num = random.randint(1,6)
print('第%d个骰子的点数是%d' % (i,random_num))
sum1 += random_num
return sum1
print(func3(5))
4.编写一个函数,交换指定字典的key和value。
def func4(dict1:dict):
for key in dict1:
value = dict1[key]
del dict1[key]
dict1[value] = key
print(dict1)
a = {1:'a',2:'b',3:'c'}
func4(a)
5.编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
def func5(str1:str):
new_str = ''
for i in str1:
if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
new_str += i
return new_str
print(func5('123asd34AD56df'))
6.写一个函数,求多个数的平均值
def func6(*nums:float):
sum1 = 0
for num in nums:
sum1 += num
return sum1 / len(nums)
print(func6(2,2.4,5,8,6,1.0,3.6))
7.写一个函数,默认求10的阶乘,也可以求其他数字的阶乘
def func7(num=10):
product = 1
for i in range(1,num+1):
product *= i
return product
print(func7())
print(func7(5))
===========注意:以下方法不能使用系统提供的方法和函数,全部自己写逻辑==============
8.写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
def func8(str1:str):
first_char = str1[0]
if 'a' <= first_char <= 'z':
first_char = chr(ord(first_char) - 32)
return first_char + str1[1:]
print(func8('12dfg'),func8('Adf234'),func8('asff123A'))
9.写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束
len2=len(str2)
return_value = False
if str1[-len2:] == str2:
return_value = True
return return_value
print(func9('a1234','1234'))
10.写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串
def func10(str1:str):
return_value = False
for char in str1:
if char > '9' or char < '0':
break
else:
return_value = True
return return_value
print(func10('a1234'),func10('123'))
11.写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母
def func11(str1:str):
new_str = ''
for char in str1:
new_char = char
if 'a' <= char <= 'z':
new_char = chr(ord(char) - 32)
new_str += new_char
return new_str
print(func11('asd123ASDsd1'))
12.写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
def func12(str1:str,width:int,str2:str):
return str2 * (width - len(str1)) + str1
print(func12('asd',5,'x'))
13.写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
def func13(list1:list,item):
result = ''
for index in range(len(list1)):
if list1[index] == item:
result += str(index) + ','
if len(result) == 0:
return -1
else:
return result[:-1]
print(func13([1,2,3,'a','b','c',1,2,3,1],1))
print(func13([1,2,3,'a','b','c',1,2,3,1],'1'))
14.写一个自己的len函数,统计指定序列中元素的个数
def func14(seq):
count = 0
for _ in seq:
count += 1
return count
print(func14('123sdf'))
print(func14((1,'1','a','asd',123,'123',[1,2,3])))
15.写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
if isinstance(seq, dict):
new_seq = []
for key in seq:
new_seq.append(seq[key])
else:
new_seq = list(seq)
new_seq.sort()
return new_seq[-1]
def func15_2(seq):
if isinstance(seq, dict):
new_seq = []
for key in seq:
new_seq.append(seq[key])
else:
new_seq = list(seq)
for index1 in range(len(new_seq) - 1):
for index2 in range(index1 + 1,len(new_seq)):
if new_seq[index2] < new_seq[index1]:
new_seq[index1], new_seq[index2] = new_seq[index2], new_seq[index1]
return new_seq[-1]
def func15_3(seq):
if isinstance(seq, dict):
list1 = list(seq.values()) #seq.values()结果类型是
else:
list1 = list(seq)
max1 = list1[0]
for index in range(1, len(list1)):
item = list1[index]
if item > max1:
max1 = item
return max1
a = [-7, -2, -1, -9]
b = 'abcdpzasdz'
c = {'a':90, 'b':76, 'c':30, 'd':98}
print(func15_1(a),func15_1(b),func15_1(c))
print(func15_2(a),func15_2(b),func15_2(c))
16.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在
def func16(seq,item):
if isinstance(seq, dict):
new_seq = []
for key in seq:
new_seq.append(key)
else:
new_seq = list(seq)
for i in new_seq:
if i == item:
return True
return False
a = [12, 90, 'abc']
b = 'abcdef'
c = {'a': 1, 'b': 2, 'c': 3}
print(func16(a, 90), func16(a, '90'), func16(b, 'ab'), func16(b, 'a'), func16(c, 'a'), func16(c, 1))
17.写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串
def func17_1(str1: str, str2: str, str3: str):
len1 = len(str1)
len2 = len(str2)
for index in range(len1 - len2 + 1):
if str1[index:index + len2] == str2:
str1 = str1[:index] + str3 + str1[index + len2:]
return str1
def func17_2(str1: str, old: str, new: str):
return new.join(str1.split(old)) #split切割后产生的结果是列表:'abcbdbe'.split('b')结果是['a', 'c', 'd', 'e']
#join后面可以接序列如字符串,列表等
def func17_3(str1: str, old: str, new: str):
lenght = len(old)
index = str1.find(old) #find函数:找到指定字符串(old)在字符串中(str1)第一次(从左往右)出现的位置下标,若指定字符串长度大于一,则为首字符的下标(多次出现,只返回第一次的下标,后续的不会返回,若没有则返回-1)
while index != -1:
str1 = str1[:index] + new + str1[index+lenght:]
index = str1.find(old)
return str1
a = 'how are you? and you?'
print(func17_1(a, 'you', 'me'))
18.写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能
def func18_1(list1:list,list2:list):
new_list = []
for i in list1:
for j in list2:
if i == j:
new_list.append(i)
break
return new_list
def func18_2(list1:list,list2:list):
return list(set(list1) & set(list2))
list1 = [1,2,3,4,5]
list2 = [2,5,6,7,9]
print(func18_1(list1,list2))
print(func18_2(list1,list2))
#其余同理