1,給定一組數據,將奇數進行從小到大排序,偶數在原位置不變數組
例: 原數據:[5, 3, 2, 8, 1, 4] 函數
排序後:[5, 3, 2, 8, 1, 4]spa
若數組爲空,則返回空數組。code
代碼以下:blog
1 方法一: 2 def sort_array(source_array): 3 # Return a sorted array. 4 #首先判斷數組是否爲空 5 if not source_array : return source_array 6 length = len(source_array) # 求數組的長度 7 for i in range(length): # 進行循環 8 if source_array[i] % 2 == 0: # 若爲偶數,則跳過 9 continue 10 for j in range(i+1,length): # 兩層循環,進行排序 11 if source_array[j] % 2 == 0: # 若爲偶數,則跳過 12 continue 13 if source_array[i] > source_array[j]: # 排序 14 t = source_array[i] 15 source_array[i] = source_array[j] 16 source_array[j] = t 17 return source_array # 返回排序後的數組 18 方法二(高級版,臨摹大佬的): 19 def sort_array(arr): 20 odds = sorted((x for x in arr if x%2 != 0), reverse=True) 21 # 當x爲奇數時,挑選出來,進行從大到小排序 22 # sorted默認爲從小到大,加上reverser表示反轉的意思 23 return [x if x%2==0 else odds.pop() for x in arr] 24 # 返回數組,odds.pop()爲刪除最後一個數據並返回
2,返回最大值和最小值排序
給定一個字符串,「1 2 2 3」,數字中間由空格隔開,保證字符串最少有一個字符,返回字符串中字符數值的最大值,最小值字符串
最大值在前,最小值在後,中間一樣有空格相隔開get
例:原字符串:‘1 2 3 4’,‘25 8 9 -989 ’input
返回值:‘4 1’ , ‘25 -989’it
代碼以下:
方法一: def high_and_low(numbers): # ... numbers = numbers.split(' ') # 將字符串分隔開並轉化爲列表,每個字符爲列表的一項 num_max = int(numbers[0]) # 給num_max賦值列表的第一項的數值形式 num_min = int(numbers[0]) for i in numbers: # 進行循環,求出最大值和最小值 if num_max < int(i): num_max = int(i) if num_min > int(i): num_min = int(i) return '%d %d'%(num_max,num_min) # 進行格式化返回 方法二(高級版,臨摹大佬): def high_and_low(numbers): n = map(int,numbers.split(' ')) # 利用map函數產生兩個迭代器 m = map(int,numbers.split(' ')) return str(max(n)) + ' ' + str(min(m)) # 進行字符串拼接
3,元音數
給定一個字符串,字符串由小寫字母和空格組成,求出元音字母的個數,並返回。
元音字母:a,e,i,o,u
例:參數:'abcdefg'
返回值:2
代碼以下:
方法一: def getCount(inputStr): num_vowels = 0 # 給定初始值 # your code here vowel = 'aeiou' # 賦值一個包含元音字母的字符串 for i in inputStr: # 進行循環 if i in vowel: # 判斷字符是否爲元音字符 num_vowels += 1 return num_vowels 方法二(臨摹版本,沒有搞明白): def getCount(inputStr): return sum(1 for let in inputStr if let in 'aeiou')
4,序列和
給定三個數字,分別表明起始數字,結束數字,步長,求出序列的和值。
若是起始數字大於結束數字,則返回零
例:參數:(2, 6, 2),(1, 5, 3),(10, 5, 3)
返回值:12,5,0
代碼以下:
# 方法一: def sequence_sum(begin_number, end_number, step): #your code here if begin_number > end_number : # 判斷起始數字是否大於結束數字 return 0 sum = 0 while begin_number <= end_number: # 進行循環 sum += begin_number # 求和 begin_number += step return sum # 方法二: def sequence_sum(begin_number, end_number, step): return sum(range(begin_number,end_number+1,step)) # 運用內置函數求和