《資料結構與演算法》第一章入門的爛又長答案實現
阿新 • • 發佈:2021-06-30
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)