1. 程式人生 > 實用技巧 >寫一個函式實現如下功能: 1)輸入陣列:[0,1,2,3,5,6,8] ==> 輸出陣列:[“0->3”,”5->6”,”8”] 2)輸入陣列:[1,2,4,5,6,7,9]==> 輸出陣列:['1->2','4->7','9']

寫一個函式實現如下功能: 1)輸入陣列:[0,1,2,3,5,6,8] ==> 輸出陣列:[“0->3”,”5->6”,”8”] 2)輸入陣列:[1,2,4,5,6,7,9]==> 輸出陣列:['1->2','4->7','9']

練習題:

1.寫一個函式實現如下功能:
1)輸入陣列:[0,1,2,3,5,6,8]==>
輸出陣列:[“0->3”,”5->6”,”8”]
2)輸入陣列:[1,2,4,5,6,7,9]==>
輸出陣列:['1->2','4->7','9']

分析:

1.連續數字輸出為n->m

2.需要考慮列表中所有數字都為連續數字

3.列表中最後一個數字為單數

  4.列表中兩個連續相同的數字

def getSerialize(list):
    list2 = []   #定義一個空列表,用於存放返回資料
    num1 = list[0]   #
定義一個變數,預設為list的第一個數 num2 = 0 for i in range(1,len(list)): #遍歷列表 print((list[i]-list[i-1])) if list[i]-list[i-1] != 1: #判斷數字是否為連續數 num2 = list[i-1] #如果不是連續數,將list[i-1] 賦值給num2 if num2 != num1: #判斷num1與num2是否相等 str1 = str(num1) + '
->' +str(num2) #如果不相等則將'num1->num2'賦值給str1 list2.append(str1) #新增str1到list2中 num1 = list[i] else: str1 = str(list[i-1]) #如果num1與num2相等,則說明list[i-1]為單數 list2.append(str1) num1 = list[i]
if i == len(list)-1: #判斷i是否為列表的最後一個腳標,如果是並且list[i]為單數則str1=list[i] str1 = str(list[i]) list2.append(str1) else: if num1 != list[len(list)-1]: #判斷num1是否與list中的最後一個數相等,如果不相等則輸出'num1->list[len(list)-1]' str1=str(num1) + '->' + str(list[len(list)-1]) list2.append(str1) return list2

PS.小白一枚,如有不對之處,歡迎指正^-^