1. 程式人生 > >第016講:序列!序列! | 學習記錄(小甲魚零基礎入門學習Python)

第016講:序列!序列! | 學習記錄(小甲魚零基礎入門學習Python)

(標答出處: 魚C論壇)
《零基礎入門學習Python》

測試題:

  1. 我們根據列表、元祖和字串的共同特點,把它們三統稱為什麼?

    序列。

  2. 請問分別使用什麼BIF,可以把一個可迭代物件轉換為列表、元祖和字串?

    list()
    tuple()
    str()

  3. 你還能複述出“迭代”的概念嗎?

    迭代是重複反饋過程的活動,其目的通常是為了逼近所需目標或結果。每一次對過程的重複稱為一次“迭代”,而每一次迭代得到的結果會作為下一次迭代的初始值。
    重複執行一系列運算步驟,從前面的量依次求出後面的量的過程。此過程的每一次結果,都是由對前一次所得結果施行相同的運算步驟得到的

  4. 你認為呼叫 max(‘I love FishC.com’) 會返回什麼值?為什麼?

    ‘v’,因為v在這個字串中asII碼值最大。

  5. 哎呀呀,現在的小屁孩太調皮了,鄰居家的孩子淘氣,把小甲魚剛寫好的程式碼畫了個圖案,麻煩各位魚油恢復下啊,另外這傢伙畫的是神馬嗎?怎麼那麼眼熟啊!??

    name = input('請輸入帶查詢的使用者名稱:')
    score = [['迷途',85],['黑夜',80],['小布丁',65],['福祿娃娃',95],['怡靜',90]]
    count=0
    for each in score :
        if name == each[0] :
            print(name + '的得分是:',each[1])
            break
    if name != each[0] :
        print ('查詢的使用者不存在!')
    

動動手:

  1. 猜想一下 min() 這個BIF的實現過程

    def min1(l):
        temp = l[0]
        for each in l:
            if each < temp :
                temp = each
        print (temp)
    
    l=[0,1,2,9,7,8,-55,6,43,4]
    min1 (l)
    
  2. 視訊中我們說 sum() 這個BIF有個缺陷,就是如果引數裡有字串型別的話就會報錯,請寫出一個新的實現過程,自動“無視”引數裡的字串並返回正確的計算結果

    因為要無視引數裡的字串,那麼肯定就是怎麼來區分到底是字串還是數字,首先想到的就是用type()
    但是剛開始的因為在shell裡輸出type函式的時候是‘str’ 所以傻逼的把這個也寫成了 if type(each)== ‘str’ : 導致程式一直出錯。

    def max1(l):
        temp = l[0]
        for each in (l):
            if type(each)== str :     
                continue
            else:
                if each > temp :
                    temp = each
        print (temp)
    
    l=[0,1,2,9,7,8,-55,6,43,4,'a']
    max1 (l)
    

標答:

  1. 我們根據列表、元祖和字串的共同特點,把它們三統稱為什麼?

    序列,因為他們有以下共同點:

    1)都可以通過索引得到每一個元素
    2)預設索引值總是從0開始(當然靈活的Python還支援負數索引)
    3)可以通過分片的方法得到一個範圍內的元素的集合
    4)有很多共同的操作符(重複操作符、拼接操作符、成員關係操作符)

  2. 請問分別使用什麼BIF,可以把一個可迭代物件轉換為列表、元祖和字串?

    list([iterable]) 把可迭代物件轉換為列表

    tuple([iterable]) 把可迭代物件轉換為元祖

    str(obj) 把物件轉換為字串

    例如:

    temp = ‘I love FishC.com!’
    list(temp)
    [‘I’, ’ ', ‘l’, ‘o’, ‘v’, ‘e’, ’ ', ‘F’, ‘i’, ‘s’, ‘h’, ‘C’, ‘.’, ‘c’, ‘o’, ‘m’, ‘!’]

  3. 你還能複述出“迭代”的概念嗎?

    所謂迭代,是重複反饋過程的活動,其目的通常是為了接近併到達所需的目標或結果。每一次對過程的重複被稱為一次“迭代”,而每一次迭代得到的結果會被用來作為下一次迭代的初始值。

  4. 你認為呼叫 max(‘I love FishC.com’) 會返回什麼值?為什麼?

    會返回:‘v’,因為字串在計算機中是以ASCII碼的形式儲存(ASCII對照表:http://bbs.fishc.com/thread-41199-1-1.html),引數中ASCII碼值最大的是’v’對應的118。

  5. 哎呀呀,現在的小屁孩太調皮了,鄰居家的孩子淘氣,把小甲魚剛寫好的程式碼畫了個圖案,麻煩各位魚油恢復下啊,另外這傢伙畫的是神馬嗎?怎麼那麼眼熟啊!??

    name = input('請輸入待查詢的使用者名稱:')
    score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福祿娃娃', 95], ['怡靜', 90]]
    isFind = False
    for each in score:
    	 if name in each:
    		print(name + '的得分是:', each[1])
    		 IsFind = True
    		 break
    if IsFind == False:
    	print('查詢的資料不存在!')
    

動動手答案:

本帖隱藏的內容

  1. 猜想一下 min() 這個BIF的實現過程

    def min(x):
    	least = x[0]
    		for each in x:
    			if each < least:
    				least = each
    			return least
    print(min('123456789'))
    
  2. 視訊中我們說 sum() 這個BIF有個缺陷,就是如果引數裡有字串型別的話就會報錯,請寫出一個新的實現過程,自動“無視”引數裡的字串並返回正確的計算結果

    def sum(x):
    	result = 0
    	 for each in x:
    	 	if (type(each) == int) or (type(each) == float):
    	 		result += each
    	 	else:
    	 		continue
    	 return result
    print(sum([1, 2.1, 2.3, 'a', '1', True]))