第016講:序列!序列! | 學習記錄(小甲魚零基礎入門學習Python)
(標答出處: 魚C論壇)
《零基礎入門學習Python》
測試題:
-
我們根據列表、元祖和字串的共同特點,把它們三統稱為什麼?
序列。
-
請問分別使用什麼BIF,可以把一個可迭代物件轉換為列表、元祖和字串?
list()
tuple()
str() -
你還能複述出“迭代”的概念嗎?
迭代是重複反饋過程的活動,其目的通常是為了逼近所需目標或結果。每一次對過程的重複稱為一次“迭代”,而每一次迭代得到的結果會作為下一次迭代的初始值。
重複執行一系列運算步驟,從前面的量依次求出後面的量的過程。此過程的每一次結果,都是由對前一次所得結果施行相同的運算步驟得到的 -
你認為呼叫 max(‘I love FishC.com’) 會返回什麼值?為什麼?
‘v’,因為v在這個字串中asII碼值最大。
-
哎呀呀,現在的小屁孩太調皮了,鄰居家的孩子淘氣,把小甲魚剛寫好的程式碼畫了個圖案,麻煩各位魚油恢復下啊,另外這傢伙畫的是神馬嗎?怎麼那麼眼熟啊!??
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 ('查詢的使用者不存在!')
動動手:
-
猜想一下 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)
-
視訊中我們說 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)都可以通過索引得到每一個元素
2)預設索引值總是從0開始(當然靈活的Python還支援負數索引)
3)可以通過分片的方法得到一個範圍內的元素的集合
4)有很多共同的操作符(重複操作符、拼接操作符、成員關係操作符) -
請問分別使用什麼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’, ‘!’] -
你還能複述出“迭代”的概念嗎?
所謂迭代,是重複反饋過程的活動,其目的通常是為了接近併到達所需的目標或結果。每一次對過程的重複被稱為一次“迭代”,而每一次迭代得到的結果會被用來作為下一次迭代的初始值。
-
你認為呼叫 max(‘I love FishC.com’) 會返回什麼值?為什麼?
會返回:‘v’,因為字串在計算機中是以ASCII碼的形式儲存(ASCII對照表:http://bbs.fishc.com/thread-41199-1-1.html),引數中ASCII碼值最大的是’v’對應的118。
-
哎呀呀,現在的小屁孩太調皮了,鄰居家的孩子淘氣,把小甲魚剛寫好的程式碼畫了個圖案,麻煩各位魚油恢復下啊,另外這傢伙畫的是神馬嗎?怎麼那麼眼熟啊!??
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('查詢的資料不存在!')
動動手答案:
本帖隱藏的內容
-
猜想一下 min() 這個BIF的實現過程
def min(x): least = x[0] for each in x: if each < least: least = each return least print(min('123456789'))
-
視訊中我們說 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]))