面试题练习
2.請簡要說明什么是類變量,什么是實例變量,并觀察以下程序的輸出結果
? class Person: ? ?name="aaa" p1=Person() p2=Person() p1.name="bbb" print(p1.name) ? print(p2.name) print(Person.name)3.以下語句有什么弊端,name是元祖的時候,程序會是什么樣的結果,如何避免
"hi there %s" % name4.閱讀下面的代碼,寫出A0,A1至An的最終值。
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) A1 = range(10) A2 = [i for i in A1 if i in A0] A3 = [A0[s] for s in A0] A4 = [i for i in A1 if i in A3] A5 = {i:i*i for i in A1} A6 = [[i,i*i] for i in A1]
?
5.你如何管理不同版本的代碼?
?
6.下面代碼會輸出什么:
def f(x,l=[]): ? ?for i in range(x): ? ? ? ?l.append(i*i) ? ?print(l) f(2) f(3,[3,2,1]) f(3) ?7.這兩個參數是什么意思:*args,**kwargs?我們為什么要使用它們?
?
8.閱讀下面的代碼,它的輸出結果是什么?
class A(object): ? ?def go(self): ? ? ? ?print "go A go!" ? ?def stop(self): ? ? ? ?print "stop A stop!" ? ?def pause(self): ? ? ? ?raise Exception("Not Implemented") ? class B(A): ? ?def go(self): ? ? ? ?super(B, self).go() ? ? ? ?print "go B go!" ? class C(A): ? ?def go(self): ? ? ? ?super(C, self).go() ? ? ? ?print "go C go!" ? ?def stop(self): ? ? ? ?super(C, self).stop() ? ? ? ?print "stop C stop!" ? class D(B,C): ? ?def go(self): ? ? ? ?super(D, self).go() ? ? ? ?print "go D go!" ? ?def stop(self): ? ? ? ?super(D, self).stop() ? ? ? ?print "stop D stop!" ? ?def pause(self): ? ? ? ?print "wait D wait!" class E(B,C): pass a = A() b = B() c = C() d = D() e = E() ? # 說明下列代碼的輸出結果 ? a.go() b.go() c.go() d.go() e.go() ? a.stop() b.stop() c.stop() d.stop() e.stop() ? a.pause() b.pause() c.pause() d.pause() e.pause() ??
9.請寫出一段Python代碼實現刪除一個list里面的重復元素
?
10.單引號,雙引號,三引號的區別
?
11.寫一個函數, 輸入一個字符串, 返回倒序排列的結果
輸入:?string_reverse(‘abcdef')?, 返回: ‘fedcba',寫出你能想到的多種方法
?12.?單例模式(Singleton Pattern)是一種常用的軟件設計模式,該模式的主要目的是確保某一個類只有一個實例存在。利用當前我們所學知識,嘗試使得所創建的類是單實例模式
?
編程練習
1.定義一個點(Point)類和直線(Line)類,使用 getLen 方法可以獲得直線的長度。`?^$q=:dI
提示:
- 設點 A(X1,Y1)、點 B(X2,Y2),則兩點構成的直線長度 |AB| = √((x1-x2)2+(y1-y2)2)
- Python 中計算開根號可使用 math 模塊中的 sqrt 函數
- 直線需有兩點構成,因此初始化時需有兩個點(Point)對象作為參數
2.列表[1,2,3,4,5],請使用map()函數輸出[1,4,9,16,25],并使用列表推導式提取出大于10的數,最終輸出[16,25]
3.
坦克
某次戰役中,為便于信息交互,我軍偵察部門將此次戰役的關鍵高地坐標設定為(x=0,y=0)并規定,每向東增加100米,x加1,每向北增加100米,y加1。同時,我軍情報部門也破譯了敵軍向坦克發送的指揮信號,其中有三種信號(L,R,M)用于控制坦克的運動,L 和 R 分別表示使令坦克向左、向右轉向,M 表示令坦克直線開進100米,其它信號如T用于時間同步,P用于位置較準。
一日,我軍偵察兵發現了敵軍的一輛坦克,偵察兵立即將坦克所在坐標(P, Q)及坦克前進方向(W:西,E:東,N:北,S:南)發送給指揮部,同時啟動信號接收器,將坦克接收到的信號實時同步發往指揮部,指揮部根據這些信息得以實時掌控了該坦克的位置,并使用榴彈炮精準地擊毀了該坦克。
請設計合理的數據結構和算法,根據坦克接收到的信號,推斷出坦克所在的位置。
設計時請考慮可能的擴展情況,并體現出您的設計風格。
假設,偵察兵發送給指揮部的信息如下:
坦克坐標:(11,39)
坦克運行方向:W
坦克接收到的信號為:MTMPRPMTMLMRPRMTPLMMTLMRRMP
其位置應該是(9,43),運動方向為E
?
轉載于:https://www.cnblogs.com/yanzifamily/p/9704979.html
總結
- 上一篇: python中的decode(编码)和e
- 下一篇: PE知识复习之PE的两种状态