《数据结构与算法》第一章入门的烂又长答案实现

from random import randrange
import math
class basic_exercises:
    def is_multiple(n,m):
        '''
        is_multiple(n,m)函数,如果n是m的倍数,即存在整数i使得n=mi,那么函数返回True,否则False
        '''
        try:
            if (n % m):
                return False
            else:
                return True
        except ZeroDivisionError:
            print("ZeroDivisionError,被除数为零")
    def is_even(k):
        '''
        接收一个整数k,不用乘、除、取余,判断奇偶
        :return: 奇数返回True,偶数返回Flase
        '''
        try:
            if (k&1):
                return True
            else:
                return False
        except TypeError:
            print("TypeError,输入非整数")
    def minmax(self, *list):
        '''
        找出序列中的最大数和最小数,返回一个长度为2的元组。
        :param data: 数字序列
        :return: 长度为2的元组——最大数和最小数
        '''
        print(list)
        k = j = list[0]

        # j = list[0]
        for i in range(len(list)):
            if k < list[i]:
                k = list[i]
            elif j > list[i]:
                j = list[i]
        return k,j
    def Sum_of_squares(self, num):
        '''
        返回正整数1~num的平方和
        '''
        k = 0
        for i in range(1,num+1):
            j = i*i
            k = k + j
        return k
    def Sumofsquares_baseonsum(self, num):
        '''功能同Sum_of_squares()方法,使用sum实现'''
        list = []
        for i in range(1,num+1):
            list.append(i*i)
        return sum(list)
    def Odd_Sum_of_squares(self,num):
        '''
        返回1~num正整奇数的平方和
        '''
        k = 0
        j = 0
        for i in range(1,num+1):
            if (i&1):
                j = j + i * i
        return j
    def OddSumof_squares_baseonsum(self,num):
        '''功能同Odd_Sum_of_squares()方法,使用sum实现'''
        list = []
        for i in range(1,num+1):
            if (i&1):
                list.append(i*i)
        return sum(list)
    def Positive_negative_index(self, s ,k):
        '''
        存在长度n的字符串s,索引-n<=k<0,s[k]与s[j]指向同一元素,输入n,返回k
        :param s: 字符串s
        :param k:负数索引
        :return:
        '''
        a = len(s)
        if (-a <=k< 0):
            j = k+a
            if(s[k] == s[j]):
                return j
        else:
            print("Error:入参应该为小于长度的负整数")
    def range_test(self,start, end, Cadence=1):
        '''生成一个值为50、60、70、80的排列,求range构造函数的参数'''
        for i in range(start, end, Cadence):
            print(i)
        return start, end, Cadence
    def list_range_make(self,start, end, Cadence=1):
        '''使用range生成列表'''
        list=[]
        for i in range(start, end, Cadence):
            list.append(2 ** i)
        return list
    def choice_data(self, data):
        '''非空序列返回一个随机元素'''
        i = randrange(len(data))
        return data[i]
    def reverse_list(self, list):
        '''
        颠倒n个整数组成的列表,输出新列表
        '''
        list1=[]
        for i in list:
            list1.insert(0, i)
        return list1
    # 更优解
    def reverse_list2(self, data):
        '''
        颠倒n个整数组成的列表,输出新列表
        list[param1:param2:param3]
        param1,相当于start_index,可以为空,默认是0
        param2,相当于end_index,可以为空,默认是list.size
        param3,步长,默认为1。步长为-1时,返回倒序原序列
        '''
        return data[::-1]

if __name__ == '__main__':
    data = [0, 1, 2, 5, 5, 2, 5, 5, 56]
    a = basic_exercises().reverse_list2(data)
    print(a)

  

posted on 2021-06-30 08:47  大圣Goal  阅读(23)  评论(0编辑  收藏  举报