




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章Python與編程環(huán)境1.Python語(yǔ)言的特點(diǎn)與應(yīng)用領(lǐng)域特點(diǎn)?簡(jiǎn)潔優(yōu)雅:語(yǔ)法接近自然語(yǔ)言,代碼量小。?解釋執(zhí)行:無(wú)需顯式編譯,跨平臺(tái)“一次編寫,到處運(yùn)行”。?動(dòng)態(tài)類型:變量在運(yùn)行時(shí)綁定類型,開(kāi)發(fā)效率高。?豐富的標(biāo)準(zhǔn)庫(kù)與第三方生態(tài)(PyPI>45萬(wàn)包)。?多范式:支持面向?qū)ο?、函?shù)式、過(guò)程式及異步編程。?可擴(kuò)展:可用C/C++/Fortran編寫性能瓶頸模塊。主要應(yīng)用領(lǐng)域?Web與互聯(lián)網(wǎng):Django、Flask、FastAPI…?數(shù)據(jù)科學(xué):NumPy、Pandas、SciPy、Scikit-learn…?人工智能/深度學(xué)習(xí):TensorFlow、PyTorch…?自動(dòng)化運(yùn)維/DevOps:Ansible、SaltStack…?網(wǎng)絡(luò)爬蟲(chóng):requests、Scrapy…?桌面與游戲:PyQt、Tkinter、Pygame…?嵌入式/物聯(lián)網(wǎng):MicroPython、CircuitPython…2.Python程序的運(yùn)行過(guò)程(簡(jiǎn)述)源碼(.py)→解釋器逐行讀取→編譯成字節(jié)碼(.pyc)→Python虛擬機(jī)(PVM)按字節(jié)碼逐條解釋執(zhí)行→輸出結(jié)果。3.編譯方式vs解釋方式編譯方式:一次性把全部源代碼翻譯成機(jī)器碼,生成可獨(dú)立執(zhí)行的目標(biāo)文件;執(zhí)行速度快,但跨平臺(tái)需重新編譯(如C/C++)。解釋方式:程序運(yùn)行時(shí)由解釋器逐行翻譯并立即執(zhí)行;跨平臺(tái)好、調(diào)試方便,但速度通常慢于編譯型(如Python、JavaScript)。4.在IDLE中運(yùn)行與調(diào)試(1)運(yùn)行:?打開(kāi)文件→F5或菜單Run→RunModule。(2)調(diào)試:?在需要暫停的行按F12設(shè)置斷點(diǎn)。?Debug→Debugger打開(kāi)調(diào)試窗口,再運(yùn)行程序。?使用“Go”、“Step”、“Over”、“Out”等按鈕單步執(zhí)行,查看變量值。5.利用IDLE與PyCharm輸出消費(fèi)單print('*****************消費(fèi)單**************')print('購(gòu)買物品單價(jià)數(shù)量金額')print('運(yùn)動(dòng)衫56.002112.00')print('網(wǎng)球鞋168.001168.00')print('網(wǎng)球拍270.001270.00')print('**************************************')print('折扣:8折')print('消費(fèi)總金額:¥440.0')print('實(shí)際交費(fèi):¥500.0')print('找錢:¥60.0')print('本次購(gòu)物所獲得的積分:13')第2章Python語(yǔ)法基礎(chǔ)1.Python標(biāo)識(shí)符命名規(guī)則?由字母、數(shù)字、下劃線組成,不能以數(shù)字開(kāi)頭。?區(qū)分大小寫;不能使用關(guān)鍵字(如if、class)。?建議:常量全大寫,變量/函數(shù)/模塊小寫加下劃線(PEP8)。2.Python變量賦值與數(shù)據(jù)類型?賦值即創(chuàng)建變量:`變量=對(duì)象`,對(duì)象自帶類型,變量無(wú)類型。?常用內(nèi)置類型:–數(shù)值:int、float、complex–布爾:bool–字符串:str–容器:list、tuple、dict、set…?動(dòng)態(tài)類型:同一變量可先后指向不同類型對(duì)象。3.字符串格式化三種方式①%格式化:`"姓名:%s,年齡:%d"%(name,age)`②str.format:`"姓名:{},年齡:{}".format(name,age)`③f-string(推薦):`f"姓名:{name},年齡:{age}"`4.存儲(chǔ)用戶個(gè)人信息name:str="張三"#字符串a(chǎn)ge:int=20#整數(shù)weight:float=65.5#浮點(diǎn)數(shù)5.購(gòu)物車功能(蘋果&橘子)#水果單價(jià)apple_price=6.6orange_price=5.0#輸入購(gòu)買斤數(shù)apple_weight=float(input("請(qǐng)輸入蘋果的斤數(shù):"))orange_weight=float(input("請(qǐng)輸入橘子的斤數(shù):"))#計(jì)算total=apple_price*apple_weight+orange_price*orange_weight#輸出print(f"蘋果:{apple_weight}斤,單價(jià):{apple_price}元/斤")print(f"橘子:{orange_weight}斤,單價(jià):{orange_price}元/斤")print(f"總價(jià):{total:.2f}元")6.輸入半徑求圓面積importmathr=float(input("請(qǐng)輸入圓的半徑:"))area=math.pi*r**2print(f"圓的面積為:{area:.2f}")運(yùn)行示例請(qǐng)輸入圓的半徑:3圓的面積為:28.27第3章程序基本流程控制思考與練習(xí)參考答案1.for循環(huán)與while循環(huán)執(zhí)行過(guò)程?for:依次從可迭代對(duì)象取出元素賦值給循環(huán)變量→執(zhí)行循環(huán)體→直到元素取完自動(dòng)結(jié)束。?while:先判斷條件表達(dá)式→若為True則執(zhí)行循環(huán)體→再回到條件判斷,直到條件為False結(jié)束。2.break與continue的區(qū)別?break:立刻終止整個(gè)循環(huán),跳到循環(huán)之后繼續(xù)執(zhí)行。?continue:僅結(jié)束本次迭代,立即開(kāi)始下一輪循環(huán)的判斷。3.pass語(yǔ)句作用占位符,不做任何操作,用于保持語(yǔ)法結(jié)構(gòu)完整,例如空函數(shù)/空類/待實(shí)現(xiàn)分支。4.異常與異常處理機(jī)制異常:程序運(yùn)行期間檢測(cè)到的錯(cuò)誤(如ZeroDivisionError、ValueError)。處理機(jī)制:try→可能出錯(cuò)的代碼except→捕獲并處理異常else→未出異常時(shí)執(zhí)行finally→無(wú)論是否異常都執(zhí)行raise→手動(dòng)拋出異常5.單分支應(yīng)用age=int(input("請(qǐng)輸入年齡:"))ifage>60:print("可以退休了")6.雙分支應(yīng)用age=int(input("請(qǐng)輸入年齡:"))ifage>60:print("可以退休了")else:print("小伙子,加油干!")7.多分支應(yīng)用age=int(input("請(qǐng)輸入年齡:"))if0<=age<=17:stage="青少年"elif18<=age<=35:stage="青年"elif36<=age<=59:stage="中年"elif60<=age<=99:stage="老年"else:stage="未知"print(f"您的年齡是{age}:{stage}")8.用戶登錄系統(tǒng)(先驗(yàn)證驗(yàn)證碼)correct_user="root"correct_pwd="123456"captcha="abc"input_cap=input("請(qǐng)輸入驗(yàn)證碼(abc):")ifinput_cap!=captcha:print("驗(yàn)證碼錯(cuò)誤,登錄失??!")else:username=input("請(qǐng)輸入用戶名:")password=input("請(qǐng)輸入密碼:")ifusername==correct_userandpassword==correct_pwd:print("登錄成功!")else:print("用戶名或密碼錯(cuò)誤!")9.循環(huán)登錄(admin/123456)whileTrue:user=input("用戶名:")pwd=input("密碼:")ifuser=="admin"andpwd=="123456":print("歡迎光臨")breakelse:print("輸入錯(cuò)誤,請(qǐng)重新輸入!")10.猜年齡游戲(允許反復(fù)玩)real_age=18#預(yù)設(shè)答案whileTrue:foriinrange(3):guess=int(input("猜年齡(0~100):"))ifguess==real_age:print("恭喜,猜對(duì)了!")exit()#直接結(jié)束程序else:print("猜錯(cuò)了!")choice=input("已經(jīng)猜了3次,是否繼續(xù)(Y/N)?")ifchoice.lower()!='y':print("游戲結(jié)束,再見(jiàn)!")break第4章典型序列數(shù)據(jù)結(jié)構(gòu)思考與練習(xí)參考答案1.列表、元組、字典的標(biāo)記與創(chuàng)建函數(shù)結(jié)構(gòu)字面量標(biāo)記常用創(chuàng)建函數(shù)列表[]list()元組()tuple()字典{k:v}dict()2.列表vs元組?列表可變,支持增刪改;元組不可變。?列表占用內(nèi)存略大,速度略慢;元組常作字典鍵。3.字典特點(diǎn)&5種操作函數(shù)特點(diǎn):鍵唯一、無(wú)序(3.7起有序)、鍵需可哈希。操作函數(shù)示例:dict.get、dict.pop、dict.keys、dict.values、dict.update4.以s或e結(jié)尾的元素過(guò)濾lst=["red","apples","orange","pink","bananas","blue","black","white"]new_lst=[wforwinlstifw.endswith(('s','e'))]print(new_lst)#['red','apples','orange','blue','white']5.輸入6個(gè)整數(shù)并分類統(tǒng)計(jì)nums=[int(input(f"請(qǐng)輸入第{i+1}個(gè)整數(shù):"))foriinrange(6)]pos_list=[xforxinnumsifx>0]neg_list=[xforxinnumsifx<0]zero_list=[xforxinnumsifx==0]print("正數(shù)個(gè)數(shù):",len(pos_list))print("負(fù)數(shù)個(gè)數(shù):",len(neg_list))print("零的個(gè)數(shù):",len(zero_list))6.外層轉(zhuǎn)元組,小列表添加元素namelist=["tom","kaisa","alisi",["xiaoming","songshu"]]namelist[-1].append("python")#修改內(nèi)部列表tup=tuple(namelist)print(tup)7.能否買下所有商品product=[{"name":"電腦","price":7000},{"name":"鼠標(biāo)","price":30},{"name":"usb電動(dòng)小風(fēng)扇","price":20},{"name":"遮陽(yáng)傘","price":50}]total=sum(p["price"]forpinproduct)print("能"iftotal<=8000else"不能")8.字符串切片str1='1234567890'print(str2:=str1[0:3])#123print(str2:=str1[-3:])#890print(str2:=str1[:])#1234567890print(str2:=str1[6:])#7890print(str2:=str1[0:-2])#12345678print(str2:=str1[2])#3print(str2:=str1[-1])#0print(str2:=str1[::-1])#0987654321print(str2:=str1[-3:-1])#89print(str2:=str1[::2])#135799.生成100~999不重復(fù)6個(gè)隨機(jī)數(shù)importrandomlucky=random.sample(range(100,1000),6)print("幸運(yùn)兒編號(hào):",lucky)10.正則提取身份證省份importreid_pattern=pile(r'^(\d{2})\d{4}')#前兩位為省級(jí)碼province_map={'11':'北京','12':'天津','13':'河北','14':'山西','15':'內(nèi)蒙古','21':'遼寧','22':'吉林','23':'黑龍江','31':'上海','32':'江蘇','33':'浙江','34':'安徽','35':'福建','36':'江西','37':'山東','41':'河南','42':'湖北','43':'湖南','44':'廣東','45':'廣西','46':'海南','50':'重慶','51':'四川','52':'貴州','53':'云南','54':'西藏','61':'陜西','62':'甘肅','63':'青海','64':'寧夏','65':'新疆'}id_card=input("請(qǐng)輸入18位身份證號(hào):")m=id_pattern.match(id_card)ifm:code=m.group(1)print("省份:",province_map.get(code,"未知"))else:print("格式錯(cuò)誤")11.統(tǒng)計(jì)《水調(diào)歌頭》字符出現(xiàn)次數(shù)fromcollectionsimportCounterpoem="""明月幾時(shí)有,把酒問(wèn)青天。不知天上宮闕,今夕是何年?我欲乘風(fēng)歸去,又恐瓊樓玉宇,高處不勝寒。起舞弄清影,何似在人間!轉(zhuǎn)朱閣,低綺戶,照無(wú)眠。不應(yīng)有恨,何事長(zhǎng)向別時(shí)圓?人有悲歡離合,月有陰晴圓缺,此事古難全。但愿人長(zhǎng)久,千里共嬋娟。"""counter=Counter(poem)forch,cntinsorted(counter.items(),key=lambdax:(-x[1],x[0])):print(f"{ch}:{cnt}")12.取快遞人員名單(利用集合去重)names=set()whileTrue:n=input("請(qǐng)輸入快遞人員姓名(直接回車結(jié)束):").strip()ifnotn:breaknames.add(n)print("需要取快遞的人員名單:",names)13.替換違禁詞text=input("請(qǐng)輸入評(píng)價(jià)內(nèi)容:")forwin["唯一","神效"]:text=text.replace(w,'*'*len(w))print("處理后內(nèi)容:",text)14.提取E-mail地址importretext=input("請(qǐng)輸入文本:")emails=re.findall(r'\b[\w.-]+@[\w.-]+\.\w+\b',text)print("提取到的郵箱:",emails)15.時(shí)間加5分30秒fromdatetimeimportdatetime,timedeltat_str=input("輸入時(shí)間(HH:MM:SS):")t=datetime.strptime(t_str,"%H:%M:%S")new_t=t+timedelta(minutes=5,seconds=30)print("新時(shí)間:",new_t.strftime("%H:%M:%S"))第5章函數(shù)與函數(shù)式編程思考與練習(xí)參考答案1.可變參數(shù)種類及特點(diǎn)?*args:接收任意數(shù)量的位置參數(shù),函數(shù)內(nèi)為元組。?**kwargs:接收任意數(shù)量的關(guān)鍵字參數(shù),函數(shù)內(nèi)為字典。?僅限位置/僅限關(guān)鍵字(Python3.8+):在形參列表用`/`或`*`分隔,限制傳參方式。2.參數(shù)傳遞區(qū)別?基本數(shù)據(jù)類型(int、float、str…)屬于不可變對(duì)象;函數(shù)內(nèi)修改形參不會(huì)影響實(shí)參。?組合數(shù)據(jù)類型(list、dict、set…)屬于可變對(duì)象;函數(shù)內(nèi)若對(duì)形參做原地修改(append、pop等),實(shí)參隨之改變。如需避免,可在函數(shù)內(nèi)做拷貝。3.判斷偶數(shù)defis_even(num:int)->bool:returnnum%2==0#測(cè)試print(is_even(7),is_even(8))#FalseTrue4.階梯水費(fèi)計(jì)算defwater_fee(volume:int)->float:ifvolume<=180:returnvolume*5elifvolume<=260:return180*5+(volume-180)*7else:return180*5+80*7+(volume-260)*9vol=int(input("請(qǐng)輸入年度用水量(m3):"))print(f"應(yīng)繳水費(fèi):{water_fee(vol):.2f}元")5.歌手打分(可變參數(shù))defavg_score(*scores):iflen(scores)<3:raiseValueError("評(píng)委至少3人")total=sum(scores)-max(scores)-min(scores)returntotal/(len(scores)-2)scores=list(map(float,input("請(qǐng)輸入評(píng)委打分,空格分隔:").split()))print(f"去掉最高最低后的平均分:{avg_score(*scores):.2f}")6.用map規(guī)范化英文名names=['adam','LISA','barT']normalized=list(map(lambdas:s.capitalize(),names))print(normalized)#['Adam','Lisa','Bart']7.用filter找出平方根為整數(shù)的數(shù)importmathnums=list(filter(lambdax:math.isqrt(x)**2==x,range(1,101)))print(nums)#[1,4,9,16,25,36,49,64,81,100]8.用元組記錄并統(tǒng)計(jì)一周溫度deftemp_stats(week_temps):"""week_temps=((最高,最低),...)"""highest=max(t[0]fortinweek_temps)lowest=min(t[1]fortinweek_temps)avg_high=sum(t[0]fortinweek_temps)/7avg_low=sum(t[1]fortinweek_temps)/7returnhighest,lowest,avg_high,avg_low#示例:一周最高/最低溫度week=((28,18),(30,20),(27,19),(26,17),(29,21),(31,22),(30,20))h,l,ah,al=temp_stats(week)print(f"一周最高:{h}℃,最低:{l}℃,平均最高:{ah:.1f}℃,平均最低:{al:.1f}℃")第6章面向?qū)ο缶幊袒A(chǔ)思考與練習(xí)參考答案1.類與對(duì)象?類(Class):抽象的模板,描述一類事物的共同屬性與行為。?對(duì)象(Object):類的具體實(shí)例,擁有類定義的屬性和方法。示例:classPerson:#定義類def__init__(self,name):=name#屬性defgreet(self):#方法print(f"Hello,I'm{}")p=Person("Alice")#創(chuàng)建對(duì)象p.greet()#調(diào)用方法2.類的繼承classAnimal:defspeak(self):print("animalsound")classCat(Animal):#繼承defspeak(self):print("meow")c=Cat()c.speak()#meow3.多態(tài)(Polymorphism)不同子類對(duì)象調(diào)用同名方法表現(xiàn)出不同行為。defanimal_sound(animal):animal.speak()animal_sound(Cat())#meowanimal_sound(Animal())#animalsound4.封裝(Encapsulation)把屬性設(shè)為私有(雙下劃線),對(duì)外提供公開(kāi)方法。classBankAccount:def__init__(self,balance):self.__balance=balancedefdeposit(self,money):self.__balance+=moneydefget_balance(self):returnself.__balance5.常用魔法方法?__init__:構(gòu)造器?__str__:print(obj)時(shí)的字符串?__len__:len(obj)調(diào)用?__getitem__:索引/切片?__call__:讓實(shí)例像函數(shù)一樣可調(diào)用示例:classVector:def__init__(self,x,y):self.x,self.y=x,ydef__str__(self):returnf"Vector({self.x},{self.y})"6.Dog類classDog:legs=4#類屬性:4條腿def__init__(self,name,color):=nameself.color=colordefbark(self):print(f"{}:汪汪!我有{self.legs}條腿。")d=Dog("旺財(cái)","棕色")d.bark()7.Student類classStudent:def__init__(self,name,age,scores):=nameself.age=ageself.scores=scores#[語(yǔ)文,數(shù)學(xué),英語(yǔ)]defget_name(self)->str:returndefget_age(self)->int:returnself.agedefget_course(self)->int:returnmax(self.scores)#測(cè)試zhangsan=Student('張三',22,[70,80,90])print(zhangsan.get_name(),zhangsan.get_age(),zhangsan.get_course())8.汽車類classCar:def__init__(self,rank,color,brand,mileage=0):self.rank=rankself.color=colorself.brand=brandeage=mileagedefset_mileage(self,km):eage=kmdefget_mileage(self):returneage#創(chuàng)建兩個(gè)實(shí)例car1=Car("SUV","紅色","奔馳")car2=Car("轎車","黑色","寶馬",1200)print(car1.rank,car1.color,car1.brand,car1.get_mileage())print(car2.rank,car2.color,car2.brand,car2.get_mileage())car1.set_mileage(5000)print("car1最新里程:",car1.get_mileage())9.Person基類及派生類classPerson:name="人類"defwork(self):print("正在工作...")classStudent(Person):def__init__(self):print("我是學(xué)生")defwork(self):print("學(xué)生在學(xué)習(xí)")classTeacher(Person):name="老師"#修改類屬性def__init__(self):print("我是老師")defwork(self):print("老師在授課")st=Student()te=Teacher()st.work()#學(xué)生在學(xué)習(xí)te.work()#老師在授課print(,)10.四邊形→平行四邊形→矩形classQuadrilateral:def__init__(self,a,b,c,d):self.a,self.b,self.c,self.d=a,b,c,ddefinfo(self):print("四邊形邊長(zhǎng):",self.a,self.b,self.c,self.d)classParallelogram(Quadrilateral):def__init__(self,side,height):super().__init__(side,side,side,side)#調(diào)用基類self.height=heightclassRectangle(Parallelogram):def__init__(self,w,h):#矩形不調(diào)用基類Quadrilateral.__init__self.w,self.h=w,hdefinfo(self):print(f"矩形長(zhǎng)={self.w},寬={self.h}")para=Parallelogram(5,3)rect=Rectangle(4,6)()()第7章Python文件操作思考與練習(xí)參考答案1.四種常用文件訪問(wèn)模式模式含義'r'只讀,文件必須存在'w'只寫,若文件存在則清空,不存在則創(chuàng)建'a'追加,文件存在則在末尾繼續(xù)寫,不存在則創(chuàng)建'x'獨(dú)占創(chuàng)建,文件必須不存在,否則拋異常(額外補(bǔ)充)'b'二進(jìn)制模式,可與上面組合,如'rb'、'wb'2.readlines()vsreadline()?readline():一次讀取一行字符串(含換行符),返回str。?readlines():一次讀取所有行,返回list[str],每行作為列表的一個(gè)元素(含換行符)。3.判斷文件是否存在并輸出信息importosfname=input("請(qǐng)輸入文件名:")ifos.path.exists(fname):readable=os.access(fname,os.R_OK)writable=os.access(fname,os.W_OK)size=os.path.getsize(fname)file_type="目錄"ifos.path.isdir(fname)else"普通文件"print(f"可讀:{'是'ifreadableelse'否'}")print(f"可寫:{'是'ifwritableelse'否'}")print(f"大?。簕size}字節(jié)")print(f"類型:{file_type}")else:print("文件不存在")4.注冊(cè)程序,保存到user.txtdefregister():user_info={"用戶名":input("用戶名:"),"密碼":input("密碼:"),"密碼確認(rèn)":input("確認(rèn)密碼:"),"真實(shí)姓名":input("真實(shí)姓名:"),"E-mail":input("E-mail:"),"找回密碼問(wèn)題":input("找回密碼問(wèn)題:"),"答案":input("問(wèn)題答案:")}ifuser_info["密碼"]!=user_info["密碼確認(rèn)"]:print("兩次密碼不一致!")return#追加寫入withopen("user.txt","a",encoding="utf-8")asf:fork,vinuser_info.items():f.write(f"{k}:{v}\n")f.write("--------\n")print("注冊(cè)成功!已保存到user.txt")#顯示全部注冊(cè)信息withopen("user.txt","r",encoding="utf-8")asf:print("\n當(dāng)前所有注冊(cè)信息:")print(f.read())register()5.讀取score.txt,統(tǒng)計(jì)并寫入result.txt假設(shè)score.txt每行一個(gè)整數(shù)成績(jī)。importosifnotos.path.exists("score.txt"):print("score.txt不存在!")exit()withopen("score.txt","r",encoding="utf-8")asf:scores=[float(line.strip())forlineinfifline.strip()!=""]count=len(scores)ifcount==0:print("文件為空!")exit()max_score=max(scores)min_score=min(scores)avg_score=sum(scores)/countresult_lines=[f"成績(jī)個(gè)數(shù):{count}",f"最高分:{max_score}",f"最低分:{min_score}",f"平均分:{avg_score:.2f}"]withopen("result.txt","w",encoding="utf-8")asf:f.writelines(line+"\n"forlineinresult_lines)print("統(tǒng)計(jì)完成,結(jié)果已寫入result.txt")第8章使用模塊和庫(kù)編程思考與練習(xí)參考答案1.__name__作用?當(dāng)模塊被直接運(yùn)行時(shí),__name__=="__main__"?當(dāng)模塊被導(dǎo)入時(shí),__name__等于模塊名→常用于寫“測(cè)試/演示”代碼塊:if__name__=="__main__":test()2.第三方庫(kù)安裝與查看?安裝:pipinstall包名(或python-mpipinstall包名)?查看已安裝:piplist(或pipfreeze)3.模塊vs包?模塊(module):?jiǎn)蝹€(gè).py文件?包(package):含__init__.py的目錄,可包含多個(gè)模塊/子包關(guān)系:包是模塊的容器,模塊是包的成員。4.turtle.setup()設(shè)置畫布窗口的大小與初始位置:turtle.setup(width,height,startx=None,starty=None)5.jieba精確分詞返回列表jieba.lcut(text,cut_all=False)示例:importjiebawords=jieba.lcut("我愛(ài)自然語(yǔ)言處理")#->['我','愛(ài)','自然語(yǔ)言','處理']6.自定義模塊計(jì)算圓柱體積文件1:cylinder.py(模塊)PI=3.14defvolume(r,h):"""計(jì)算圓柱體積"""returnPI*r2*h文件2:use_cylinder.py(調(diào)用模塊)fromcylinderimportvolumer=float(input("請(qǐng)輸入半徑:"))h=float(input("請(qǐng)輸入高:"))print("圓柱體積=",volume(r,h))運(yùn)行pythonuse_cylinder.py即可。7.turtle畫紅色正五角星importturtleastt.setup(500,500)t.color("red")t.begin_fill()for_inrange(5):t.forward(200)t.right(144)t.end_fill()t.hideturtle()t.done()8.random產(chǎn)生10個(gè)100~200隨機(jī)數(shù)并統(tǒng)計(jì)importrandom,statisticsdata=[random.randint(100,200)for_inrange(10)]print("隨機(jī)數(shù):",data)print("最大值:",max(data))print("平均值:",statistics.mean(data))print("標(biāo)準(zhǔn)差:",statistics.stdev(data))print("中位數(shù):",statistics.median(data))9.繪制“2022年中央一號(hào)文件”詞云(假設(shè)文件名為2022年中央一號(hào)文件.txt,與腳本同目錄)importjiebafromwordcloudimportWordCloudimportmatplotlib.pyplotaspltwithopen("2022年中央一號(hào)文件.txt","r",encoding="utf-8")asf:text=f.read()#精確分詞+自定義停用詞words=jieba.lcut(text)stop={"和","為","的","在","了","對(duì)","等","與","及"}words=[wforwinwordsifwnotinstopandlen(w)>1]wc=WordCloud(font_path="msyh.ttc",#Windows微軟雅黑,Linux/Mac需替換background_color="white",width=800,height=600).generate("".join(words))plt.imshow(wc,interpolation="bilinear")plt.axis("off")plt.show()wc.to_file("一號(hào)文件詞云.png")第9章Numpy數(shù)值計(jì)算思考與練習(xí)參考答案1.NumPy數(shù)組(ndarray)的主要特點(diǎn)?同質(zhì):所有元素類型相同(int、float…),占用內(nèi)存小,運(yùn)算快。?多維:支持任意維度(向量、矩陣、張量)。?向量化:一次性對(duì)整個(gè)數(shù)組做算術(shù)/邏輯運(yùn)算,無(wú)需顯式循環(huán)。?廣播機(jī)制:不同形狀數(shù)組可按規(guī)則自動(dòng)對(duì)齊計(jì)算。?豐富接口:切片、索引、線性代數(shù)、隨機(jī)數(shù)、傅里葉變換等大量現(xiàn)成函數(shù)。?與C/Fortran無(wú)縫交互:底層用C實(shí)現(xiàn),可零拷貝共享內(nèi)存。2.用NumPy創(chuàng)建數(shù)組的常用方法方法示例說(shuō)明np.array([1,2,3])把Python序列轉(zhuǎn)成數(shù)組np.arange(start,stop,step)等差序列np.linspace(start,stop,num)等間隔序列np.zeros(shape)/np.ones(shape)全0/全1np.empty(shape)未初始化np.full(shape,val)全填指定值np.eye(n)/np.identity(n)單位矩陣np.random.rand(shape)/np.random.randn(shape)/np.random.randint(low,high,size)隨機(jī)數(shù)組np.fromfile()/np.loadtxt()/np.genfromtxt()從文件或文本加載3.完成下列數(shù)組和隨機(jī)數(shù)的操作與運(yùn)算importnumpyasnp#(1)2行4列,0~7,用arangearr_a=np.arange(8).reshape(2,4)print("(1)arr_a創(chuàng)建后:\n",arr_a)#(2)4個(gè)元素的一維隨機(jī)數(shù)組arr_b=np.random.rand(4)print("(2)arr_b:",arr_b)#(3)向arr_a追加[9,10],再flatten回一維arr_a=np.append(arr_a,[9,10])print("(3)追加后:",arr_a)#(4)在第3個(gè)元素前插入[11,12]arr_a=np.insert(arr_a,2,[11,12])print("(4)插入后:",arr_a)#(5)刪除下標(biāo)為奇數(shù)的元素mask=np.arange(arr_a.size)%2==0#保留偶數(shù)下標(biāo)arr_a=arr_a[mask]print("(5)刪除奇數(shù)下標(biāo)后:",arr_a)#(6)轉(zhuǎn)換成Python列表list_a=arr_a.tolist()print("(6)轉(zhuǎn)成列表:",list_a)第10章Pandas數(shù)據(jù)處理分析思考與練習(xí)參考答案1.Pandas兩大核心數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)維度索引特點(diǎn)Series1維默認(rèn)整數(shù)索引/自定義標(biāo)簽類似帶索引的數(shù)組DataFrame2維行索引index、列索引columns表格型,列可以是不同類型2.數(shù)據(jù)分析基本流程需求理解→數(shù)據(jù)采集→數(shù)據(jù)清洗→探索性分析(EDA)→建模/統(tǒng)計(jì)→結(jié)果解釋→可視化→報(bào)告/部署。3.常見(jiàn)數(shù)據(jù)預(yù)處理缺失值處理、重復(fù)值處理、異常值檢測(cè)、類型轉(zhuǎn)換、標(biāo)準(zhǔn)化/歸一化、特征編碼、分箱、文本清洗、特征衍生。4.學(xué)生消費(fèi)數(shù)據(jù)集CRUDimportpandasaspd#(1)創(chuàng)建data={"姓名":["李光","王芳","趙偉","孫麗","周強(qiáng)"],"性別":["男","女","男","女","男"],"年齡":[19,20,18,19,21],"月消費(fèi)支出":[2200,1800,2500,2100,1900]}df=pd.DataFrame(data)#(2)選擇列expense=df["月消費(fèi)支出"]#(3)增加df.loc[len(df)]=["孟欣怡","女",18,1500]#(4)修改df.loc[df["姓名"]=="李光","月消費(fèi)支出"]=1000#(5)刪除第2位(索引1)df.drop(index=1,inplace=True)#(6)篩選高消費(fèi)high=df[df["月消費(fèi)支出"]>2000]print(df)print("月消費(fèi)支出>2000的同學(xué):\n",high)5.商品銷售按三類維度統(tǒng)計(jì)importpandasaspddf=pd.read_excel("商品銷售.xls")#(1)按品牌brand_qty=df.groupby("品牌")["數(shù)量"].sum()#(2)按商品種類kind_qty=df.groupby("商品種類")["數(shù)量"].sum()#(3)按地區(qū)area_qty=df.groupby("地區(qū)")["數(shù)量"].sum()print(brand_qty,kind_qty,area_qty,sep="\n")6.記錄抽取#假設(shè)已讀入dfcond1=df["單價(jià)"].between(3000,5000)#(1)cond2=df["商品信息"].isna()#(2)cond3=df["商品信息"].str.contains("空調(diào)",na=False)#(3)print(df[cond1])print(df[cond2])print(df[cond3])7.Excel成績(jī)表缺失值處理importpandasaspddf=pd.read_excel("grade.xls",sheet_name="grade")#(1)查看前5行缺失值print(df.head().isnull())#不修改原數(shù)據(jù)填充0df_fill0=df.fillna(0)#字典填充(示例)fill_dict={"Normal":0,"exam":0}df_fill_dict=df.fillna(fill_dict)#(2)用method觀察ffill=df.fillna(method="ffill")bfill=df.fillna(method="bfill")interpolate=erpolate()#(3)Normal用中位數(shù),exam用均值df2=df.copy()df2["Normal"].fillna(df["Normal"].median(),inplace=True)df2["exam"].fillna(df["exam"].mean(),inplace=True)#(4)0填充并修改原數(shù)據(jù)df.fillna(0,inplace=True)8.Pandas常見(jiàn)分析方法及特點(diǎn)方法特點(diǎn)描述統(tǒng)計(jì).describe()快速查看數(shù)值分布分組聚合.groupby()按類別聚合計(jì)算透視表pivot_table多維交叉匯總排序.sort_values/sort_index行列排序缺失值處理.fillna/.dropna插補(bǔ)或刪除合并連接.merge/.join/.concat橫向/縱向整合數(shù)據(jù)時(shí)間序列.resample/.rolling重采樣、滑動(dòng)窗口繪圖.plot一行代碼可視化第11章Matplotlib庫(kù)與數(shù)據(jù)可視化思考與練習(xí)參考答案1.常見(jiàn)可視化圖表及特點(diǎn)圖表特點(diǎn)柱形圖比較離散類別的數(shù)值大小折線圖展示連續(xù)時(shí)間序列的趨勢(shì)餅圖顯示各部分占總體的比例散點(diǎn)圖觀察兩變量間的相關(guān)性箱線圖查看數(shù)據(jù)分布、異常值直方圖展示連續(xù)變量的頻數(shù)分布熱力圖用顏色深淺表示矩陣數(shù)值2.圖表基本構(gòu)成元素標(biāo)題、坐標(biāo)軸(x/y)、刻度/刻度標(biāo)簽、圖例、網(wǎng)格線、數(shù)據(jù)標(biāo)記、注釋文本、圖表背景/邊框。3.Matplotlib繪圖基本流程①importmatplotlib.pyplotasplt②準(zhǔn)備數(shù)據(jù)(x、y等)③plt.figure()創(chuàng)建畫布④調(diào)用plt.bar/plt.plot/...繪制⑤設(shè)置標(biāo)題、軸標(biāo)簽、圖例、網(wǎng)格、注釋⑥plt.show()顯示或plt.savefig()保存4.常見(jiàn)輔助元素標(biāo)題(plt.title)、軸標(biāo)簽(plt.xlabel/ylabel)、圖例(plt.legend)、網(wǎng)格(plt.grid)、注釋(plt.annotate)、刻度(plt.xticks/yticks)、文本(plt.text)。5.高三文科班平均成績(jī)柱形圖importmatplotlib.pyplotaspltimportnumpyasnpsubjects=['語(yǔ)文','數(shù)學(xué)','英語(yǔ)','政治','歷史','地理']male=[115,123,104,79,87,89]female=[118,105,116,85,80,88]x=np.arange(len(subjects))#[0,1,2,3,4,5]width=0.35#柱寬plt.figure(figsize=(8,5))bars1=plt.bar(x-width/2,male,width,label='男生')bars2=plt.bar(x+width/2,female,width,label='女生')#(2)y軸標(biāo)簽plt.ylabel('平均成績(jī)(分)')#(3)x軸刻度居中plt.xticks(x,subjects)#(4)標(biāo)題plt.title('高三文科班男生、女生的平均成績(jī)')#(5)圖例plt.legend()#(6)柱頂加注釋forbarinbars1:height=bar.get_height()plt.text(bar.get_x()+bar.get_width()/2,height+1,f'{height}',ha='center',va='bottom')forbarinbars2:height=bar.get_height()plt.text(bar.get_x()+bar.get_width()/2,height+1,f'{height}',ha='center',va='bottom')plt.tight_layout()plt.show()6.電商平臺(tái)子類目銷售額餅圖importmatplotlib.pyplotaspltlabels=['電腦','家居','美妝','手機(jī)','箱包']sizes=[4623,5623,1892,3976,987]plt.figure(figsize=(7,6))colors=plt.cm.Set3.colorswedges,texts,autotexts=plt.pie(sizes,labels=labels,autopct='%1.1f%%',colors=colors,startangle=140)#(2)標(biāo)題plt.title('電商平臺(tái)子類目的銷售額')#(3)兩列圖例plt.legend(labels,loc='upperleft',bbox_to_anchor=(1,0.8),ncol=2)#(4)添加銷售額表格table_data=[[l,f'{s}億']forl,sinzip(labels,sizes)]plt.table(cellText=table_data,colLabels=['子類目','銷售額'],cellLoc='center',loc='lowerright',bbox=[1.2,0.1,0.3,0.3])plt.tight_layout()plt.show()第12章數(shù)據(jù)處理與分析綜合實(shí)戰(zhàn)思考與練習(xí)參考答案用Python+Pandas+Numpy+Matplotlib對(duì)“淘寶App2024-11-18~2024-12-18用戶行為日志”1?環(huán)境&依賴#建議Python3.10+pipinstallpandasnumpymatplotlibseabornplotly2?數(shù)據(jù)加載importpandasaspd,numpyasnp,os,gcfromtqdmimporttqdmdtype={'user_id':64,'item_id':64,'behavior_type':'category',#pv,cart,fav,buy'ts':64,#毫秒時(shí)間戳'cat_id':32,'brand_id':32,'price':np.float32,'city':'category','device':'category'}chunks=[]forchunkintqdm(pd.read_csv('tb_raw_2024_11_18_12_18.csv',dtype=dtype,parse_dates=['ts'],chunksize=500_000)):#1)時(shí)間列轉(zhuǎn)datetime64[ns]chunk['dt']=pd.to_datetime(chunk['ts'],unit='ms',utc=True).dt.tz_convert('Asia/Shanghai')#2)去掉明顯異常chunk=chunk[(chunk['price']>0)&(chunk['price']<1e6)]chunks.append(chunk)df=pd.concat(chunks,ignore_inde
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宿州市人才集團(tuán)有限公司招募就業(yè)見(jiàn)習(xí)人員7人模擬試卷及答案詳解(奪冠系列)
- 公司洗毛炭化擋車工職業(yè)考核試卷及答案
- 2025湖南長(zhǎng)沙市寧鄉(xiāng)市中醫(yī)醫(yī)院招聘編外聘用人員20人模擬試卷及參考答案詳解
- 2025貴州醫(yī)科大學(xué)第二附屬醫(yī)院第十三屆貴州人才博覽會(huì)引才47人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(必刷)
- 乙烷生產(chǎn)線項(xiàng)目施工方案
- 綠色建筑勘察與設(shè)計(jì)方案
- 河道整治工程設(shè)計(jì)與施工技術(shù)方案
- 熱力能源利用綜合方案
- 施工技術(shù)創(chuàng)新與提升方案
- 多重耐藥院感知識(shí)培訓(xùn)
- 2025至2030全球及中國(guó)InfiniBand行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025年下半年拜城縣招聘警務(wù)輔助人員(260人)考試模擬試題及答案解析
- 宅基地爭(zhēng)議申請(qǐng)書(shū)
- 2025年杭州上城區(qū)總工會(huì)公開(kāi)招聘工會(huì)社會(huì)工作者9人筆試參考題庫(kù)附答案解析
- 百師聯(lián)盟2026屆高三上學(xué)期9月調(diào)研考試數(shù)學(xué)試卷(含答案)
- 【MOOC期末】《中國(guó)馬克思主義與當(dāng)代》(北京科技大學(xué))期末慕課答案
- 《海洋學(xué)》第二章 地球及海洋概觀
- GB/T 2794-2022膠黏劑黏度的測(cè)定
- GH/T 1091-2014代用茶
- TSAAD型螺桿式空氣壓縮機(jī)
- 無(wú)菌技術(shù)操作技能評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論