面试题练习
2.請(qǐng)簡(jiǎn)要說(shuō)明什么是類變量,什么是實(shí)例變量,并觀察以下程序的輸出結(jié)果
? class Person: ? ?name="aaa" p1=Person() p2=Person() p1.name="bbb" print(p1.name) ? print(p2.name) print(Person.name)3.以下語(yǔ)句有什么弊端,name是元祖的時(shí)候,程序會(huì)是什么樣的結(jié)果,如何避免
"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.下面代碼會(huì)輸出什么:
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.這兩個(gè)參數(shù)是什么意思:*args,**kwargs?我們?yōu)槭裁匆褂盟鼈?#xff1f;
?
8.閱讀下面的代碼,它的輸出結(jié)果是什么?
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() ? # 說(shuō)明下列代碼的輸出結(jié)果 ? 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.請(qǐng)寫出一段Python代碼實(shí)現(xiàn)刪除一個(gè)list里面的重復(fù)元素
?
10.單引號(hào),雙引號(hào),三引號(hào)的區(qū)別
?
11.寫一個(gè)函數(shù), 輸入一個(gè)字符串, 返回倒序排列的結(jié)果
輸入:?string_reverse(‘a(chǎn)bcdef')?, 返回: ‘fedcba',寫出你能想到的多種方法
?12.?單例模式(Singleton Pattern)是一種常用的軟件設(shè)計(jì)模式,該模式的主要目的是確保某一個(gè)類只有一個(gè)實(shí)例存在。利用當(dāng)前我們所學(xué)知識(shí),嘗試使得所創(chuàng)建的類是單實(shí)例模式
?
編程練習(xí)
1.定義一個(gè)點(diǎn)(Point)類和直線(Line)類,使用 getLen 方法可以獲得直線的長(zhǎng)度。`?^$q=:dI
提示:
- 設(shè)點(diǎn) A(X1,Y1)、點(diǎn) B(X2,Y2),則兩點(diǎn)構(gòu)成的直線長(zhǎng)度 |AB| = √((x1-x2)2+(y1-y2)2)
- Python 中計(jì)算開(kāi)根號(hào)可使用 math 模塊中的 sqrt 函數(shù)
- 直線需有兩點(diǎn)構(gòu)成,因此初始化時(shí)需有兩個(gè)點(diǎn)(Point)對(duì)象作為參數(shù)
2.列表[1,2,3,4,5],請(qǐng)使用map()函數(shù)輸出[1,4,9,16,25],并使用列表推導(dǎo)式提取出大于10的數(shù),最終輸出[16,25]
3.
坦克
某次戰(zhàn)役中,為便于信息交互,我軍偵察部門將此次戰(zhàn)役的關(guān)鍵高地坐標(biāo)設(shè)定為(x=0,y=0)并規(guī)定,每向東增加100米,x加1,每向北增加100米,y加1。同時(shí),我軍情報(bào)部門也破譯了敵軍向坦克發(fā)送的指揮信號(hào),其中有三種信號(hào)(L,R,M)用于控制坦克的運(yùn)動(dòng),L 和 R 分別表示使令坦克向左、向右轉(zhuǎn)向,M 表示令坦克直線開(kāi)進(jìn)100米,其它信號(hào)如T用于時(shí)間同步,P用于位置較準(zhǔn)。
一日,我軍偵察兵發(fā)現(xiàn)了敵軍的一輛坦克,偵察兵立即將坦克所在坐標(biāo)(P, Q)及坦克前進(jìn)方向(W:西,E:東,N:北,S:南)發(fā)送給指揮部,同時(shí)啟動(dòng)信號(hào)接收器,將坦克接收到的信號(hào)實(shí)時(shí)同步發(fā)往指揮部,指揮部根據(jù)這些信息得以實(shí)時(shí)掌控了該坦克的位置,并使用榴彈炮精準(zhǔn)地?fù)魵Я嗽撎箍恕?/p>
請(qǐng)?jiān)O(shè)計(jì)合理的數(shù)據(jù)結(jié)構(gòu)和算法,根據(jù)坦克接收到的信號(hào),推斷出坦克所在的位置。
設(shè)計(jì)時(shí)請(qǐng)考慮可能的擴(kuò)展情況,并體現(xiàn)出您的設(shè)計(jì)風(fēng)格。
假設(shè),偵察兵發(fā)送給指揮部的信息如下:
坦克坐標(biāo):(11,39)
坦克運(yùn)行方向:W
坦克接收到的信號(hào)為:MTMPRPMTMLMRPRMTPLMMTLMRRMP
其位置應(yīng)該是(9,43),運(yùn)動(dòng)方向?yàn)镋
?
轉(zhuǎn)載于:https://www.cnblogs.com/yanzifamily/p/9704979.html
總結(jié)
- 上一篇: python中的decode(编码)和e
- 下一篇: Windows 10:开机显示C:\WI