- 编写函数,求1+2+3+…N的和
def sum_1(num1: int):
return sum(range(1, num1 + 1))
print(sum_1(10)) # 55
def sum_1(num1: int, sum1=0):
for n in range(1, num1 + 1):
sum1 += n
return sum1
print(sum_1(10)) # 55
- 编写一个函数,求多个数中的最大值
def max_num(*nums: int):
return max(nums)
list1 = [1, 4, 5, 7, 4, 6, 8, 7, 2, 9]
print(max_num(*list1)) # 9
def max_num(*nums: int, max_n=0):
for n in nums:
if n > max_n:
max_n = n
return max_n
list1 = [1, 4, 5, 7, 4, 6, 8, 7, 2, 9]
print(max_num(*list1)) # 9
- 编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
import random # 导入随机模块
def rand_sum(num: int, sum1=0):
for n in range(num):
sum1 += random.randint(1, 6) # 产生随机点数求和
return sum1
print(rand_sum(3)) # 13
- 编写一个函数,交换指定字典的key和value。
例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}
def chang_dic(**dic1):
for n in dic1.copy():
dic1[dic1.pop(n)] = n # 取出原来的键值对添加新的键值对
return dic1
dict1 = {'a': 1, 'b': 2, 'c': 3}
print(chang_dic(**dict1)) # {1: 'a', 2: 'b', 3: 'c'}
- 编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
例如: 传入'12a&bc12d-+' --> 'abcd'
def letter_str(str1: str, str2=''):
for s in str1:
if s.isalpha():
str2 += s
return str2
print(letter_str('12a&bc12d-+')) # abcd
- 写一个函数,求多个数的平均值
def avr(*nums: int):
return sum(nums)/len(nums)
print(avr(6, 5, 7, 8, 8, 4, 3, 4)) # 5.625
- 写一个函数,默认求10的阶乘,也可以求其他数字的阶乘
def fact(num=10):
for n in range(num - 1, 0, -1):
num *= n
return num
print(fact(5)) # 120
=====================注意:以下方法不能使用系统提供的方法和函数,全部自己写逻辑==============
- 写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
例如: 'abc' -> 'Abc' '12asd' --> '12asd'
def cap(str1: str):
if ord(str1[0]) in range(ord('a'), ord('z')+1):
return str1.replace(str1[0], chr(ord(str1[0])-32))
return str1
print(cap('abc')) # Abc
print(cap('12asd')) # 12asd
def cap(str1: str):
if 'a' <= str1[0] <= 'z':
return str1.replace(str1[0], chr(ord(str1[0])-32))
return str1
print(cap('abc')) # Abc
print(cap('12asd')) # 12asd
- 写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束
例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
def end_w(str1: str, str2:str):
length2 = len(str2)
if str1[- length2:] == str2: # 比较最后与字符串2一样长度的字符串1的子串
return True
return False
print(end_w('abc231ab', 'ab')) # True
print(end_w('abc231ab', 'ab1')) # False
- 写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串
例如: '1234921' 结果: True
'23函数' 结果: False
'a2390' 结果: False
def isdig(str1: str):
for s in str1:
if not '0' <= s <= '9': # 存在非数字字符就中断函数
return False
return True
print(isdig('1234921')) # True
print(isdig('23函数')) # False
print(isdig('a2390')) # False
- 写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母
例如: 'abH23好rp1' 结果: 'ABH23好RP1'
def uppe(str1: str, str2=''):
for s in str1:
if 'a' <= s <= 'z':
s = s.replace(s, chr(ord(s)-32))
str2 += s
return str2
print(uppe('abH23好rp1')) # ABH23好RP1
- 写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
例如: 原字符:'abc' 宽度: 7 字符:'^' 结果: '^^^^abc'
原字符:'你好吗' 宽度: 5 字符:'0' 结果: '00你好吗'
def r_just(str1: str, leng: int, char=' '):
return char*(leng-len(str1))+str1
print(r_just('abc', 7, '^')) # ^^^^abc
print(r_just('你好吗', 5, '0')) # 00你好吗
- 写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0] 元素: 1 结果: 0,4,6
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '赵云' 结果: 0,4
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '关羽' 结果: -1
def indx(list1: list, ele, list2=''):
for index in range(len(list1)):
if list1[index] == ele:
list2 += str(index)
else:
if len(list2):
list2 = ', '.join(list2)
return list2
return -1
print(indx([1, 2, 45, 'abc', 1, '你好', 1, 0], 1)) # 0, 4, 6
print(indx(['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'], '赵云')) # 0, 4
print(indx(['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'], '关羽')) # -1
- 写一个自己的len函数,统计指定序列中元素的个数
例如: 序列:[1, 3, 5, 6] 结果: 4
序列:(1, 34, 'a', 45, 'bbb') 结果: 5
序列:'hello w' 结果: 7
def lens(order1, count=0):
for n in order1:
count += 1
return count
print(lens([1, 3, 5, 6])) # 4
print(lens((1, 34, 'a', 45, 'bbb'))) # 5
print(lens('hello w')) # 7
- 写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
例如: 序列:[-7, -12, -1, -9] 结果: -1
序列:'abcdpzasdz' 结果: 'z'
序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98} 结果: 98
def max_order(*args, **kwargs):
max1 = None
if args:
max1 = args[0]
for m in args:
if m > max1:
max1 = m
elif kwargs:
for key in kwargs: # 获取第一个键值
max1 = kwargs[key]
break
for key in kwargs:
if kwargs[key] > max1:
max1 = kwargs[key]
return max1
print(max_order(*[-7, -12, -1, -9])) # -1
print(max_order(*'abcdpzasdz')) # z
print(max_order(**{'小明': 90, '张三': 76, '路飞': 30, '小花': 98})) # 98
16.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在
例如: 序列: (12, 90, 'abc')
元素: '90'
结果: False
序列: [12, 90, 'abc']
元素: 90
结果: True
def str_in(list1, list2):
for lis in list1:
if lis == list2:
return True
else:
return False
print(str_in((12, 90, 'abc'), '90')) # False
print(str_in([12, 90, 'abc'], 90)) # True
17.写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串
例如: 原字符串: 'how are you? and you?'
旧字符串: 'you'
新字符串: 'me'
结果: 'how are me? and me?'
def rep(str1: str, str2: str, str3: str):
return str3.join(str1.split(str2)) # 重新组合
print(rep('how are you? and you?', 'you', 'me')) # how are me? and me?
- 写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能
def lis_mix(list1: list, list2: list): # 交集
# return set(list1) & set(list2)
list3 = []
for n in list1:
if n in list2:
list3.append(n)
return list3
def lis_sum(list1: list, list2: list): # 并集
# return set(list1) | set(list2)
list3 = []
for n in list1:
if n not in list3:
list3.append(n)
for n in list2:
if n not in list3:
list3.append(n)
return list3
def lis_dif(list1: list, list2: list): # 差集
# return set(list1).difference(set(list2))
list3 = []
for n in list1:
if n not in list2:
list3.append(n)
return list3
def lis_cop(list1: list, list2: list): # 补集
# return set(list1) ^ set(list2)
list3 = []
for n in list1:
if n not in list2:
list3.append(n)
for n in list2:
if n not in list1:
list3.append(n)
return list3
print(*lis_mix([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z'])) # d 1 s
print(*lis_sum([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z'])) # 1 2 3 a z 5 6 x s d
print(*lis_dif([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z'])) # 2 3 a
print(*lis_cop([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z'])) # 2 3 z 5 6 a x
网友评论