小甲魚教學課件_第1頁
小甲魚教學課件_第2頁
小甲魚教學課件_第3頁
小甲魚教學課件_第4頁
小甲魚教學課件_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

小甲魚Python零基礎教學什么是Python?Python是一種高級編程語言,由吉多·范羅蘇姆(GuidovanRossum)于1989年圣誕節(jié)期間開始設計,強調代碼的可讀性和簡潔性。Python的設計哲學是"優(yōu)雅"、"明確"、"簡單",開發(fā)效率極高,被譽為"膠水語言",能夠輕松連接各種軟件。根據(jù)2025年TIOBE編程語言排行榜,Python已穩(wěn)居第一位,成為全球最受歡迎的編程語言。Python廣泛應用于:數(shù)據(jù)分析與可視化人工智能與機器學習Web開發(fā)與自動化測試安裝與環(huán)境配置下載Python訪問Python官方網站(),根據(jù)您的操作系統(tǒng)選擇合適的版本下載。推薦選擇最新的穩(wěn)定版本。安裝與配置安裝時勾選"AddPythontoPATH"選項,便于在命令行中直接使用。初學者推薦使用Anaconda套裝或自帶的IDLE開發(fā)環(huán)境。驗證安裝打開命令行,輸入"python--version"檢查是否安裝成功。常見安裝問題:PATH環(huán)境變量未正確設置權限不足(可嘗試管理員身份運行)第一個Python程序經典入門代碼#我的第一個Python程序print("HelloWorld!")print("歡迎來到Python世界!")這個簡單的程序展示了Python的基本語法結構。#符號后面的內容是注釋,不會被執(zhí)行。print()函數(shù)用于在屏幕上顯示內容。運行方式交互式命令行適合測試簡短代碼,直接在Python解釋器中輸入命令并立即看到結果。腳本文件執(zhí)行創(chuàng)建.py文件,使用"python文件名.py"命令執(zhí)行,適合較長的程序。Python特色:使用縮進而非花括號來表示代碼塊,使代碼更加清晰易讀。嚴格的縮進是Python的標志性特點!基本數(shù)據(jù)類型數(shù)字類型整數(shù)(int):1,100,-10浮點數(shù)(float):3.14,-0.001復數(shù)(complex):1+2j字符串(str)文本數(shù)據(jù)類型用單引號或雙引號表示例如:"Python",'小甲魚'布爾類型(bool)只有兩個值:True和False用于條件判斷注意大小寫類型轉換與輸入類型轉換函數(shù)int():轉換為整數(shù)float():轉換為浮點數(shù)str():轉換為字符串bool():轉換為布爾值input()函數(shù)#獲取用戶輸入并轉換為整數(shù)age=int(input("請輸入您的年齡:"))print("您明年將會",age+1,"歲")變量命名規(guī)范變量名只能包含字母、數(shù)字和下劃線,不能以數(shù)字開頭。建議使用有意義的名稱,如user_name而非un。Python區(qū)分大小寫,name和Name是不同的變量。運算符與表達式7算術運算符Python提供7種基本算術運算符,用于執(zhí)行各種數(shù)學計算。運算符名稱示例結果+加法5+38-減法5-32*乘法5*315/除法5/31.6666...//整除5//31%取余5%32**冪運算5**3125其他重要運算符賦值運算符=:基本賦值+=,-=:組合賦值例:x+=5等同于x=x+5比較運算符==,!=:等于,不等于<,>,<=,>=:大小比較返回值為布爾類型運算優(yōu)先級運算符優(yōu)先級從高到低:括號>冪運算>乘除>加減。使用括號可以明確指定運算順序,提高代碼可讀性。字符串及常用方法定義字符串的三種方式#單引號s1='小甲魚Python教程'#雙引號s2="歡迎學習Python"#三引號(可以包含多行文本)s3="""這是第一行這是第二行這是第三行"""字符串操作拼接使用+號:"Python"+"3.9"→"Python3.9"重復使用*號:"Go"*3→"GoGoGo"切片"Python"[0:2]→"Py"常用字符串方法lower():轉為小寫upper():轉為大寫strip():去除兩端空白replace():替換字符split():分割字符串join():連接字符串列表Unicode與編碼Python3默認使用Unicode編碼,可以處理任何語言的文字。在處理不同編碼的文件時,可以使用encode()和decode()方法進行轉換,如:text.encode('utf-8')。列表(List)基礎列表定義與訪問#列表定義fruits=['蘋果','香蕉','橙子','葡萄']#訪問元素print(fruits[0])#輸出:蘋果print(fruits[-1])#輸出:葡萄#修改元素fruits[1]='梨'#列表變?yōu)閇'蘋果','梨','橙子','葡萄']列表操作增加元素append():在末尾添加一個元素insert():在指定位置插入元素extend():合并另一個列表刪除元素remove():刪除指定值的元素pop():刪除并返回指定位置元素del:刪除指定位置元素查找元素index():查找元素位置count():計算元素出現(xiàn)次數(shù)in運算符:檢查元素是否存在列表切片與排序列表切片語法與字符串類似:list[start:end:step]。可以使用sort()方法對列表進行排序,reverse()方法反轉列表順序。numbers=[3,1,4,1,5,9,2,6]numbers.sort()#排序:[1,1,2,3,4,5,6,9]print(numbers[2:5])#切片:[2,3,4]元組與集合元組(Tuple)#創(chuàng)建元組coordinates=(10,20)person=('小明',25,'北京')#訪問元素name=person[0]#'小明'age=person[1]#25#嘗試修改將導致錯誤#person[1]=26#TypeError!元組一旦創(chuàng)建就不可修改(不可變類型)。適合存儲不應被修改的數(shù)據(jù),如坐標點、RGB顏色值等。集合(Set)#創(chuàng)建集合fruits={'蘋果','香蕉','橙子'}numbers=set([1,2,3,2,1])#{1,2,3}#添加元素fruits.add('葡萄')#刪除元素fruits.remove('香蕉')集合是無序的,不允許有重復元素。主要用于去重和集合運算(交集、并集、差集)。集合運算并集A|B或A.union(B)返回A和B中的所有元素交集A&B或A.intersection(B)返回同時在A和B中的元素差集A-B或A.difference(B)返回在A中但不在B中的元素對稱差集A^B返回只在A或只在B中的元素字典(dict)深入字典基礎字典是Python中的映射類型,使用鍵值對(key-value)存儲數(shù)據(jù)。每個鍵必須是唯一的、不可變的(通常是字符串或數(shù)字)。#創(chuàng)建字典student={'name':'張三','age':20,'score':95,'city':'上海'}#訪問值print(student['name'])#輸出:張三字典常用方法訪問與修改dict[key]:獲取值,不存在時報錯dict.get(key):獲取值,可設默認返回值dict[key]=value:添加或修改鍵值對dict.update(other_dict):合并字典遍歷字典dict.keys():返回所有鍵dict.values():返回所有值dict.items():返回所有鍵值對fork,vindict.items():遍歷鍵值刪除操作deldict[key]:刪除指定鍵值對dict.pop(key):刪除并返回值dict.clear():清空字典應用實例:字符頻率統(tǒng)計defcount_chars(text):char_count={}forcharintext:ifcharinchar_count:char_count[char]+=1else:char_count[char]=1returnchar_countresult=count_chars("小甲魚Python教程")print(result)#輸出每個字符出現(xiàn)的次數(shù)分支結構if語句基本語法if條件1:#條件1為True時執(zhí)行elif條件2:#條件1為False且條件2為True時執(zhí)行else:#所有條件都為False時執(zhí)行Python使用縮進來標識代碼塊,通常是4個空格。條件表達式結果為布爾值,決定執(zhí)行哪個分支。條件表達式比較運算:==,!=,<,>,<=,>=邏輯運算:and,or,not成員判斷:in,notin身份判斷:is,isnot簡單實例:年齡判斷age=int(input("請輸入您的年齡:"))ifage<12:print("兒童")elifage<18:print("青少年")elifage<60:print("成年人")else:print("老年人")嵌套分支結構1嵌套if語句允許在一個分支內部再次進行條件判斷,可以處理更復雜的邏輯,但過度嵌套會降低代碼可讀性。循環(huán)結構for/whilefor循環(huán)#基本語法for變量in可迭代對象:#循環(huán)體#示例:遍歷列表fruits=['蘋果','香蕉','橙子']forfruitinfruits:print(fruit)#使用range()函數(shù)foriinrange(5):#0,1,2,3,4print(i)while循環(huán)#基本語法while條件:#循環(huán)體#示例:計數(shù)器count=0whilecount<5:print(count)count+=1#無限循環(huán)(需要內部break)whileTrue:answer=input("繼續(xù)?(y/n)")ifanswer=='n':break循環(huán)控制語句break立即退出整個循環(huán),跳到循環(huán)后的下一條語句。foriinrange(10):ifi==5:break#到5就退出print(i)#只打印0到4continue跳過本次循環(huán)剩余部分,直接進入下一次循環(huán)。foriinrange(10):ifi%2==0:continue#跳過偶數(shù)print(i)#只打印奇數(shù)else子句循環(huán)正常結束后執(zhí)行(非break退出)。foriinrange(5):print(i)else:print("循環(huán)正常完成")綜合實例:99乘法表實現(xiàn)原理使用嵌套循環(huán)結構來生成九九乘法表,外層循環(huán)控制行數(shù),內層循環(huán)控制列數(shù)。利用字符串格式化使輸出美觀對齊,每一行只顯示i×j(i≤j)的結果。代碼實現(xiàn)#九九乘法表完整版foriinrange(1,10):forjinrange(1,i+1):#使用格式化輸出,保持對齊print(f"{j}×{i}={i*j}\t",end="")#每行結束后換行print()格式化輸出技巧f-string(Python3.6+)f"{變量}文本{表達式}"最簡潔直觀的字符串格式化方式format()方法"{:格式}".format(值)靈活控制對齊、寬度、精度等print()參數(shù)end=""參數(shù)可以改變輸出結尾sep=""參數(shù)控制多個值間的分隔符擴展挑戰(zhàn)嘗試修改代碼,實現(xiàn)不同樣式的乘法表,如倒三角形式、完整的乘法表格、帶邊框的表格等。這有助于鞏固循環(huán)和字符串格式化知識。函數(shù)基礎函數(shù)定義與調用#定義函數(shù)defgreet(name):"""打招呼函數(shù),輸出問候語"""returnf"你好,{name}!"#調用函數(shù)message=greet("小甲魚")print(message)#輸出:你好,小甲魚!函數(shù)由def關鍵字定義,可包含文檔字符串(docstring),使用return返回值。函數(shù)是組織和重用代碼的基本單位。函數(shù)參數(shù)必需參數(shù)defpower(x,n):returnx**n#調用時必須提供兩個參數(shù)result=power(2,3)#2的3次方=8默認參數(shù)defpower(x,n=2):returnx**n#n有默認值,可以省略result1=power(2)#2的2次方=4result2=power(2,3)#2的3次方=8關鍵字參數(shù)defstudent(name,age,city):print(f"{name},{age}歲,來自{city}")#通過參數(shù)名指定,順序可變student(age=20,city="北京",name="李明")變量作用域局部變量在函數(shù)內部定義的變量,僅在函數(shù)內部可見,函數(shù)執(zhí)行完畢后變量被銷毀。全局變量在函數(shù)外部定義的變量,在整個模塊中可見。如需在函數(shù)內修改全局變量,需使用global關鍵字。count=0#全局變量defincrement():globalcount#聲明使用全局變量count+=1increment()print(count)#輸出:1常用內置函數(shù)基本內置函數(shù)len(obj):返回對象長度type(obj):返回對象類型int(),float(),str():類型轉換max(),min():返回最大/最小值sum():對數(shù)字序列求和sorted():返回排序后的序列range():生成數(shù)字序列print(),input():輸入輸出高級內置函數(shù)map():對序列每個元素執(zhí)行函數(shù)filter():過濾序列中的元素zip():將多個序列對應位置元素組合enumerate():返回索引和元素對any(),all():檢查序列真值abs(),round():數(shù)學函數(shù)dir(),help():查看對象信息函數(shù)式編程示例map函數(shù)#將列表中所有數(shù)字平方numbers=[1,2,3,4,5]squares=list(map(lambdax:x**2,numbers))print(squares)#[1,4,9,16,25]filter函數(shù)#過濾出所有偶數(shù)numbers=[1,2,3,4,5,6,7,8]evens=list(filter(lambdax:x%2==0,numbers))print(evens)#[2,4,6,8]lambda表達式#一行代碼實現(xiàn)列表平方numbers=[1,2,3,4,5]squares=[x**2forxinnumbers]#列表推導式print(squares)#[1,4,9,16,25]Python豐富的內置函數(shù)可以幫助我們更高效地編寫代碼。熟練掌握這些函數(shù)可以大幅提高編程效率,減少重復代碼。文件操作基礎文件打開與關閉#基本語法file=open('文件名','模式')#操作文件...file.close()#操作完畢后關閉文件#文件打開模式#'r':只讀模式(默認)#'w':寫入模式(覆蓋原內容)#'a':追加模式(在末尾添加)#'b':二進制模式(與上面模式組合使用)#'t':文本模式(默認)文件讀寫操作#讀取整個文件withopen('data.txt','r',encoding='utf-8')asf:content=f.read()print(content)#逐行讀取withopen('data.txt','r',encoding='utf-8')asf:forlineinf:print(line.strip())#去除換行符#寫入文件withopen('output.txt','w',encoding='utf-8')asf:f.write('這是第一行\(zhòng)n')f.write('這是第二行\(zhòng)n')with語句的優(yōu)勢自動資源管理無需手動關閉文件,離開with塊時自動關閉異常安全即使發(fā)生異常,也能確保文件被正確關閉代碼簡潔減少樣板代碼,使邏輯更清晰實用文件操作示例#簡單的文本文件處理defcount_words(filename):try:withopen(filename,'r',encoding='utf-8')asf:content=f.read()words=content.split()returnlen(words)exceptFileNotFoundError:returnf"錯誤:文件'{filename}'不存在"#調用函數(shù)print(f"文件中共有{count_words('article.txt')}個單詞")異常處理異?;A異常是程序執(zhí)行過程中發(fā)生的錯誤。Python使用try/except機制捕獲并處理異常,避免程序崩潰。#基本異常處理結構try:#可能發(fā)生異常的代碼num=int(input("請輸入一個數(shù)字:"))result=10/numprint(f"結果是:{result}")exceptValueError:#處理輸入不是數(shù)字的情況print("輸入無效,請輸入一個數(shù)字")exceptZeroDivisionError:#處理除以零的情況print("不能除以零")完整的異常處理結構try:#可能發(fā)生異常的代碼num=int(input("請輸入一個數(shù)字:"))result=10/numexceptValueError:#處理特定類型的異常print("輸入無效,請輸入一個數(shù)字")exceptZeroDivisionError:#處理另一種類型的異常print("不能除以零")exceptExceptionase:#捕獲所有其他異常print(f"發(fā)生錯誤:{e}")else:#沒有異常發(fā)生時執(zhí)行print(f"結果是:{result}")finally:#無論是否發(fā)生異常都會執(zhí)行print("計算結束")常見異常類型SyntaxError語法錯誤,程序無法解析NameError使用未定義的變量或函數(shù)TypeError操作或函數(shù)應用于不適當類型ValueError操作或函數(shù)接收了正確類型但不適當?shù)闹礗ndexError序列下標超出范圍KeyError字典中查找不存在的鍵FileNotFoundError嘗試打開不存在的文件ImportError導入模塊失敗自定義異??梢酝ㄟ^繼承Exception類來創(chuàng)建自定義異常,適用于特定應用場景的錯誤處理。classMyError(Exception):def__init__(self,message):self.message=messagesuper().__init__(self.message)模塊與包模塊基礎模塊是包含Python定義和語句的文件,以.py為擴展名。使用模塊可以組織代碼,提高可維護性和可重用性。#導入整個模塊importmathprint(math.pi)#使用math模塊中的pi常量#導入特定內容fromrandomimportrandintprint(randint(1,10))#生成1到10的隨機數(shù)#導入并重命名importnumpyasnparr=np.array([1,2,3])包結構包是一種組織模塊的方式,本質上是包含__init__.py文件的目錄。包可以包含子包和模塊,形成層次結構。my_package/__init__.pymodule1.pymodule2.pysubpackage/__init__.pymodule3.pymodule4.py導入包中的模塊:frommy_packageimportmodule1frommy_package.subpackageimportmodule3常用標準庫模塊math數(shù)學函數(shù)模塊,提供三角函數(shù)、對數(shù)、冪運算等數(shù)學運算。random隨機數(shù)生成模塊,用于生成隨機數(shù)、隨機選擇元素、隨機排序等。time/datetime時間日期處理模塊,用于獲取當前時間、時間格式化、時間計算等。os/sys操作系統(tǒng)接口模塊,提供與操作系統(tǒng)交互的功能,如文件路徑操作、系統(tǒng)命令等。json/csv數(shù)據(jù)格式處理模塊,用于處理JSON、CSV等常見數(shù)據(jù)格式。urllib/requests網絡請求模塊,用于發(fā)送HTTP請求、下載網絡資源等。創(chuàng)建自定義模塊#文件:mymath.pydefsquare(x):"""計算平方"""returnx**2defcube(x):"""計算立方"""returnx**3PI=3.14159#模塊級常量if__name__=="__main__":#當作為腳本運行時執(zhí)行,作為模塊導入時不執(zhí)行print("測試:5的平方是",square(5))使用自定義模塊:importmymath或frommymathimportsquare,PI面向對象基礎類與對象類(class)是對象的藍圖,定義了對象的屬性和方法。對象是類的實例,代表類的具體實現(xiàn)。#定義一個簡單的類classDog:#初始化方法(構造函數(shù))def__init__(self,name,age):=name#實例屬性self.age=age#實例方法defbark(self):returnf"{}正在汪汪叫!"defget_info(self):returnf"{}今年{self.age}歲"#創(chuàng)建類的實例(對象)my_dog=Dog("小黑",3)print(my_dog.bark())#調用方法print(my_)#訪問屬性類的組成部分屬性實例屬性:每個實例獨有,在__init__中定義類屬性:所有實例共享,直接在類中定義私有屬性:以雙下劃線開頭(__name),類外無法直接訪問方法實例方法:第一個參數(shù)為self,操作實例屬性類方法:@classmethod裝飾,第一個參數(shù)為cls靜態(tài)方法:@staticmethod裝飾,不需要參數(shù)魔術方法:以雙下劃線包圍,如__init__、__str__等self關鍵字代表類的實例,是實例方法的第一個參數(shù)用于在方法內部訪問實例的屬性和其他方法調用方法時無需顯式傳遞self,Python自動傳遞擴展示例:學生類classStudent:#類屬性school="Python編程學校"#構造方法def__init__(self,name,student_id,score=60):=name#公開屬性self.__id=student_id#私有屬性self.score=score#實例方法defget_id(self):returnself.__iddefstudy(self,hours):self.score+=hours*0.5ifself.score>100:self.score=100returnf"{}學習了{hours}小時,當前分數(shù)為{self.score}"#魔術方法,打印對象時調用def__str__(self):returnf"學生:{},分數(shù):{self.score}"#創(chuàng)建學生對象zhang=Student("張三","2023001",85)print(zhang)#打印對象print(zhang.study(10))#調用方法類的繼承與多態(tài)繼承基礎繼承允許一個類(子類)獲取另一個類(父類)的屬性和方法。子類可以重寫父類的方法,或添加新的屬性和方法。#父類classAnimal:def__init__(self,name):=namedefspeak(self):pass#空方法,等待子類重寫#子類classDog(Animal):defspeak(self):returnf"{}說:汪汪汪!"classCat(Animal):defspeak(self):returnf"{}說:喵喵喵!"#創(chuàng)建對象dog=Dog("小黑")cat=Cat("咪咪")print(dog.speak())#輸出:小黑說:汪汪汪!print(cat.speak())#輸出:咪咪說:喵喵喵!多態(tài)多態(tài)指不同類的對象對相同消息作出不同的響應。在Python中,通過方法重寫實現(xiàn)多態(tài)。#展示多態(tài)defanimal_sound(animal):"""接受任何實現(xiàn)了speak()方法的對象"""print(animal.speak())#傳入不同類型的對象,得到不同的行為animal_sound(dog)#輸出:小黑說:汪汪汪!animal_sound(cat)#輸出:咪咪說:喵喵喵!super()函數(shù)與方法重寫classBird(Animal):def__init__(self,name,wingspan):#調用父類的__init__方法super().__init__(name)#添加子類特有的屬性self.wingspan=wingspandefspeak(self):#重寫父類方法returnf"{}說:啾啾啾!"deffly(self):#子類特有方法returnf"{}展開{self.wingspan}厘米的翅膀飛翔"#創(chuàng)建鳥類對象bird=Bird("小鳥",30)print(bird.speak())#調用重寫的方法print(bird.fly())#調用子類特有方法多繼承Python支持多繼承,一個類可以繼承多個父類。需要注意處理潛在的命名沖突和方法解析順序(MRO)。classFlyable:deffly(self):return"我會飛行"classSwimmable:defswim(self):return"我會游泳"#多繼承classDuck(Animal,Flyable,Swimmable):defspeak(self):returnf"{}說:嘎嘎嘎!"#創(chuàng)建鴨子對象duck=Duck("唐老鴨")print(duck.speak())#Animal的方法print(duck.fly())#Flyable的方法print(duck.swim())#Swimmable的方法繼承注意事項多繼承可能導致"菱形繼承"問題,Python使用C3線性化算法確定方法解析順序。可以通過類的__mro__屬性查看解析順序。GUI入門:TkinterTkinter簡介Tkinter是Python的標準GUI(圖形用戶界面)庫,基于Tk工具包,提供了創(chuàng)建窗口、按鈕、文本框等界面元素的功能。優(yōu)點:Python標準庫,無需額外安裝跨平臺,支持Windows、macOS和Linux簡單易學,適合初學者足夠滿足一般應用需求創(chuàng)建第一個窗口importtkinterastk#創(chuàng)建主窗口root=tk.Tk()root.title("我的第一個GUI應用")root.geometry("400x300")#設置窗口大小#添加標簽label=tk.Label(root,text="你好,Tkinter!",font=("宋體",16))label.pack(pady=20)#添加按鈕defbutton_click():label.config(text="按鈕被點擊了!")button=tk.Button(root,text="點擊我",command=button_click)button.pack(pady=10)#啟動事件循環(huán)root.mainloop()常用Tkinter組件窗口(Tk)應用程序的主窗口,所有組件的容器。標簽(Label)顯示文本或圖像,不可交互。按鈕(Button)可點擊的按鈕,觸發(fā)事件。輸入框(Entry)單行文本輸入控件。文本框(Text)多行文本編輯控件。復選框(Checkbutton)提供勾選選項。布局管理Tkinter提供三種主要的布局管理器:pack()簡單的堆疊布局,組件一個接一個排列。grid()網格布局,以行和列定位組件。place()絕對定位,使用精確坐標放置組件。正則表達式基礎正則表達式簡介正則表達式(RegularExpression)是一種強大的文本匹配和處理工具,可用于搜索、替換、驗證文本模式。Python通過re模塊提供正則表達式支持,用于復雜的字符串處理。常用元字符元字符含義示例.匹配任意字符(除\n外)a.b匹配acb,adb等^匹配開始位置^abc匹配以abc開頭的字符串$匹配結束位置abc$匹配以abc結尾的字符串*匹配0次或多次ab*匹配a,ab,abb等+匹配1次或多次ab+匹配ab,abb等,不匹配a?匹配0次或1次ab?匹配a或ab{n}匹配恰好n次a{3}匹配aaa{n,m}匹配n到m次a{2,4}匹配aa,aaa,aaaa[]匹配字符集[abc]匹配a,b或c\d匹配數(shù)字\d等價于[0-9]\w匹配字母、數(shù)字、下劃線\w等價于[a-zA-Z0-9_]re模塊主要函數(shù)re.match()從字符串開頭匹配模式,如果匹配成功返回匹配對象,否則返回Nonere.search()在字符串中搜索模式,找到第一個匹配項返回匹配對象re.findall()返回字符串中所有匹配模式的字符串列表re.sub()替換字符串中匹配模式的部分實例:郵箱驗證importredefis_valid_email(email):#郵箱正則表達式模式pattern=r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'#使用re.match驗證ifre.match(pattern,email):returnTrueelse:returnFalse#測試郵箱emails=["user@","invalid-email","another.user@"]foremailinemails:ifis_valid_email(email):print(f"{email}是有效的郵箱地址")else:print(f"{email}不是有效的郵箱地址")簡單爬蟲案例網絡爬蟲簡介網絡爬蟲是一種自動獲取網頁內容的程序,Python因其簡潔的語法和豐富的庫,成為爬蟲開發(fā)的熱門語言?;九老x流程:發(fā)送HTTP請求獲取網頁解析HTML提取所需數(shù)據(jù)處理和存儲數(shù)據(jù)常用爬蟲庫urllibPython標準庫,用于處理URL和HTTP請求requests優(yōu)雅簡單的HTTP庫,使用更加方便BeautifulSoupHTML/XML解析庫,便于提取數(shù)據(jù)lxml高性能的XML/HTML解析器豆瓣電影Top250爬蟲示例importrequestsfrombs4importBeautifulSoupimportcsvdefcrawl_douban_top250():#請求頭,模擬瀏覽器headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36'}#存儲結果的列表movies=[]#爬取第一頁url='/top250'response=requests.get(url,headers=headers)ifresponse.status_code==200:#解析HTMLsoup=BeautifulSoup(response.text,'html.parser')movie_list=soup.find('ol',class_='grid_view').find_all('li')#提取電影信息formovieinmovie_list:title=movie.find('span',class_='title').textrating=movie.find('span',class_='rating_num').textquote=movie.find('span',class_='inq')quote=quote.textifquoteelse"暫無簡評"movies.append([title,rating,quote])#保存到CSV文件withopen('douban_top250.csv','w',newline='',encoding='utf-8')asf:writer=csv.writer(f)writer.writerow(['電影名','評分','簡評'])writer.writerows(movies)returnf"成功爬取{len(movies)}部電影信息"else:returnf"請求失敗,狀態(tài)碼:{response.status_code}"#運行爬蟲print(crawl_douban_top250())爬蟲注意事項爬蟲使用需遵守網站robots.txt規(guī)則,避免頻繁請求,尊重版權,不得用于非法用途。很多網站有反爬機制,需合理設置爬取頻率和請求頭。異步與多線程并發(fā)編程簡介并發(fā)編程允許程序同時執(zhí)行多個任務,提高執(zhí)行效率,尤其適用于I/O密集型任務(如網絡請求、文件操作)。Python提供多種并發(fā)編程方式:多線程(threading模塊)多進程(multiprocessing模塊)異步IO(asyncio模塊)Python線程模塊importthreadingimporttimedeftask(name,seconds):"""線程執(zhí)行的任務"""print(f"任務{name}開始")time.sleep(seconds)#模擬耗時操作print(f"任務{name}完成,耗時{seconds}秒")#創(chuàng)建多個線程threads=[]foriinrange(3):t=threading.Thread(target=task,args=(f"線程{i+1}",i+1))threads.append(t)t.start()#啟動線程#等待所有線程完成fortinthreads:t.join()print("所有線程已完成")多線程下載示例importthreadingimportrequestsimporttimedefdownload_file(url,filename):"""下載文件的函數(shù)"""print(f"開始下載{filename}")response=requests.get(url,stream=True)withopen(filename,'wb')asf:forchunkinresponse.iter_content(chunk_size=1024):ifchunk:f.write(chunk)print(f"{filename}下載完成")#要下載的文件列表files=[('/file1.pdf','file1.pdf'),('/file2.pdf','file2.pdf'),('/file3.pdf','file3.pdf')]#單線程下載start_time=time.time()forurl,filenameinfiles:download_file(url,filename)print(f"單線程耗時:{time.time()-start_time:.2f}秒")#多線程下載start_time=time.time()threads=[]forurl,filenameinfiles:t=threading.Thread(target=download_file,args=(url,filename))threads.append(t)t.start()fortinthreads:t.join()print(f"多線程耗時:{time.time()-start_time:.2f}秒")GIL與并發(fā)Python的全局解釋器鎖(GIL)限制了多線程在CPU密集型任務上的性能。在這種情況下,多進程(multiprocessing)可能是更好的選擇。對于I/O密集型任務,多線程和異步IO都能顯著提高性能。使用Pygame開發(fā)小游戲Pygame簡介Pygame是Python的游戲開發(fā)庫,基于SDL(SimpleDirectMediaLayer),提供了圖形、聲音、輸入等游戲開發(fā)所需的功能。主要功能:圖形繪制和圖像處理聲音和音樂播放鍵盤、鼠標和游戲手柄輸入碰撞檢測精靈(Sprite)系統(tǒng)Pygame安裝與基本結構#安裝Pygame#pipinstallpygameimportpygameimportsys#初始化Pygamepygame.init()#創(chuàng)建游戲窗口screen=pygame.display.set_mode((800,600))pygame.display.set_caption("我的第一個Pygame游戲")#游戲循環(huán)running=Truewhilerunning:#處理事件foreventinpygame.event.get():ifevent.type==pygame.QUIT:running=False#游戲邏輯更新#繪制屏幕screen.fill((0,0,0))#填充黑色背景#更新顯示pygame.display.flip()#退出游戲pygame.quit()sys.exit()貪吃蛇游戲核心代碼初始化設置設置窗口大小、顏色、蛇的初始位置和方向、食物位置等。處理輸入監(jiān)聽鍵盤事件,根據(jù)按鍵改變蛇的移動方向。更新游戲狀態(tài)移動蛇,檢測碰撞,處理吃到食物的情況。繪制游戲畫面繪制蛇、食物和得分等游戲元素。#貪吃蛇游戲部分核心代碼defmove_snake(snake,direction):head=snake[0].copy()ifdirection=="UP":head[1]-=GRID_SIZEelifdirection=="DOWN":head[1]+=GRID_SIZEelifdirection=="LEFT":head[0]-=GRID_SIZEelifdirection=="RIGHT":head[0]+=GRID_SIZEsnake.insert(0,head)#如果沒有吃到食物,移除尾部;否則保留,蛇會變長ifnotcheck_food_collision(snake,food):snake.pop()else:generate_food()returncheck_collision(snake)游戲開發(fā)進階掌握基礎后,可以嘗試開發(fā)更復雜的游戲,如飛機大戰(zhàn)、俄羅斯方塊等。也可探索PyGame的高級功能,如粒子效果、物理引擎集成等。項目實戰(zhàn):記賬本項目概述開發(fā)一個簡單的個人記賬應用,實現(xiàn)收入支出記錄、數(shù)據(jù)存儲與可視化、圖形用戶界面等功能。主要功能:添加、刪除、查詢收支記錄按日期、類別篩選記錄生成收支統(tǒng)計報表數(shù)據(jù)持久化存儲圖形化用戶界面項目結構accounting_app/├──main.py#主程序入口├──models.py#數(shù)據(jù)模型├──storage.py#數(shù)據(jù)存儲├──gui.py#圖形界面├──report.py#報表生成└──data/#數(shù)據(jù)文件目錄└──records.json核心代碼示例數(shù)據(jù)模型#models.pyclassRecord:def__init__(self,date,type,amount,category,note=""):self.date=date#日期self.type=type#類型:收入/支出self.amount=amount#金額self.category=category#分類self.note=note#備注defto_dict(self):return{"date":self.date,"type":self.type,"amount":self.amount,"category":self.category,"note":self.note}數(shù)據(jù)存儲#storage.pyimportjsonimportosclassStorage:def__init__(self,file_path):self.file_path=file_pathself.ensure_file_exists()defensure_file_exists(self):ifnotos.path.exists(self.file_path):withopen(self.file_path,'w')asf:json.dump([],f)defload_records(self):withopen(self.file_path,'r')asf:returnjson.load(f)defsave_records(self,records):withopen(self.file_path,'w')asf:json.dump(records,f,indent=2)圖形界面#gui.py(部分代碼)importtkinterastkfromtkinterimportttk,messageboxclassAccountingApp:def__init__(self,root):self.root=rootself.root.title("個人記賬本")self.root.geometry("800x600")#創(chuàng)建標簽頁self.notebook=ttk.Notebook(root)self.tab_add=tk.Frame(self.notebook)self.tab_view=tk.Frame(self.notebook)self.tab_stats=tk.Frame(self.notebook)self.notebook.add(self.tab_add,text="添加記錄")self.notebook.add(self.tab_view,text="查看記錄")self.notebook.add(self.tab_stats,text="統(tǒng)計報表")self.notebook.pack(expand=1,fill="both")#初始化各標簽頁內容self.init_add_tab()self.init_view_tab()self.init_stats_tab()項目擴展方向完成基礎功能后,可以考慮添加多用戶支持、云同步、預算管理、消費分析、賬單提醒等高級功能,或者將應用打包為可執(zhí)行文件方便分發(fā)。案例拓展:微信機器人微信機器人簡介利用Python開發(fā)微信機器人,可以實現(xiàn)自動回復、消息監(jiān)控、群管理等功能,提高社交媒體運營效率。主要應用場景:客服自動回復信息推送與提醒群聊管理與數(shù)據(jù)統(tǒng)計定時任務執(zhí)行實現(xiàn)方案itchat庫基于網頁版微信的PythonAPI,使用簡單,適合個人開發(fā)者WeChatPy支持微信公眾號API的Python庫,適合開發(fā)公眾號應用企業(yè)微信API適合企業(yè)內部應用開發(fā),官方支持,穩(wěn)定性好示例代碼:簡單微信機器人#需要安裝itchat庫:pipinstallitchatimportitchatimportreimporttime#登錄微信itchat.auto_login(hotReload=True)#關鍵詞回復字典replies={"你好":"你好!我是小甲魚機器人,有什么可以幫助你的嗎?","Python":"Python是一種編程語言,由GuidovanRossum創(chuàng)建,特點是簡潔易讀。","教程":"小甲魚Python教程是一套優(yōu)秀的Python入門學習資料,詳情請訪問官網。"}#處理收到的文本消息@itchat.msg_register(itchat.content.TEXT)deftext_reply(msg):#獲取消息內容content=msg['Text']#檢查是否包含關鍵詞forkeyword,replyinreplies.items():ifke

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論