日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一次上机试题(面向对象)

發(fā)布時間:2025/7/25 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一次上机试题(面向对象) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 1.文件操作有哪些模式?請簡述各模式的作用 2 r:讀, 默認(rèn)文件打開就是以r模式,這個文件前提要存在不然報錯。 3 w:寫,文件不存在,會自動創(chuàng)建,存在話,就覆蓋寫。 4 a:追加,文件末尾追加寫入內(nèi)容。 5 r+:可讀也可寫。 6 w+:可寫,,不過寫是覆蓋的寫' 7 a+,追加寫 8 9 2.s = '**hello,world!**'請使用strip方法去掉字符串兩端的'*' 10 s = '**hello,world!**' 11 s = s.strip('*') 12 print(s) 13 14 3.用戶輸入一個任意數(shù)字n,求1-n之間所有數(shù)字中的奇數(shù) 15 16 while True: 17 num_input = input('請輸入數(shù)字:').strip() 18 if num_input.isdigit() and int(num_input) != 0: 19 num_input = int(num_input) 20 for num in range(1, num_input + 1): 21 if num % 2 == 1: 22 print(num) # 顯示奇數(shù) 23 24 else: 25 continue 26 else: 27 print("輸入非法,請重新錄入") 28 continue 29 30 31 4.s = 'hskakhlkshfkskjakf',請去除s字符串中重復(fù)的字母 32 s = 'hskakhlkshfkskjakf' 33 s_new = [] 34 for api in s.strip(): 35 if api in s_new: 36 continue 37 else: 38 s_new.append(api) 39 s = "".join(s_new) 40 print(s) 41 42 5.a=10 43 b=20 44 def test5(a,b): 45 print(a,b) 46 c = test5(b,a) 47 print(c) 48 b=20 49 50 def test5(a,b): 51 52 print(a,b) 53 c = test5(b,a) 54 print(c) 55 上述代碼中,打印出來的值a,b,c分別是什么?為什么? 56 報錯,c=test5(b,a),調(diào)用test5,程序的內(nèi)容加載到內(nèi)存,,,從事例看,是位置傳值 ,實參b-->a,實參a--->b,c是函數(shù)的結(jié)果 57 b是直接找到在函數(shù)里找不到, 58 就找外面找到了b=20,,b賦值給形參a, ,所以a會有值 59 同理,,由于實參a沒定義,找不到,沒法給b值,所以直接報錯,并結(jié)束下面代碼的運(yùn)行,print(a,b)不會被執(zhí)行 60 同理,c是在是全局,有定義,由于函數(shù)定義中沒有return,所以c是none, 61 總結(jié):實參a沒定義,報錯,中止函數(shù)體內(nèi)容被執(zhí)行,,所以b,c沒被輸出 62 63 64 6.s = '123.33sdhf3424.34fdg323.324',計算字符串中所有數(shù)字的和 65 s = '123.33sdhf3424.34fdg323.324' 66 import re 67 result = "" 68 s = re.findall('\d+\.?\d+',s) 69 for i in s: 70 result = "+".join(s) 71 print("表達(dá)式:%s 的和是"%result) #123.33+3424.34+323.324 72 su = 0 73 for i in result.split("+"): 74 i = float(i) 75 su += i 76 print(i) #323.324 77 78 本題結(jié)果應(yīng)為:123.33+3424.34+323.32 79 7.d={'k1':'v1','k2':[1,2,3],('k','3'):{1,2,3}} 80 請用程序?qū)崿F(xiàn): 81 1)輸出上述字典中value為列表的key 82 2)如果字典中的key是一個元祖,請輸出對應(yīng)的value值。 83 3)d[('k','3')]對應(yīng)的value是一個什么數(shù)據(jù)類型 84 d={'k1':'v1','k2':[1,2,3],('k','3'):{1,2,3}} 85 for key,value_re in d.items(): 86 if type(value_re) == list: 87 print(key)#k2 88 elif type(key) == tuple: 89 print(d[key]) #{1, 2, 3} 90 ty = {"<class 'list'>": "list", "<class 'dict'>": "dict", "<class 'set'>": "set"} 91 for i in ty.keys(): 92 if i == str(type(d[key])): 93 print(ty[i]) #set 94 95 8.如果不使用@wrapper裝飾器,請在a()之前加入一句代碼,達(dá)到相同的效果 96 def wrapper(func): 97 def inner(*arg, **kwargs): 98 func(*arg, **kwargs) 99 return inner 100 101 @wrapper 102 def a(arg): 103 print(arg) 104 105 a() 106 107 def wrapper(func): 108 def inner(*arg, **kwargs): 109 func(*arg, **kwargs) 110 return inner 111 # @wrapper 112 def a(arg): 113 print(arg) 114 a = wrapper(a) #這里必須注意,a必須是那個調(diào)用函數(shù)名 115 a(1) 116 117 9.請?zhí)幚砦募?th_questions,輸出所有以'T'開頭的行 118 with open ("7th_questions",'r',encoding='utf-8') as f: 119 for line in f: 120 if line.startswith('T'): 121 print(line.strip()) 122 else: 123 continue 124 125 10.讀代碼,請為這段代碼畫流程圖 126 127 11 默寫字符串對象的內(nèi)置方法,越多越好 128 plist = dir(str) 129 s = "" 130 p = [] 131 for i in plist: 132 if i.startswith("__"): 133 p.append(i) 134 s = ",".join(p) 135 136 else: 137 continue 138 print(s ) 139 __add__,__class__,__contains__,__delattr__,__dir__,__doc__,__eq__,__format__ 140 ,__ge__,__getattribute__,__getitem__,__getnewargs__,__gt__,__hash__,__init__, 141 __iter__,__le__,__len__,__lt__,__mod__,__mul__,__ne__,__new__,__reduce__,__reduce_ex__, 142 __repr__,__rmod__,__rmul__,__setattr__,__sizeof__,__str__,__subclasshook__ 143 144 145 二 面向?qū)ο?146 147 1.請簡述類、對象、實例化、實例這些名詞的含義: 148 類是一組有著相似特征或者技能的對象集合 149 對象:從類中實例化出來的 150 實例化:產(chǎn)生一個從類中產(chǎn)生一個對象就叫實例化(p = classname.() 151 p 就叫一個classname實例/對象 152 2.面向?qū)ο蟮娜筇匦允鞘裁?#xff1f; 153 封裝,繼承,多態(tài) 154 3.什么是方法?類中可以定義哪幾種方法? 155 定義具有有著相同技能、功能叫方法,可以定義構(gòu)造方法,普通方法,非綁定方法,調(diào)用內(nèi)置方法 156 4.什么是屬性?類中可以定義哪幾種屬性? 157 有著相同特征叫屬性,定義:私有屬性,裝飾屬性 158 5.請簡述類方法和靜態(tài)方法有哪些區(qū)別? 159 類方法:可以綁定到任何從類中實例化出來的對象身上,,并且它的第一個參數(shù)是self,實例化出來的對象引用被當(dāng)作第一 160 參數(shù)傳給self 161 靜態(tài)方法:不需要給參數(shù),調(diào)用方式直接是類名.靜態(tài)方法名() ,也可以是對象調(diào)用 對象名.靜態(tài)方法名() 162 6.請簡述新式類和經(jīng)典類的區(qū)別? 163 py2中,沒有繼承object都是經(jīng)典類,嘗試優(yōu)先 164 py3中,所有類都叫新式類,廣度優(yōu)先 165 7.有一個類定義: 166 class Person: 167 def __init__(self,name,age): 168 self.name = name 169 self.age = age 170 171 1)初始化10個不同的對象 172 2)求最高age的對象的name 173 import sys 174 class Person: 175 def __init__(self,name,age): 176 self.name = name 177 self.age = age 178 dic1 = {} 179 l = [] 180 for i in range(1,11): 181 t = "p%s"%i 182 t = Person("name%s"%i,i) 183 dic1[t.name] = i 184 l.append(i) 185 if t.age == max(l): 186 print(t.name) 187 188 189 8. 模擬cs游戲 190 人物角色分為警察和匪徒兩種,定義成兩個類 191 class public_people: 192 def __init__(self,name,sex,livelife,wuqi): 193 self.name = name 194 self.wuqi = wuqi 195 self.sex = sex 196 self.livelife = livelife #生命力 197 class police(public_people): 198 acctrvalue = 800 #攻擊力 199 def __init__(self,name,sex,livelife,wuqi): 200 super().__init__(name,sex,livelife,wuqi) 201 202 def attrk (self,tr_obj): 203 tr_obj.livelife -= self.acctrvalue 204 return tr_obj.acctrvalue 205 class terrorist(public_people): 206 acctrvalue = 300 207 def __init__(self,name,sex,livelife,wuqi): 208 super().__init__(name,sex,livelife,wuqi) 209 def attrk(self,pol_obj): 210 pol_obj.livelife -= self.acctrvalue 211 return pol_obj.livelife 212 p1 = police('name1','male',1000,'dao') 213 t1 = terrorist('t1','male',1000,'dao') 214 p1.attrk(t1) 215 print(t1.livelife,p1.name) #200 name1 216 t1.attrk(p1) 217 print(p1.livelife,t1.name) 218 219 所有的警察的角色都是police 220 每個警察都有自己獨(dú)有名字,生命值,武器,性別 221 每個都可以開槍攻擊敵人,切攻擊目標(biāo)不能是police 222 223 所有的警察的角色都是terrorist 224 每個匪徒都有自己獨(dú)有名字,生命值,武器,性別 225 每個都可以開槍攻擊敵人,切攻擊目標(biāo)不能是terrorist 226 227 228 9. 實例化一個警察,一個匪徒,警察攻擊匪徒,匪徒掉血 229 230 10. 提取警察類和匪徒類相似之處定義成一個父類,使用繼承的方式減少代碼重復(fù) 231 232 11 233 234 class Base: 235 def f1(self): 236 self.f2() 237 238 def f2(self): 239 print('...') 240 241 class Foo(Base): 242 def f2(self): 243 print('9999') 244 245 obj = Foo() 246 obj.f1() 247 248 問題1:面向?qū)ο笾械膕elf指的什么? 249 問題2:運(yùn)行結(jié)果并簡述原因 250 class Base: 251 def f1(self): 252 self.f2() 253 254 def f2(self): 255 print('...') 256 257 class Foo(Base): 258 def f2(self): 259 print('9999') 260 pass 261 262 obj = Foo() 263 obj.f1() #9999 264 self:是調(diào)用對象的引用 265 輸出:9999,是繼承首先是從對象本身找,沒有定義f1,--->對象的類中找,也沒有這個f1, 266 --->去父類中找到f1,f1中調(diào)用的是self.f2,,而名稱空間已經(jīng)有self.f2,所以對象優(yōu)先運(yùn)行自己的f2 267 268 269 三 并發(fā)編程 270 271 1 線程,進(jìn)程,協(xié)程的區(qū)別? 272 線程:最小的執(zhí)行單位 273 進(jìn)程:是資源管理單位 274 275 2 GIL是什么,對于python有什么影響? 276 gil是全局解釋器鎖,,同一時刻,同一進(jìn)程,只有一個線程被執(zhí)行 277 3 解釋LOCK,RLOCL,EVENT,samphore的應(yīng)用場景 278 279 4 基于對列實現(xiàn)一個生產(chǎn)者消費(fèi)者模型,要求:隊列內(nèi)元素不能超過5個,一旦有五個元素了,生產(chǎn)者不再生產(chǎn),其他內(nèi)容 自由擴(kuò)散 280 281 5 基于selectors模塊實現(xiàn)并發(fā)聊天,退出某一個客戶端不能影響其他用戶 282 import selectors 283 import socket 284 sock = socket.socket() 285 sock.bind(("127.0.0.1",8000)) 286 sock.listen(5) 287 sock.setblocking(False) 288 289 sel = selectors.DefaultSelector() #選擇最優(yōu)級模型 290 291 def accept(conn,mask): 292 conn,addr = sock.accept() 293 print(conn) 294 sel.register(conn,selectors.EVENT_READ,read) 295 sel.register(sock,selectors.EVENT_READ,accept) 296 def read(conn,mask): 297 try: 298 data = conn.recv(1024) 299 print(data.decode('utf-8')) 300 send_data = input(">>>").encode('utf-8') 301 conn.send(send_data) 302 except Exception as e: 303 sel.unregister(conn) #吊消連接 304 305 306 307 while True: 308 events = sel.select() #監(jiān)聽數(shù)據(jù) [(key,mask),(key,mask)] 309 for key,mask in events: 310 # print(key.data) #產(chǎn)生一個函數(shù) 311 # print(key.fileobj) #產(chǎn)生一個fd(文件描述符) 312 func = key.data 313 obj = key.fileobj 314 func(obj,mask) 315 # break 316 317 318 clinet 319 import socket 320 sock = socket.socket() 321 sock.connect(("127.0.0.1",8000)) 322 while True: 323 send_data = input(">>>") 324 sock.send(send_data.encode('utf-8')) 325 recv_data = sock.recv(1024) 326 print(recv_data.decode('utf-8'))

?

件前提要存在不然報錯。 w:寫,文件不存在,會自動創(chuàng)建,存在話,就覆蓋寫。 a:追加,文件末尾追加寫入內(nèi)容。 r+:可讀也可寫。 w+:可寫,,不過寫是覆蓋的寫' a+,追加寫

轉(zhuǎn)載于:https://www.cnblogs.com/hongyongshang/p/6846614.html

總結(jié)

以上是生活随笔為你收集整理的一次上机试题(面向对象)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。