1. 程式人生 > >python筆記(面向物件和之前的測試題)

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)提取警察類和匪徒類相似之處 定義成一個父類,使用繼承的方式減少程式碼重複