python筆記(面向物件和之前的測試題)
往期作業:
1.檔案操作有哪些模式?請簡述各模式的作用?
r w a rb wb r+ ab
2.s=‘he11o,wox1d!‘請使用 strip方法去掉字串兩端的’‘號
s.strip(’’)
3.使用者輸入一個任意數字n,求1-n之間所有數字中的奇數
for i in range(1,n,2)
4.s= ‘hskakhlkshfkskjakf’,請去除s字串中重複的字母
set(s)(會打亂順序)
5.a = 10
b = 20
def test5(a,b):
print(a,b)
c= test5(b,a)
print©
上述程式碼中,打印出來的值a,b,c分別是什麼?為什麼?
a = 20,b = 10,c = None
6.s=‘123.33sdhf3424.34fdg323.324’,計算字串中所有數字的和
本題結果應為:123.33+3424.34+323.324
(1)\d+.?\d{2}(d{2}:保留兩位小數) (2)\d+.?\d*(全部保留)
第一種解法:
import re
s = '123.33sdhf3424.34fdg323.324'
num = re.findall('\d+\.?\d*',s)
num = [float(i) for i in num]
print(sum(num))
第二種解法:
import re
s = '123.33sdhf3424.34fdg323.324'
num = re.findall('\d+\.?\d*',s)
num = '+'.join(num)
print(num)
print(eval(num))
7.d={‘k1’:‘v1’,‘k2’:[1,2,3],(‘k’,‘3’):{1,2,3}}
請用程式實現:
1)輸出上述字典中 value為列表的key
d={'k1':'v1','k2':[1,2,3],('k','3'):{1,2,3}}
ret = [k for k in d if type(d[k]) is list]
print(ret)
2)如果字典中的key是一個元組,請輸出對應的 value值。
d={'k1':'v1','k2':[1,2,3],('k','3'):{1,2,3}}
ret = [d[k] for k in d if type(k) is tuple]
print(ret)
3)d[(‘k’,‘3’)]對應的 value是一個什麼資料型別
集合
8.如果不使用@ wrapper裝飾器,請在a()之前加入一句程式碼,達到相同的效果
def wrapper(func):
def inner(*arg,**karg):
print(123)
func(*arg,**karg)
return inner
@wrapper #@wrapper == a = wrapper(a)
def a(arg):
print(arg)
a('nihao')
9.請處理檔案7thquestions,輸出所有以’T’開頭的行
with open('7thquestions') as f:
for i in f:
if i.startswith('T'):
print(i)
10.讀登陸資料夾中的程式碼,請為這段程式碼畫流程圖
11默寫10個字串物件的內建方法,描述它的作用
12.有如下程式碼,寫出呼叫的順序以及結果
def f1():
print('func is func1')
def f2():
print('func is func2')
return 1
def f3(func1):
l1 = func1()
print('func is func3')
return l1
print(f3(f2))
輸出結果:
func is func2
func is func3
1
13.建立一個閉包函式需要滿足哪幾點?
內部巢狀函式,內部呼叫外部變數
14.將時間打印出成一個2017/10/0118:08:15的格式
將"2017-11-18"17:43:43″轉換為結構化時間
15.(1).用什麼模組能知道資料夾存不存在?
import os
os.path.isdir()
(2).怎麼獲取這個資料夾的大小?
迴圈資料夾裡所有的大小,然後把大小加起來
16.請寫出一個能夠匹配手機號的正則語句
1[345678][\d]{9}
17.有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?(程式設計題)
cnt = 0
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i == j or i == k or j == k:
continue
cnt += 1
print(cnt,[i,j,k])
二:面向物件
1.請簡述類、物件、例項化、例項這些名詞的含義
2.面向物件的三大特性是什麼?
封裝,多型,繼承
3.有一個類定義:
class Persondef:
def init(self,name,age):
self.name = name
self.age = age
(1)初始化10個不同的物件
(2)求最高age的物件的name
obj = max(obj_list,key = lambda obj : obj.age)
print(obj.name)
4.模擬cs遊戲
(1)人物角色分為警察和匪徒兩種,定義成兩個類
所有的警察的角色都是 police
每個警察都有自己獨有名字,生命值,武器,性別
每個都可以開槍攻擊敵人,切攻擊目標不能是 police
所有的警察的角色都是 terrorist每個匪徒都有自己獨有名字,生命值,武器,性別
每個都可以 開槍攻擊敵人,切攻擊目標不能是 terrorist
(2)例項化一個警察,一個匪徒,警察攻擊匪徒,匪徒掉血(
(3)提取警察類和匪徒類相似之處 定義成一個父類,使用繼承的方式減少程式碼重複