python 基礎演算法題集錦(1)
阿新 • • 發佈:2018-11-17
#(1)尋找序列中的最大值和最小值,不能用內建函式max和min
#(2)查詢序列值的出現次數
#(3)逆置序列
#(4)實現序列中元素之和
#(5)實現1+1/2+1/3+1/4+……1/n
#(6)實現1+1/2+2/3+3/4+4/5+……(n-1)/n
(1)#給定序列list =[1,2,5,4,0,3,9,8,5]查詢最大值和最小值
最大值: max = list[0] for target in list : if target> max max = target print(max) 最小值: min = list[0] for data in list : if data < min : min = data print(min)
#通過索引查詢給定序列中的最大值和最小值
通過索引判斷最大值:
index= 0
for j in range(len(list)) :
if list[j] > list[index] :
index = j
print(list[index])
通過索引判斷最小值:
index = 0
for i in range(len(list)) :
if list[i] < list[index] :
index = i
print(list[index])
(2)尋找給定序列list =[0,1,2,3,5,0,2,8,9,1,0]目標值target = 1 的出現次數,要求用函式實現
list =[0,1,2,3,5,0,2,8,9,1,0]
def Times (list,target) :
n = 0
'''
定義一個初始化變數n來記錄目標值欻出現的次數
'''
for i in data :
if i == target :
n += 1
return n
val = Times(data,1)
print(val)
(3)逆置序列list = [1,2,3,4,5,6,7,8,9]
def Test_One(list) : start,end = 0,len(list)-1 ''' type start :定義為序列的起始下標 type end : 定義為序列的結束下標 ''' while start <end : ''' 滿足以上條件時,序列對稱對的兩個元素交換位置 下標向中間靠近 ''' list[start],list[end] = list[end],list[start] start,end =start+1,end-1 return list list = [1,2,3,4,5,6,7,8,9] val = Test_One(list) print(val)
(4)實現序列list =[1,2,3,4,5,8,6,9]中元素之和
#方法1:通過序列元素求和
def Test_Three_One(list) :
sum = 0
for i in list :
sum = sum +i
return sum
list=[1,2,5,8,6,9]
val = Test_Three_One(list)
print(val)
#方法2:通過索引求和(實現原理同方法1)
def Test_Three_Two(list) :
sum = 0
for i in range(0,len(list)) :
sum +=list[i]
return sum
list=[1,2,5,8,6,9]
val = Test_Three_Two(list)
print(val)
#方法3:通過遞迴實現
def Test_Three_Three(list,start,end) :
if start >= end :
return 0
elif start == end-1 :
return list[start]
else :
mid = (start + end)//2
return Test_Three_Three(list,start,mid)+Test_Three_Three(list,mid,end)
list=[1,2,5,8,6,9]
val = Test_Three_Three(list,0,len(list))
print(val)
(5)實現1+1/2+1/3+1/4+……1/n
#迴圈實現
def Test_Two_One(n) :
sum = 0
for i in range(1,n+1) :
num = 1 / i
sum += num
return sum
val =Test_Two_One(2)
print(val)
#迭代實現
def Test_Two(n) :
num = 1 / n
if n == 1 :
return 1
elif n >= 2:
return num + Test_Two(n-1)
val =Test_Two(2)
print(val)
(6)實現1+1/2+2/3+3/4+4/5+……(n-1)/n
#迭代實現
def Test_Three_One(n) :
sum = 0
for i in range(1,n+1) :
if i == 1 :
num = 1
else :
num = (i-1) / i
sum += num
return sum
val = Test_Three_One(3)
print(val)
#遞迴實現
def Test_Three(n) :
num =(n-1) / n
if n == 1:
return 1
elif n >= 2 :
return num + Test_Three(n-1)
val = Test_Three(3)
print(val)