12.16作業
1.以下程式輸出結果是什麼
a = 1 def fun(a): a = 2 fun(a) print (a) #1 a = [] def fun(a): a.append(1) fun(a) print(a) #[1]
2.請簡要說明什麼是類變數,什麼是例項變數,並觀察以下程式的輸出結果
類變數:所有的例項個體都可以使用
例項變數:只有例項個體可以使用
class Person: name="aaa" p1=Person() p2=Person() p1.name="bbb" print(p1.name) #bbb print(p2.name) #aaa print(Person.name) #aaa
3.以下語句有什麼弊端,name是元祖的時候,程式會是什麼樣的結果,如何避免
"hi there %s" % name
%s 是字串的佔位符,
name是元組的時候使用.format()
4.閱讀下面的程式碼,寫出A0,A1至An的最終值。
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
A1 = range(10) #range(0, 10)
A2 = [i for i in A1 if i in A0] #[ ]
A3 = [A0[s] for s in A0] #[1, 2, 3, 4, 5]
A4 = [i for i in A1 if i in A3]# [1, 2, 3, 4, 5]
A5 = {i:i*i for i in A1} #{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[i,i*i] for i in A1] # [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
5.這兩個引數是什麼意思:*args,**kwargs?我們為什麼要使用它們?
*args:代表任何型別(int,float,str)
**kw:是代表任何鍵值對
在對函式傳引數時,不能確定引數的型別,使用*args,**kwargs可以接受任何的引數。
6.請寫出一段Python程式碼實現刪除一個list裡面的重複元素
l = ['a','b','c','a','b','s','c'] l2 = [] [l2.append(i) for i in l if i not in l2] print(l2) l = ['a','b','c','a','c','b'] l = set(l) print(l)
7.單引號,雙引號,三引號的區別
單引號和雙引號沒區別,都是用來定義字元
三引號可以註釋,可以用來換行
8.寫一個函式, 輸入一個字串, 返回倒序排列的結果
def re(a): l = [] s = '' for i in a: l.append(i) l1 = sorted(l,reverse=True) for i in l1: s+=i #print(s) return s m = 'abcdef' b=re(m) print(b)
9.列表[1,2,3,4,5],請使用map()函式輸出[1,4,9,16,25],並使用列表推導式提取出大於10的數
l = [1,2,3,4,5] def ping(a): return a**2 l1 = map(ping,l) l1 = list(l1) l2 = [i for i in l1 if i > 10] print(l2)