作业008:函数基础
2019-11-15 本文已影响0人
yydafx
1. 编写函数,求1+2+3+…N的和
def yyd_sum(num):
"""
求1到N的相加的和
:param num:
:return: 返回1到N的相加的和
"""
sum1 = 0
for i in range(num+1):
sum1 += i
return sum1
num = int(input('请输入任意正整数:'))
print(yyd_sum(num))
第1题代码演示
请输入任意正整数:100
5050
2. 编写一个函数,求多个数中的最大值
def yyd_max(*num):
"""
求多个数中的最大值
:param num:
:return: 返回最大值
"""
max1 = num[0]
for i in num:
if max1 < i:
max1 = i
return max1
print(yyd_max(12, 23, 32, 12))
3. 编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
import random
def yyd_sieve_sum(num):
"""
N个骰子的点数和
:param num: 多少个骰子
:return: N个骰子的点数和
"""
sum1 = 0
for i in range(num):
sum1 += random.randint(1, 6)
return sum1
print(yyd_sieve_sum(3))
4. 编写一个函数,交换指定字典的key和value。
- 例如: dict1 = {'a': 1, 'b': 2, 'c': 3} --> dict1 = {1: 'a', 2: 'b', 3: 'c'}
def yyd_change(dict1):
"""
交换指定字典的key和value
:param num:
:return: 交换后的值
"""
new_dict1 = {}
for i in dict1:
new_dict1[dict1[i]] = i
dict1 = new_dict1
return dict1
dict1 = {'a': 1, 'b': 2, 'c': 3}
print(yyd_change(dict1))
5、编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
- 编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
def yyd_extra_str(char):
"""
提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
:param char:
:return: 返回新的字符串
"""
str1 = ''
for ch in char:
if 'a' <= ch <= 'z' or 'A' <= ch <= 'Z':
str1 = str1 + ch
return str1
print(yyd_extra_str('abc231FGb'))
6.写一个函数,求多个数的平均值
def yyd_avg(*num):
"""
求多个数的平均值
:param num:
:return: 返回平均值
"""
count = 0
max1 = 0
for i in num:
count += 1
max1 += i
return max1/count
print(yyd_avg(12, 23, 32, 12))
7.写一个函数,默认求10的阶乘,也可以求其他数字的阶乘
def yyd_fac(num):
"""
求数字的阶乘
:param num: 需要求阶乘的数字
:return: 返回任意数字的阶乘
"""
duct = 1
for i in range(1, num+1):
duct *= i
return duct
print(yyd_fac(10))
8.写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
- 例如: 'abc' -> 'Abc' '12asd' --> '12asd'
def yyd_capitalize(char):
"""
将指定字符串的首字母变成大写字母
:param char:
:return: 返回改变后的字符串
"""
if 'a' <= char[0] <= 'z':
char = char.replace(char[0], chr(ord(char[0])-32))
return char
print(yyd_capitalize('abc'))
9、写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束
- 例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
- 字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
def yyd_endswith(char):
"""
判断一个字符串是否已指定的字符串结束
:param char:
:return: 返回True或者False
"""
str1 = 'abc231ab'
if str1[-len(char):] == char:
return True
else:
return False
print(yyd_endswith('ab'))
10、写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串
- 例如:
'1234921'结果: True
'23函数'结果: False
'a2390'结果: False
def yyd_isdigit(char):
"""
判断一个字符串是否是纯数字字符串
:param char:
:return: 返回True或者False
"""
for i in char:
if not '0' <= char <= '9':
return False
else:
return True
print(yyd_isdigit('1234921'))
11、写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母
- 例如: 'abH23好rp1' 结果: 'ABH23好RP1'
def yyd_upper(char):
"""
将一个字符串中所有的小写字母变成大写字母
:param char:
:return: 返回改变后的字符串
"""
n = 0
for ch in char:
if 'a' <= ch <= 'z':
char = char.replace(char[n], chr(ord(ch)-32))
n += 1
return char
print(yyd_upper('abH23好rp1'))
12、写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
- 例如: 原字符:'abc'宽度: 7字符: '^'结果: '^^^^abc'
原字符: '你好吗'宽度: 5字符: '0'结果: '00你好吗'
def yyd_rjust(num, char):
a = '你好吗'
if len(a) < num:
a = (num - len(a)) * char + a
print(a)
print(yyd_rjust(5, '+'))
13、写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
- 例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0] 元素: 1 结果: 0,4,6
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '赵云' 结果: 0,4
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '关羽' 结果: -1
def yyd_index(list1: list, char):
for index in range(len(list1)):
if list1[index] == char:
print(index, end=', ')
else:
print('-1')
break
return
yyd_index(['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'], '赵云')
14、写一个自己的len函数,统计指定序列中元素的个数
- 例如: 序列:[1, 3, 5, 6] 结果: 4
序列:(1, 34, 'a', 45, 'bbb') 结果: 5
序列:'hello w' 结果: 7
def yyd_len(char):
"""
统计指定序列中元素的个数
:param char:
:return: 返回元素个数
"""
count = 0
for i in char:
count += 1
return count
print(yyd_len((1, 34, 'a', 45, 'bbb')))
15、写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
- 例如: 序列:[-7, -12, -1, -9] 结果: -1
序列:'abcdpzasdz' 结果: 'z'
序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98} 结果: 98
16、写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在
- 例如: 序列: (12, 90, 'abc') 元素: '90' 结果: False
序列: [12, 90, 'abc'] 元素: 90 结果: True
def yyd_in(seq, char):
num = 0
while num < len(seq):
if char == seq[num]:
return True
num += 1
else:
return False
print(yyd_in((12, 90, 'abc'), 'a'))
17、写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串
- 例如: 原字符串: 'how are you? and you?' 旧字符串: 'you' 新字符串:'me' 结果: 'how are me? and me?'
def yyd_replace(str1, old_str, new_str):
"""
字符串替换
:param str1: 旧字符串
:param old_str: 被替换的字符串
:param new_str: 用来替换的字符串
:return: 新的字符串
"""
return new_str.join(str1.split(old_str))
str1 = 'how are you? and you?'
str2 = 'you'
str3 = 'me'
print(yyd_replace(str1, str2, str3))
18、写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能
# 交集
def yyd_intersection(char1, char2):
list3 = set()
for ch1 in char1:
for ch2 in char2:
if ch1 == ch2:
list3.add(ch1)
return list3
print(yyd_intersection(char1, char2))
# 并集
def yyd_union(char1, char2):
list3 = set()
for ch1 in char1:
for ch2 in char2:
list3.add(ch2)
list3.add(ch1)
print(list3)
yyd_union(char1, char2)