1. 程式人生 > 實用技巧 >a[0]=1,a[1]=11,a[2]=21,a[3]=1211找出規律,輸入下標,得出對應的值

a[0]=1,a[1]=11,a[2]=21,a[3]=1211找出規律,輸入下標,得出對應的值

def count(n):
    a=[1,11] #初始化
    if n==0:
        return a[0]
    if n==1:
        return a[1]
    for i in range(2,n+1): #每遍歷一次得出下一個值,當n=3時,第一次由a[1]先得出a[2],下次由a[2]得出a[3]
        s=str(a[i-1]) #得到列表上一個值,並變成字串
        #print(s)
        l=len(s) #字串的長度,用來控制判斷遍歷的次數,2位則判斷1次
        cnt=1 #記錄相同字元的個數
        tmp=''
#記錄結果 for j in range(l-1): #思路是每次新增判斷的前一個字元,最後一位時新增判斷2個字元 if s[j]==s[j+1]: #比如a[0]和a[1]相同則cnt+1 cnt+=1 else: tmp+=str(cnt) #字元不同時把當前或上次判斷好的結果新增到tmp tmp+=s[j] cnt=1 if (j+2)==l: #字元不同且是最後一次遍歷時新增末位字元到tmp
tmp+=str(cnt) tmp+=s[j+1] if s[j]==s[j+1]: #遍歷結束代表已到末位,字元相同新增到tmp tmp+=str(cnt) tmp+=s[j] a.append(int(tmp)) #把迴圈一次得到的值新增到陣列,每次迴圈可以得到一個 return a[n] while True: try: n=int(input()) print
(count(n)) except: break