day11-函数基础作业

本文介绍了如何用Python实现maketrans函数将字符串映射,自定义join和upper函数,清空列表和反转顺序,以及替换子串和获取十位数的方法。同时涵盖了集合交集操作和字典update,以及判断回文数和完数的算法。
  1. 写一个函数,实现maketrans的功能,将两个字符串转换成一个字典,第一个字符串中的字符是键,第二个字符串中的字符是值

    第一个字符串: ‘abcmn’ 第二个字符串:‘一二三四五’

    结果:{‘a’: ‘一’, ‘b’: ‘二’, ‘c’: ‘三’, ‘m’: ‘四’, ‘n’: ‘五’}

    
    def dict1(str1, str2):
        '''将两个字符串转换成一个字典,第一个字符串中的字符是键,第二个字符串中的字符是值'''
        lens = len(str1)
        dict2 = {str1[i]: str2[i] for i in range(lens)}
        return dict2
    
    
    print(dict1('abcmn', '一二三四五'))
    
    
  2. 写一个属于自己的join函数,可以将任意序列中的元素以指定的字符串连接成一个新的字符串

    序列: [10, 20, 30, ‘abc’] 字符串: ‘+’ 结果:‘10+20+30+abc’

    序列: ‘abc’ 字符串: ‘–’ 结果:‘a–b--c’

    注意:序列中的元素可以不是字符串哟

    
    
    def str_sum(sequence, connect):
        '''
        可以将任意序列中的元素以指定的字符串连接成一个新的字符串
        :param sequence:传入的任意序列
        :param connect:指定的字符串连接
        :return:新的字符串
        '''
        str1 = ''
        count = len(sequence)
        for i in sequence:
            str1 += str(i)
            if count > 1:
                str1 += connect
            count -= 1
        return str1
    
    
    print(str_sum('abc', '+'))
    
    
  3. 写一个输入自己的upper函数,判断指定字符串是否是纯大写字母字符串

    ‘AMNDS’ -> True

    ‘amsKS’ -> False

    ‘123asd’ -> False

    
    def majuscule(str1):
        '''
        判断指定字符串是否是纯大写字母字符串
        :param str1:判断的字符串
        :return:结果True或False
        '''
        for i in str1:
            if not('A' <= i <= 'Z'):
                return False
        else:
            return True
    
    
    print(majuscule('AMNDS'))
    
    
  4. 写一个clear函数,清空指定列表。

    注意:功能是将原列表清空,不产生新的列表

    
    def clears(list1:list):
        '''
        将原列表清空,不产生新的列表
        :param list1:传入一个字典
        :return: 返回[]
        '''
        for i in range(len(list1)):
            del list1[0]
        return list1
    
    
    print(clears(['asfsf', 'sfsaf', 67, 98]))
    
    
  5. 写一个reverse函数,将列表中的元素逆序

    两种方法:1.产生一个新的列表 2.不产生新的列表,直接修改原列表元素的顺序

    方法一:
    def reverses(list1:list):
        '''
        将列表中的元素逆序,产生一个新的列表.
        :param list1:传入的列表
        :return: 返回倒序
        '''
        list2 = []
        for i in range(len(list1)-1, -1, -1):
            list2.append(list1[i])
        return list2
    
    
    print(reverses([1, 2, 3, 34, 5, 6, 77]))
    
    
    
    方法二:
    def reverses(list1:list):
        '''
        不产生新的列表,直接修改原列表元素的顺序
        :param list1:传入的列表
        :return:返回倒序
        '''
        list2 = list1[:]
        for i in range(len(list1)):
            list1.append(list2[-i-1])
            list1.remove(list1[0])
        return list1
    
    
    print(reverses([1, 2, 3, 34, 5, 6, 77]))
    
  6. 写一个replace函数,将字符串中指定的子串替换成新的子串

    原字符串: ‘abc123abc哈哈哈uui123’ 旧子串: ‘123’ 新子串: ‘AB’

    结果: ‘abcABabc哈哈哈uuiAB’

    
    def replaces(str1, str3, str2):
        '''
    
        :param str1: 原字符串
        :param str3: 旧子串
        :param str2: 新子串
        :return:
        '''
    
        list1 = list(str1)
        for i in range(len(str1) - 1, -1, -1):
            if str1[i:i + len(str3)] == str3:
                del list1[i + 2]
                del list1[i + 1]
                del list1[i]
                list1.insert(i, str2)
        str4 = ''.join(list1)
        return str4
    
    
    print(replaces('abc123abc哈哈哈uui123', '123', 'AB'))
    
    
  7. 写一个函数,可以获取任意整数的十位数

    123 -> 2

    82339 -> 3

    9 -> 0

    -234 -> 3

    def num1(ten):
        """获取任意整数的十位数"""
        if ten < 0:
            return (-ten) // 10 % 10
        else:
            return ten // 10 % 10
    
    
    print(num1(345678))
    
    
  8. 写一个函数实现数学集合运算符 & 的功能,求两个集合的公共部分:

    集合1: {1, 2, 3} 集合2: {6, 7, 3, 9, 1}

    结果:{1, 3}

    def set1(set2, set3):
        '''
        实现数学集合运算符 & 的功能
        :param set2:集合1
        :param set3: 集合2
        :return:
        '''
        set4 = set()
        for i in set2:
            if i in set3:
                set4.add(i)
        return set4
    
    
    print(set1({1, 2, 3}, {6, 7, 3, 9, 1}))
    
    
  9. 写一个函数实现属于自己的字典update方法的功能,将一个字典中的键值对全部添加到另外一个字典中

    字典1: {‘a’: 10, ‘b’: 20} 字典2: {‘name’: ‘张三’, ‘age’: 18} -> 结果让字典1变成: {‘a’: 10, ‘b’: 20, name’: ‘张三’, ‘age’: 18}

    字典1: {‘a’: 10, ‘b’: 20} 字典2:{‘a’: 100, ‘c’: 200} -> 结果让字典1变成: {‘a’: 10, ‘b’: 20, ‘c’: 200}

    
    def dict1(dict2:dict, dict3:dict):
        '''
        :param dict2: 被添加的字典
        :param dict3: 添加的字典
        :return: 返回添加结果
        '''
        for key, value in dict3.items():
            if not(key in dict2):
                dict2[key] = value
        return dict2
    
    
    print(dict1({'a': 10, 'b': 20}, {'name': '张三', 'age': 18}))
    print(dict1({'a': 10, 'b': 20}, {'a': 100,  'c': 200}))
    
    
    
  10. 写一个函数判断指定数是否是回文数

    12321 -> True

    2332 -> True

    9876789 -> True

    1232 -> False

    
    def num1(num2):
        '''判断指定数是否是回文数'''
        return str(num2) == str(num2)[::-1]
    
    
    print(num1(123214))
    
  11. 写一个函数判断指定数是否是完数(比较难)

    完数:各个真因数的和等于这个数本身

    例如:6是完数,6的真因子为1、2、3,1+2+3等于6,所以6是完数

    ​ 28是完数,28的真因子:1、2、4、7、14,1+2+4+7+14等于28,所以28是完数

    ​ 12不是完数:12的真因子:1、2、3、4、6,1+2+3+4+6不等于12

    
    def perfect_number(num1:int):
        '''
        判断指定数是否是完数。
        :param num1:指定的一个数。
        :return:返回该数是不是完数。
        '''
        num2 = -num1
        for i in range(1, num1+1):
            for j in range(i, num1+1):
                if i * j == num1:
                    num2 += i
                    num2 += j
    
        if num1 == num2:
            return f'{num1}是完数'
        else:
            return f'{num1}不是完数'
    
    
    print(perfect_number(28))
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值