day10作业

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))

#其余同理

你可能感兴趣的:(day10作业)