1.文件操做有哪些模式?請簡述各模式的做用python
答:r模式只讀 w模式只寫 a模式只添加 r+可讀可寫 w+可寫可讀 a+可讀可添加 rb 二進制只讀 wb 二進制只寫 ab 二進制添加git
2.s = ‘**hello,world!**‘請使用strip方法去掉字符串兩端的’*’號api
第一種:
s=s.strip(‘**‘)
第二種
s=s.lstrip(‘**")
s=s.rstrip(‘**‘)
3.用戶輸入一個任意數字n,求1-n之間全部數字中的奇數app
li=[]
n=input(‘請輸入一個數字‘)
n=int(n)
for i in range(1,n+1): //範圍1到n,range不取n因此是n+1
if i%2==1: //取餘看等於1是奇數
li.append(i) //是奇數添加進列表
print(li)函數
4.s = ‘hskakhlkshfkskjakf‘,請去除s字符串中重複的字母對象
答:
s = ‘hskakhlkshfkskjakf‘
li=[]
for item in s:
if item not in li: //循環字符串,若是這個字符不在列表中就添加進去
li.append(item)
s=‘‘ //建立一個空字符串
for it in li: //循環這個列表中不重複的字符,由於沒有才添加進列表因此不重複
s+=it //這些字符串相加起來就是一整個字符串而後打印
print(s)繼承
5.a=10
b=20
def test5(a,b):
print(a,b)
c = test(b,a)
print(c)
上述代碼中,打印出來的值a,b,c分別是什麼?爲何?
答:test後面沒有5沒法調用這個函數有問題 若是有5的話,調用的時候是反着傳的,b的值給了a因此是20,a的值給了b因此是10,這個函數沒有返回值,全部c是none
6.s = ‘123.33sdhf3424.34fdg323.324‘,計算字符串中全部數字的和
本題結果應爲:123.33+3424.34+323.32
答:import re
s = ‘123.33sdhf3424.34fdg323.324‘
v=re.findall(‘\d+.*?\d+‘,s) //用正則取數字
c=0
for item in v: //循環出v而後變成浮點類型相加
item =float(item)
c+=item
print(c)索引
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}}
for item in d:
if type(d[item]) == list: //若是這個key的value類型是list的話就打印出來
print(item)
2)若是字典中的key是一個元祖,請輸出對應的value值。
答:d={‘k1‘:‘v1‘,‘k2‘:[1,2,3],(‘k‘,‘3‘):{1,2,3}}
for item in d:
if type(item) == tuple: //方法同上,不過判斷的是key
print(d[item])
3)d[(‘k‘,‘3‘)]對應的value是一個什麼數據類型
答:集合 set
8.若是不使用@wrapper裝飾器,請在a()以前加入一句代碼,達到相同的效果
def wrapper(func):
def inner(*arg, **kwargs):
func(*arg, **kwargs)
return inner遊戲
@wrapper
def a(arg):
print(arg)ip
a()
答:在a()以前加一句 a=wrapper(a)
9.請處理文件7th_questions,輸出全部以‘T‘開頭的行
答:f=open(‘7th_questions‘,encoding=‘utf-8‘,mode=‘r‘)
v=f.readlines()
for item in v:
if item[0]==‘T‘:
print(item)
11 默寫10個字符串對象的內置方法,描述它的做用
-strip() 去括號去其餘
-replace() 替換
-upper() 全變大寫
-lower() 變小寫
-capitalize() 首字母大寫
-isdigit() 判斷是否數字
-split() 分割
-join() 迭代
-count() 看一個字符在字符串出現多少次
-starswith() 看第一個字符是不是
-input() 輸入一個字符
1.請簡述類、對象、實例化、實例這些名詞的含義
答:類:具備屬性和方法的事物
對象:能夠實實在在描述出來的有屬性的事物
實例化:創造對象的過程
實例:將對象利用類的屬性和方法創造出來出來
2.面向對象的三大特性是什麼?(3分)
封裝
繼承
多態
3.什麼是方法?類中能夠定義哪幾種方法?
答:類中的函數就是方法
def __init__(self)方法,對象屬性
def p(self)方法 可直接調用的方法
私有方法
類方法
靜態方法
普通方法
4.什麼是屬性?類中能夠定義哪幾種屬性?
類能夠賦給對象或者本身自己可調用的值 靜態屬性和對象屬性,私有屬性
5.請簡述類方法和靜態方法有哪些區別?
類方法必須傳一個類可使用類屬性,靜態方法沒必要須傳參不能用類屬性
6.請簡述新式類和經典類的區別?
pythong2中要用新式的話,就要傳基類object,經典類不用
新式類是廣度優先
經典類是深度優先
7.有一個類定義:
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
1)初始化10個不一樣的對象
v=Person(‘t‘,2)
v_1=Person(‘v‘,3)
v_2=Person(‘w‘,4)
v_3=Person(‘q‘,5)
v_4=Person(‘p‘,7)
v_5=Person(‘i‘,11)
v_6=Person(‘r‘,22)
v_7=Person(‘yy‘,33)
v_8=Person(‘oi‘,54)
v_9=Person(‘tt‘,123)
2)求最高age的對象的name
d={‘v‘:v,‘v_1‘:v_1,‘v_2‘:v_2,‘v_3‘:v_3,‘v_4‘:v_4,‘v_5‘:v_5,
‘v_6‘:v_6,‘v_7‘:v_7,‘v_8‘:v_8,‘v_9‘:v_9}
li=[0,1]
for item in d.values(): //設置一個列表前兩個值是0,1
if item.age >li[0]: //循環字典的value,若是值比列表0索引值大,就替換,1索引的key值也替換
li[0]=item.age
li[1]=item
else:
pass
print(li[1].name) //最後列表1索引留下的ey名就是值最大的
8. 模擬cs遊戲
1)人物角色分爲警察和匪徒兩種,定義成兩個類
全部的警察的角色都是police
每一個警察都有本身獨有名字,生命值,武器,性別
每一個均可以開槍攻擊敵人,切攻擊目標不能是police
全部的警察的角色都是terrorist
每一個匪徒都有本身獨有名字,生命值,武器,性別
每一個均可以開槍攻擊敵人,切攻擊目標不能是terrorist
答:
class Jing:
def __init__(self,name,blood,wuqi,sex,aggr):
self.name=name
self.blood = blood
self.wuqi = wuqi
self.sex = sex
self.aggr = aggr
self.juese=‘police‘
def attack(self,fei):
if fei.juese !=‘police‘:
print(‘%s開槍打了%s‘%(self.name,fei.name))
fei.blood=fei.blood-self.aggr
class Fei:
juese=‘feitu‘
def __init__(self,name,blood,wuqi,sex,aggr):
self.name=name
self.blood = blood
self.wuqi = wuqi
self.sex = sex
self.aggr = aggr
self.juese = ‘terrorist‘
def attack(self,jing):
if jing.juese != ‘terrorist‘:
print(‘%s開槍打了%s‘ % (self.name,jing.name))
jing.blood = jing.blood - self.aggr
2)實例化一個警察,一個匪徒,警察攻擊匪徒,匪徒掉血
class Jing:
def __init__(self,name,blood,wuqi,sex,aggr):
self.name=name
self.blood = blood
self.wuqi = wuqi
self.sex = sex
self.aggr = aggr
self.juese=‘police‘
def attack(self,fei):
if fei.juese !=‘police‘:
print(‘%s開槍打了%s‘%(self.name,fei.name))
fei.blood=fei.blood-self.aggr
print(‘%s掉血%s‘%(fei.name,fei.blood))
class Fei:
juese=‘feitu‘
def __init__(self,name,blood,wuqi,sex,aggr):
self.name=name
self.blood = blood
self.wuqi = wuqi
self.sex = sex
self.aggr = aggr
self.juese = ‘terrorist‘
def attack(self,jing):
if jing.juese != ‘terrorist‘:
print(‘%s開槍打了%s‘ % (self.name,jing.name))
jing.blood = jing.blood - self.aggr
print(‘%s掉血%s‘ % (jing.name,jing.blood))
wujing=Jing(‘wujing‘,20000,‘衝鋒槍‘,‘man‘,500)
feitu=Fei(‘feitu‘,20000,‘小匕首‘,‘man‘,50)
wujing.attack(feitu)
3)提取警察類和匪徒類類似之處定義成一個父類,使用繼承的方式減小代碼重複
class Person:
def __init__(self,name,blood,wuqi,sex,aggr):
self.name=name
self.blood = blood
self.wuqi = wuqi
self.sex = sex
self.aggr = aggr
class Jing(Person):
def __init__(self,name,blood,wuqi,sex,aggr):
super().__init__(name,blood,wuqi,sex,aggr)
self.juese=‘police‘
def attack(self,fei):
if fei.juese !=‘police‘:
print(‘%s開槍打了%s‘%(self.name,fei.name))
fei.blood=fei.blood-self.aggr
print(‘%s掉血%s‘%(fei.name,fei.blood))
class Fei(Person):
juese=‘feitu‘
def __init__(self,name,blood,wuqi,sex,aggr):
super().__init__(name,blood,wuqi,sex,aggr)
self.juese = ‘terrorist‘
def attack(self,jing):
if jing.juese != ‘terrorist‘:
print(‘%s開槍打了%s‘ % (self.name,jing.name))
jing.blood = jing.blood - self.aggr
print(‘%s掉血%s‘ % (jing.name,jing.blood))
wujing=Jing(‘wujing‘,20000,‘衝鋒槍‘,‘man‘,500)
feitu=Fei(‘feitu‘,20000,‘小匕首‘,‘man‘,50)
wujing.attack(feitu)
11 讀代碼
class Base:
def f1(self):
self.f2()
def f2(self):
print(‘...‘)
class Foo(Base):
def f2(self):
print(‘9999‘)
obj = Foo()
obj.f1()
問題1:面向對象中的self指的什麼?
答:指的是實例化的對象自己
問題2:運行結果並簡述緣由
答:實例化了一個obj,由於Foo的父類是Base因此,子類沒有f1就用父類的f1,有f2就用子類的f2 而後obj調用了f1,在f1中由於self是對象自己,因此f1方法中調用了obj的f2,而由於繼承的規則,不調用父類的f2,因此結果是9999