程序培訓(xùn)課件_第1頁
程序培訓(xùn)課件_第2頁
程序培訓(xùn)課件_第3頁
程序培訓(xùn)課件_第4頁
程序培訓(xùn)課件_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

編程入門與實(shí)踐課程目標(biāo)與價(jià)值通過本課程,您將:培養(yǎng)系統(tǒng)化的編程思維與實(shí)際動手能力掌握當(dāng)前主流編程語言的基礎(chǔ)知識與應(yīng)用具備獨(dú)立完成簡單項(xiàng)目的技術(shù)能力為后續(xù)深入學(xué)習(xí)奠定堅(jiān)實(shí)基礎(chǔ)培訓(xùn)安排與流程基礎(chǔ)階段掌握編程語言基礎(chǔ)語法、數(shù)據(jù)結(jié)構(gòu)和基本算法,建立編程思維。進(jìn)階階段學(xué)習(xí)面向?qū)ο缶幊獭⑽募僮鳌㈠e誤處理等核心概念。實(shí)戰(zhàn)階段通過實(shí)際項(xiàng)目案例,綜合運(yùn)用所學(xué)知識,提升解決問題的能力。程序員的世界行業(yè)現(xiàn)狀軟件開發(fā)行業(yè)正處于蓬勃發(fā)展期,中國IT人才需求持續(xù)增長。隨著數(shù)字化轉(zhuǎn)型加速,各行各業(yè)對程序員的需求不斷擴(kuò)大。職業(yè)前景初級程序員平均月薪約10000-15000元,3-5年經(jīng)驗(yàn)的中級開發(fā)者可達(dá)20000-30000元,高級工程師和技術(shù)主管薪資更可觀。招聘標(biāo)準(zhǔn)常見編程語言簡介Python簡潔易學(xué),應(yīng)用廣泛。適用于數(shù)據(jù)分析、人工智能、Web開發(fā)和自動化腳本。國內(nèi)互聯(lián)網(wǎng)企業(yè)和科研機(jī)構(gòu)需求旺盛。Java企業(yè)級應(yīng)用首選,跨平臺性強(qiáng)。廣泛應(yīng)用于大型系統(tǒng)開發(fā)、Android應(yīng)用和金融行業(yè)。國內(nèi)大型企業(yè)和銀行需求穩(wěn)定。C/C++開發(fā)環(huán)境的搭建IDE安裝配置VSCode:輕量級編輯器,支持多種語言PyCharm:專業(yè)Python開發(fā)環(huán)境IntelliJIDEA:Java開發(fā)必備工具環(huán)境變量配置正確設(shè)置JDK/Python環(huán)境變量是程序能夠運(yùn)行的關(guān)鍵。我們將手把手教您完成這一步驟,避免常見錯誤。HelloWorld示例print("你好,世界!")完成環(huán)境搭建后,我們將運(yùn)行第一個程序,驗(yàn)證環(huán)境配置是否正確,并開啟您的編程之旅。代碼基礎(chǔ):變量與數(shù)據(jù)類型數(shù)值類型整數(shù)(int):1,100,-5浮點(diǎn)數(shù)(float):3.14,-0.01復(fù)數(shù)(complex):3+4j字符串類型文本數(shù)據(jù):name="張三"address='北京市'布爾類型邏輯值:True,False常用于條件判斷變量命名規(guī)范:使用有意義的名稱,遵循小駝峰或下劃線命名法,避免使用中文和特殊字符。良好的命名習(xí)慣能讓代碼更易讀、易維護(hù)。運(yùn)算符與表達(dá)式基本運(yùn)算符算術(shù)運(yùn)算符+,-,*,/,%,**比較運(yùn)算符==,!=,>,<,>=,<=邏輯運(yùn)算符and,or,not賦值運(yùn)算符=,+=,-=,*=,/=表達(dá)式示例#復(fù)合運(yùn)算示例a=5b=3c=a+b*2#結(jié)果為11d=(a+b)*2#結(jié)果為16e=a>bandb<10#結(jié)果為True控制流程——順序結(jié)構(gòu)順序結(jié)構(gòu)特點(diǎn)代碼按照從上到下的順序執(zhí)行是最簡單的程序執(zhí)行流程每條語句都會被執(zhí)行且僅執(zhí)行一次順序結(jié)構(gòu)是程序的基本結(jié)構(gòu),也是最直觀的執(zhí)行方式。理解順序執(zhí)行的概念對掌握更復(fù)雜的控制結(jié)構(gòu)至關(guān)重要。順序結(jié)構(gòu)示例#計(jì)算長方形面積的順序結(jié)構(gòu)length=5width=3area=length*widthprint("長方形面積為:",area)條件語句if/else單分支結(jié)構(gòu)if條件:執(zhí)行語句當(dāng)條件滿足時(shí)執(zhí)行特定代碼塊雙分支結(jié)構(gòu)if條件:執(zhí)行語句1else:執(zhí)行語句2根據(jù)條件選擇兩條不同路徑多分支結(jié)構(gòu)if條件1:執(zhí)行語句1elif條件2:執(zhí)行語句2else:執(zhí)行語句3處理多種可能情況實(shí)例:根據(jù)學(xué)生成績判定等級,90分以上為優(yōu)秀,80-89為良好,60-79為及格,60分以下為不及格。循環(huán)結(jié)構(gòu)for/whilefor循環(huán)#基本語法for變量in可迭代對象:循環(huán)體語句#示例:打印1到5的數(shù)字foriinrange(1,6):print(i)for循環(huán)適用于遍歷已知次數(shù)或集合元素的情況while循環(huán)#基本語法while條件:循環(huán)體語句#示例:當(dāng)用戶輸入"退出"時(shí)結(jié)束循環(huán)user_input=""whileuser_input!="退出":user_input=input("請輸入命令:")while循環(huán)適用于條件控制的循環(huán),次數(shù)可能不確定跳轉(zhuǎn)控制語句break語句立即終止當(dāng)前循環(huán),跳出循環(huán)體foriinrange(10):ifi==5:breakprint(i)#輸出:01234continue語句跳過當(dāng)前循環(huán)剩余語句,進(jìn)入下一次循環(huán)foriinrange(5):ifi==2:continueprint(i)#輸出:0134return語句結(jié)束整個函數(shù)執(zhí)行并返回值deffind_target(nums,target):fori,numinenumerate(nums):ifnum==target:returnireturn-1函數(shù)/方法基礎(chǔ)函數(shù)定義與調(diào)用#函數(shù)定義def函數(shù)名(參數(shù)1,參數(shù)2,...):函數(shù)體return返回值#函數(shù)調(diào)用結(jié)果=函數(shù)名(參數(shù)1,參數(shù)2,...)函數(shù)是實(shí)現(xiàn)代碼復(fù)用的重要機(jī)制,能將重復(fù)使用的代碼塊組織起來,提高開發(fā)效率。參數(shù)類型必選參數(shù):調(diào)用時(shí)必須提供默認(rèn)參數(shù):有預(yù)設(shè)值,可選可變參數(shù):接收任意數(shù)量參數(shù)關(guān)鍵字參數(shù):通過鍵值對傳遞作用域與命名空間全局作用域在整個程序中都可訪問的變量total=0#全局變量defadd_to_total(value):globaltotal#聲明使用全局變量total+=value局部作用域僅在函數(shù)內(nèi)部可訪問的變量defcalculate():result=100#局部變量returnresult#result在此處不可訪問嵌套作用域內(nèi)部函數(shù)可訪問外部函數(shù)的變量defouter():x=10definner():print(x)#可訪問外層變量inner()數(shù)據(jù)結(jié)構(gòu):列表和元組列表(List)#創(chuàng)建列表scores=[85,92,78,96,88]#常用操作scores.append(90)#添加元素scores.remove(78)#刪除元素scores.sort()#排序print(len(scores))#長度列表是可變序列,適合存儲需要頻繁修改的數(shù)據(jù)集合元組(Tuple)#創(chuàng)建元組coordinates=(10,20)student=('張三',18,'男')#元組解包name,age,gender=studentprint(f"姓名:{name},年齡:{age}")元組是不可變序列,適合存儲固定數(shù)據(jù)或作為字典鍵字典和集合字典(Dictionary)#創(chuàng)建字典student={'name':'李四','age':20,'scores':{'數(shù)學(xué)':90,'英語':85}}#訪問和修改print(student['name'])#輸出:李四student['age']=21#修改年齡student['class']='3班'#添加新鍵值對字典通過鍵值對存儲數(shù)據(jù),適合需要快速查找的場景集合(Set)#創(chuàng)建集合fruits={'蘋果','香蕉','橙子','蘋果'}print(fruits)#輸出:{'蘋果','香蕉','橙子'}#集合操作basket={'梨','草莓','香蕉'}print(fruits&basket)#交集:{'香蕉'}集合是無序且不重復(fù)的元素集合,適合去重和集合運(yùn)算字符串處理方法切片操作text="北京歡迎您"print(text[0:2])#輸出:北京print(text[-2:])#輸出:迎您查找與替換sentence="Python編程很有趣"print(sentence.find("編程"))#輸出:6new_str=sentence.replace("Python","Java")print(new_str)#輸出:Java編程很有趣格式化與拼接name="王五"age=25intro=f"{name}今年{age}歲"print(intro)#輸出:王五今年25歲parts=["歡迎","來到","北京"]message="".join(parts)print(message)#輸出:歡迎來到北京文件操作與IO基礎(chǔ)文件讀寫模式'r'只讀模式(默認(rèn))'w'寫入模式(覆蓋原內(nèi)容)'a'追加模式(末尾添加)'b'二進(jìn)制模式(與其他模式組合)基本文件操作#寫入文件withopen('log.txt','w',encoding='utf-8')asf:f.write('系統(tǒng)啟動\n')f.write('用戶登錄:admin\n')#讀取文件withopen('log.txt','r',encoding='utf-8')asf:content=f.read()print(content)錯誤和異常處理基本結(jié)構(gòu)try:#可能出錯的代碼result=10/0exceptZeroDivisionError:#處理特定異常print("除數(shù)不能為零!")exceptExceptionase:#處理其他異常print(f"發(fā)生錯誤:{e}")完整結(jié)構(gòu)try:result=int(input("輸入數(shù)字:"))exceptValueError:print("輸入必須是數(shù)字!")else:#沒有異常時(shí)執(zhí)行print(f"輸入的數(shù)字是:{result}")finally:#總是執(zhí)行print("處理完成")常見異常類型TypeError:類型錯誤ValueError:值錯誤IndexError:索引超出范圍KeyError:字典中不存在的鍵FileNotFoundError:文件不存在模塊與包導(dǎo)入方式#導(dǎo)入整個模塊importmathprint(math.sqrt(16))#輸出:4.0#導(dǎo)入特定函數(shù)或類fromdatetimeimportdatetimenow=datetime.now()#使用別名importnumpyasnparr=np.array([1,2,3])常用標(biāo)準(zhǔn)庫os:操作系統(tǒng)接口datetime:日期和時(shí)間處理json:JSON數(shù)據(jù)處理random:隨機(jī)數(shù)生成re:正則表達(dá)式三方庫安裝:pipinstall包名面向?qū)ο缶幊蹋∣OP)基礎(chǔ)類與對象classStudent:#類變量school="北京大學(xué)"#構(gòu)造函數(shù)def__init__(self,name,age):=name#實(shí)例變量self.age=age#實(shí)例方法defintroduce(self):returnf"我叫{},{self.age}歲"創(chuàng)建和使用對象#創(chuàng)建對象student1=Student("張三",18)student2=Student("李四",20)#訪問屬性print()#輸出:張三print(Student.school)#輸出:北京大學(xué)#調(diào)用方法print(roduce())封裝與訪問控制classBankAccount:def__init__(self,owner,balance):self.owner=ownerself.__balance=balance#私有屬性defdeposit(self,amount):self.__balance+=amountdefget_balance(self):returnself.__balance繼承與多態(tài)繼承關(guān)系classPerson:def__init__(self,name,age):=nameself.age=agedefintroduce(self):returnf"我是{},{self.age}歲"classStudent(Person):#繼承Person類def__init__(self,name,age,student_id):super().__init__(name,age)#調(diào)用父類構(gòu)造函數(shù)self.student_id=student_id#方法重寫defintroduce(self):returnf"{super().introduce()},學(xué)號是{self.student_id}"多態(tài)示例#多態(tài)使用示例defprint_intro(person):#不管傳入的是Person還是Student對象#都會調(diào)用其對應(yīng)的introduce方法print(roduce())p=Person("王五",30)s=Student("趙六",18,"20220001")print_intro(p)#調(diào)用Person的introduceprint_intro(s)#調(diào)用Student的introduce編碼規(guī)范與代碼風(fēng)格PEP8規(guī)范要點(diǎn)縮進(jìn)使用4個空格行長度不超過79個字符函數(shù)和類之間空兩行導(dǎo)入模塊按標(biāo)準(zhǔn)庫、第三方庫、本地模塊分組變量名使用小寫下劃線命名法(snake_case)類名使用駝峰命名法(CamelCase)代碼注釋規(guī)范defcalculate_area(length,width):"""計(jì)算長方形面積參數(shù):length(float):長度width(float):寬度返回:float:面積"""returnlength*width常用開發(fā)工具推薦調(diào)試技巧使用斷點(diǎn)暫停程序執(zhí)行,檢查變量狀態(tài),單步執(zhí)行跟蹤程序流程。VSCode和PyCharm等IDE提供圖形化調(diào)試界面,大大簡化調(diào)試過程。日志分析使用logging模塊記錄程序運(yùn)行狀態(tài),幫助追蹤問題。importlogginglogging.basicConfig(level=logging.INFO)("程序啟動")錯誤追蹤利用異常堆棧跟蹤定位錯誤源頭,閱讀錯誤信息找出問題所在行。使用print或日志輸出中間變量值,驗(yàn)證程序邏輯。版本控制入門(Git)基本Git命令gitinit初始化倉庫gitadd.添加所有更改到暫存區(qū)gitcommit-m"信息"提交更改gitpush推送到遠(yuǎn)程倉庫gitpull拉取遠(yuǎn)程更新gitbranch查看/創(chuàng)建分支gitmerge合并分支GitHub協(xié)作流程Fork項(xiàng)目到自己的賬號Clone到本地并創(chuàng)建分支在分支上進(jìn)行修改并提交Push到自己的遠(yuǎn)程倉庫創(chuàng)建PullRequest請求合并軟件開發(fā)流程概述需求分析收集并分析用戶需求,明確軟件應(yīng)該做什么。設(shè)計(jì)階段確定軟件架構(gòu)、界面和數(shù)據(jù)結(jié)構(gòu)等技術(shù)細(xì)節(jié)。編碼實(shí)現(xiàn)根據(jù)設(shè)計(jì)文檔編寫代碼,實(shí)現(xiàn)軟件功能。測試驗(yàn)證進(jìn)行單元測試、集成測試和系統(tǒng)測試,確保質(zhì)量。部署上線將軟件部署到生產(chǎn)環(huán)境,提供給最終用戶。維護(hù)更新修復(fù)bug,添加新功能,持續(xù)改進(jìn)軟件。瀑布流模型是一種傳統(tǒng)的線性開發(fā)模式,每個階段完成后才進(jìn)入下一階段;而敏捷開發(fā)采用迭代增量方式,強(qiáng)調(diào)團(tuán)隊(duì)協(xié)作和快速響應(yīng)變化。項(xiàng)目設(shè)計(jì)與需求分析用例圖基礎(chǔ)用例圖描述了系統(tǒng)與外部參與者之間的交互關(guān)系,幫助確定系統(tǒng)的功能邊界。參與者:系統(tǒng)外部的角色(用戶、管理員等)用例:系統(tǒng)提供的功能關(guān)系:參與者與用例之間的交互UML建模簡介統(tǒng)一建模語言(UML)提供了一套標(biāo)準(zhǔn)符號來可視化系統(tǒng)設(shè)計(jì)。類圖:描述系統(tǒng)中的類及其關(guān)系序列圖:展示對象之間的交互時(shí)序狀態(tài)圖:描述對象狀態(tài)的變化流程圖與偽代碼流程圖基本元素起止框:表示流程的開始和結(jié)束處理框:表示執(zhí)行操作判斷框:表示條件分支輸入/輸出框:表示數(shù)據(jù)的輸入輸出連接線:表示流程方向繪制工具推薦:Visio、Draw.io、ProcessOn等在線工具。偽代碼示例算法:查找最大值輸入:數(shù)組arr輸出:最大值max開始設(shè)max=arr[0]對于i從1到arr.length-1如果arr[i]>maxmax=arr[i]結(jié)束如果結(jié)束循環(huán)返回max結(jié)束單元測試基礎(chǔ)測試用例編寫原則測試函數(shù)的每個分支和邊界條件一個測試用例只測試一個功能點(diǎn)測試用例應(yīng)當(dāng)獨(dú)立,不依賴其他測試測試應(yīng)覆蓋正常輸入和異常輸入Python單元測試框架unittest:Python標(biāo)準(zhǔn)庫pytest:功能更強(qiáng)大的第三方庫nose2:簡化測試的擴(kuò)展框架測試用例示例importunittestdefadd(a,b):returna+bclassTestAdd(unittest.TestCase):deftest_positive_numbers(self):self.assertEqual(add(1,2),3)deftest_negative_numbers(self):self.assertEqual(add(-1,-1),-2)if__name__=='__main__':unittest.main()項(xiàng)目實(shí)操一:電商商品管理商品數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)classProduct:def__init__(self,id,name,price,stock):self.id=id#商品ID=name#商品名稱self.price=price#價(jià)格self.stock=stock#庫存數(shù)量self.create_time=datetime.now()#創(chuàng)建時(shí)間#使用字典存儲商品集合products={}#鍵為商品ID,值為Product對象功能實(shí)現(xiàn)defadd_product(id,name,price,stock):"""添加新商品"""ifidinproducts:returnFalse,"商品ID已存在"products[id]=Product(id,name,price,stock)returnTrue,"添加成功"defupdate_product(id,**kwargs):"""更新商品信息"""ifidnotinproducts:returnFalse,"商品不存在"forkey,valueinkwargs.items():ifhasattr(products[id],key):setattr(products[id],key,value)returnTrue,"更新成功"項(xiàng)目實(shí)操二:學(xué)生成績管理系統(tǒng)數(shù)據(jù)錄入模塊defadd_student_score():"""添加學(xué)生成績"""student_id=input("輸入學(xué)號:")name=input("輸入姓名:")#錄入各科成績scores={}forsubjectin["數(shù)學(xué)","語文","英語"]:whileTrue:try:score=float(input(f"輸入{subject}成績:"))if0<=score<=100:scores[subject]=scorebreakprint("成績必須在0-100之間")exceptValueError:print("請輸入有效數(shù)字")數(shù)據(jù)查詢統(tǒng)計(jì)模塊defquery_student(student_id):"""查詢單個學(xué)生成績"""ifstudent_idinstudents:returnstudents[student_id]returnNonedefcalculate_stats():"""計(jì)算統(tǒng)計(jì)數(shù)據(jù)"""stats={}forsubjectin["數(shù)學(xué)","語文","英語"]:scores=[s["scores"][subject]forsinstudents.values()ifsubjectins["scores"]]stats[subject]={"平均分":sum(scores)/len(scores),"最高分":max(scores),"最低分":min(scores)}returnstats數(shù)據(jù)可視化入門Matplotlib基礎(chǔ)importmatplotlib.pyplotasplt#準(zhǔn)備數(shù)據(jù)subjects=["數(shù)學(xué)","語文","英語","物理","化學(xué)"]scores=[85,92,78,90,86]#創(chuàng)建柱狀圖plt.figure(figsize=(10,6))plt.bar(subjects,scores,color='skyblue')plt.xlabel("學(xué)科")plt.ylabel("分?jǐn)?shù)")plt.title("學(xué)科成績柱狀圖")plt.savefig("scores.png")plt.show()Seaborn增強(qiáng)可視化importseabornassnsimportpandasaspd#創(chuàng)建數(shù)據(jù)框data=pd.DataFrame({"學(xué)科":subjects*3,"分?jǐn)?shù)":scores+[75,80,65,70,80]+[90,85,80,88,75],"班級":["班級A"]*5+["班級B"]*5+["班級C"]*5})#繪制分組柱狀圖plt.figure(figsize=(12,8))sns.barplot(x="學(xué)科",y="分?jǐn)?shù)",hue="班級",data=data)plt.title("各班級學(xué)科成績對比")plt.show()數(shù)據(jù)庫基礎(chǔ)MySQL數(shù)據(jù)庫連接importmysql.connector#建立連接conn=mysql.connector.connect(host="localhost",user="root",password="password",database="school")cursor=conn.cursor()基本SQL操作#創(chuàng)建表cursor.execute("""CREATETABLEIFNOTEXISTSstudents(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(50)NOTNULL,ageINT,gradeVARCHAR(10))""")#插入數(shù)據(jù)cursor.execute("""INSERTINTOstudents(name,age,grade)VALUES(%s,%s,%s)""",("張三",18,"高一"))mit()查詢數(shù)據(jù)#查詢所有學(xué)生cursor.execute("SELECT*FROMstudents")students=cursor.fetchall()forstudentinstudents:print(student)#條件查詢cursor.execute("""SELECT*FROMstudentsWHEREage>%sORDERBYage""",(16,))results=cursor.fetchall()#關(guān)閉連接cursor.close()conn.close()文件處理進(jìn)階大文件處理#逐行讀取大文件,避免內(nèi)存溢出defprocess_large_file(filename):withopen(filename,'r',encoding='utf-8')asf:forlineinf:#逐行讀取#處理每一行process_line(line.strip())#文件分塊讀取defread_in_chunks(file_path,chunk_size=1024):withopen(file_path,'rb')asf:whileTrue:chunk=f.read(chunk_size)ifnotchunk:breakyieldchunk文件壓縮與解壓importzipfile#壓縮文件defcompress_files(zip_name,file_list):withzipfile.ZipFile(zip_name,'w')aszipf:forfileinfile_list:zipf.write(file)#解壓文件defextract_zip(zip_name,extract_path):withzipfile.ZipFile(zip_name,'r')aszipf:zipf.extractall(extract_path)網(wǎng)絡(luò)編程簡介Socket基本原理Socket是網(wǎng)絡(luò)編程的基礎(chǔ),提供了計(jì)算機(jī)之間通信的端點(diǎn)。TCPSocket保證可靠的數(shù)據(jù)傳輸,而UDPSocket則提供快速但不可靠的數(shù)據(jù)傳輸。#創(chuàng)建TCP服務(wù)器importsocketserver=socket.socket(socket.AF_INET,socket.SOCK_STREAM)server.bind(('localhost',8888))server.listen(5)print("服務(wù)器啟動,等待連接...")簡易聊天室客戶端#客戶端代碼client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)client.connect(('localhost',8888))#發(fā)送消息client.send("你好,服務(wù)器!".encode('utf-8'))#接收響應(yīng)response=client.recv(1024)print(f"服務(wù)器回復(fù):{response.decode('utf-8')}")#關(guān)閉連接client.close()Web開發(fā)初探Flask微框架輕量級Web框架,適合小型應(yīng)用和API開發(fā)。fromflaskimportFlask,jsonifyapp=Flask(__name__)@app.route('/api/hello')defhello():returnjsonify({"message":"你好,世界!"})if__name__=='__main__':app.run(debug=True)Django全棧框架功能豐富的Web框架,提供ORM、認(rèn)證、管理后臺等。#創(chuàng)建模型classArticle(models.Model):title=models.CharField(max_length=100)content=models.TextField()pub_date=models.DateTimeField(auto_now_add=True)def__str__(self):returnself.titleAPI調(diào)用與數(shù)據(jù)交互Requests庫基礎(chǔ)importrequests#發(fā)送GET請求response=requests.get("/data",params={"key":"value"})print(f"狀態(tài)碼:{response.status_code}")print(f"響應(yīng)內(nèi)容:{response.json()}")#發(fā)送POST請求data={"username":"test","password":"123456"}response=requests.post("/login",json=data)print(response.json())調(diào)用第三方API示例#調(diào)用天氣APIdefget_weather(city):api_key="your_api_key"url=f"/v1/current.json"params={"key":api_key,"q":city,"lang":"zh"}response=requests.get(url,params=params)ifresponse.status_code==200:data=response.json()return{"溫度":data["current"]["temp_c"],"天氣":data["current"]["condition"]["text"]}returnNone前端基礎(chǔ)了解HTML基礎(chǔ)<!DOCTYPEhtml><html><head><title>我的網(wǎng)頁</title></head><body><h1>歡迎訪問</h1><p>這是一個段落</p></body></html>CSS樣式/*樣式表*/body{font-family:'Arial',sans-serif;background-color:#f0f0f0;}h1{color:#333;text-align:center;}.container{width:80%;margin:0auto;}JavaScript交互//點(diǎn)擊事件處理document.getElementById('myButton').addEventListener('click',function(){alert('按鈕被點(diǎn)擊了!');});//與Python數(shù)據(jù)交互fetch('/api/data').then(response=>response.json()).then(data=>{console.log(data);document.getElementById('result').textContent=data.message;});自動化辦公腳本Excel文件處理importpandasaspd#讀取Excel文件df=pd.read_excel('銷售數(shù)據(jù).xlsx')#數(shù)據(jù)處理summary=df.groupby('產(chǎn)品類別').agg({'銷售額':'sum','數(shù)量':'sum'})#數(shù)據(jù)分析summary['平均價(jià)格']=summary['銷售額']/summary['數(shù)量']#保存結(jié)果summary.to_excel('銷售匯總.xlsx')自動發(fā)送郵件importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartdefsend_email(to_list,subject,content,attachment=None):#郵件配置msg=MIMEMultipart()msg['From']='your_email@'msg['To']=','.join(to_list)msg['Subject']=subject#添加正文msg.attach(MIMEText(content,'html','utf-8'))#發(fā)送郵件smtp=smtplib.SMTP('',25)smtp.login('username','password')smtp.sendmail(msg['From'],to_list,msg.as_string())smtp.quit()多線程與多進(jìn)程多線程編程importthreadingdeftask(name):print(f"線程{name}開始運(yùn)行")#執(zhí)行任務(wù)print(f"線程{name}完成")#創(chuàng)建多個線程threads=[]foriinrange(5):t=threading.Thread(target=task,args=(f"T{i}",))threads.append(t)t.start()#等待所有線程完成fortinthreads:t.join()多進(jìn)程編程frommultiprocessingimportProcessdefprocess_task(name):print(f"進(jìn)程{name}開始運(yùn)行")#執(zhí)行計(jì)算密集型任務(wù)print(f"進(jìn)程{name}完成")#創(chuàng)建多個進(jìn)程processes=[]foriinrange(3):p=Process(target=process_task,args=(f"P{i}",))processes.append(p)p.start()#等待所有進(jìn)程完成forpinprocesses:p.join()圖片批量處理示例fromPILimportImageimportosfrommultiprocessingimportPooldefresize_image(file_path):withImage.open(file_path)asimg:#調(diào)整大小img_resized=img.resize((800,600))#保存new_path=f"resized_{os.path.basename(file_path)}"img_resized.save(new_path)returnnew_path#并行處理多張圖片pool=Pool(processes=4)results=pool.map(resize_image,image_files)pool.close()pool.join()生產(chǎn)環(huán)境的部署依賴管理#生成依賴列表pipfreeze>requirements.txt#安裝依賴pipinstall-rrequirements.txt#虛擬環(huán)境創(chuàng)建python-mvenvmyenv#激活虛擬環(huán)境#Windows:myenv\Scripts\activate#Linux/Mac:sourcemyenv/bin/activateDocker容器化#Dockerfile示例FROMpython:3.9-slimWORKDIR/appCOPYrequirements.txt.RUNpipinstall--no-cache-dir-rrequirements.txtCOPY..EXPOSE5000CMD["python","app.py"]#構(gòu)建鏡像#dockerbuild-tmyapp:v1.性能優(yōu)化基礎(chǔ)代碼優(yōu)化技巧選擇合適的數(shù)據(jù)結(jié)構(gòu)(列表vs字典)避免不必要的循環(huán)和計(jì)算使用生成器減少內(nèi)存占用利用內(nèi)置函數(shù)提高性能性能分析工具cProfile:內(nèi)置性能分析器importcProfilecProfile.run('my_function()')memory_profiler:內(nèi)存占用分析frommemory_profilerimportprofile@profiledefmy_function():#代碼邏輯優(yōu)化案例#優(yōu)化前deffind_pairs(numbers,target):result=[]foriinrange(len(numbers)):forjinrange(i+1,len(numbers)):ifnumbers[i]+numbers[j]==target:result.append((numbers[i],numbers[j]))returnresult#優(yōu)化后deffind_pairs_optimized(numbers,target):seen=set()result=[]fornuminnumbers:complement=target-numifcomplementinseen:result.append((complement,num))seen.add(num)returnresult代碼復(fù)用與模塊化工具類庫設(shè)計(jì)#utils.pyclassDateUtil:@staticmethoddefformat_date(date_obj,format="%Y-%m-%d"):"""格式化日期"""returndate_obj.strftime(format)@staticmethoddefparse_date(date_str,format="%Y-%m-%d"):"""解析日期字符串"""fromdatetimeimportdatetimereturndatetime.strptime(date_str,format)classStringUtil:@staticmethoddefis_empty(s):"""檢查字符串是否為空"""returnsisNoneorlen(s.strip())==0模塊化項(xiàng)目結(jié)構(gòu)my_project/├──main.py#入口文件├──config.py#配置文件├──utils/#工具模塊│├──__init__.py│├──file_utils.py│└──date_utils.py├──models/#數(shù)據(jù)模型│├──__init__.py│├──user.py│└──product.py├──services/#業(yè)務(wù)邏輯│├──__init__.py│└──user_service.py└──tests/#測試用例├──__init__.py└──test_utils.py編程常見"坑"與防范可變默認(rèn)參數(shù)#

溫馨提示

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

評論

0/150

提交評論