《python程序設(shè)計(jì)》實(shí)驗(yàn)教程 匯_第1頁(yè)
《python程序設(shè)計(jì)》實(shí)驗(yàn)教程 匯_第2頁(yè)
《python程序設(shè)計(jì)》實(shí)驗(yàn)教程 匯_第3頁(yè)
《python程序設(shè)計(jì)》實(shí)驗(yàn)教程 匯_第4頁(yè)
《python程序設(shè)計(jì)》實(shí)驗(yàn)教程 匯_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《Python程序設(shè)計(jì)(新形態(tài)版)》實(shí)驗(yàn)教程第一章Python概述實(shí)驗(yàn)?zāi)康腜ython的基本特征。PythonPythonIDE的安裝、程序路徑和程序打包。實(shí)驗(yàn)題目TurtleDemo模塊thonDEeDemomnmalhan參考答案:TurtleDemo1-1所示。點(diǎn)擊“Help→TurtleDemo”菜單,打開(kāi)該模塊的界面。圖1-1TurtleDemo界面Examples19minimalhanoi”菜單,1-2所示。圖1-2調(diào)用樣例界面效果STOP”可隨時(shí)停止程序運(yùn)行,“CLEAR”(清除可清除右側(cè)窗口中繪制的圖案。TurtleDemo中1-3所示。圖1-3TurtleDemo中漢諾塔程序運(yùn)行效果Python程序IDLE編寫一個(gè)輸出“HelloPython程序,并成功運(yùn)行。參考答案:print("Hello,World!")pipPython第三方庫(kù)任務(wù):在命令提示符窗口中安裝numpy庫(kù)參考答案:在任務(wù)欄的搜索框中輸入“cmd”,打開(kāi)“命令提示符”窗口。pythonpipinstallnumpy庫(kù),numpy1-4。1-4numpy庫(kù)使用“piplist”命令,可以查看到當(dāng)前位置下安裝的第三方庫(kù)列表。使用“piplist”命令查看第三方列表可參考圖1-5。圖1-5查看第三方庫(kù)列表打開(kāi)IDLE,鍵入如下代碼。importnumpymatrix=numpy.ones((2,2))#創(chuàng)建一個(gè)2×2的矩陣,所有元素都是1print(matrix)可以看到使用numpy.ones()函數(shù)可以生成一個(gè)2×2的全1矩陣。實(shí)驗(yàn)?zāi)康?/p>

第二章數(shù)據(jù)類型與常用內(nèi)置對(duì)象Python的標(biāo)識(shí)符、關(guān)鍵字、數(shù)據(jù)類型、變量、運(yùn)算符與表達(dá)式了解數(shù)據(jù)類型判斷與轉(zhuǎn)換,掌握常用內(nèi)置函數(shù)和模塊實(shí)驗(yàn)題目基礎(chǔ)類型定義IDLEv1v2v3v4v50x161.44、2.5E-3、1.21+2j、True和"Computer",然后顯示每個(gè)變量的值和數(shù)據(jù)類型。參考答案:v1,v2,v3=0x161.442.5E-3 #變量多重賦值方法v4,v5,v6=1.2+2j,True,"Computer"v1 #顯示變量v1的值是22v2 #顯示變量v2的值是1.44v3 #v30.0025v4 #顯示變量v4的值是(1.2+2j)v5 #顯示變量v5的值是Truev6 #顯示變量v6的值是'Computer'type(v1)#v1的數(shù)據(jù)類型是<classint'>type(v2)#顯示變量v2的數(shù)據(jù)類型是<class'float'>type(v3)#顯示變量v3的數(shù)據(jù)類型是<class'float'>type(v4)#顯示變量v4的數(shù)據(jù)類型是<class'complex'>type(v5)#顯示變量v5的數(shù)據(jù)類型是<class'bool'>type(v6)#顯示變量v6的數(shù)據(jù)類型是<class'str'>內(nèi)置函數(shù)操作任務(wù):使用python的內(nèi)置函數(shù)計(jì)算并顯示列表[12,45,78,33,22]中元素個(gè)數(shù)、最大值、最小值、所有元素之和以及數(shù)據(jù)類型。參考答案:list1=[12,45,78,33,22] #定義列表變量list1len(list1) #顯示列表變量list1的元素個(gè)數(shù)為5max(list1) #顯示列表變量list1的元素最大值為78min(list1) #顯示列表變量list1的元素的最小值為12sum(list1) #顯示列表變量list1的元素之和為190type(list1) #顯示列表變量list1的數(shù)據(jù)類型為<class'list'>數(shù)學(xué)運(yùn)算練習(xí)任務(wù):使用內(nèi)置函數(shù)和math模塊中的函數(shù),計(jì)算并顯示各變量的值。(1)x=(23+5×6)//7(2)y=|sin(π/6)+e2|÷3?。?)z=34+log10100參考答案:x=(2**3+5*6)//7x #5y=abs(math.sin(math.pi/6)+math.exp(2))/math.fabs(3)y #2.6296853663102167z=pow(3,4)+math.log10(100)z #83.0進(jìn)制轉(zhuǎn)換實(shí)驗(yàn)65ASCII字符參考答案:print(bin(15)) #'0b1000001'print(oct(15)) #'0o101'print(hex(15)) #'0x41'print(chr(65)) #'A'turtle模塊繪制圖形任務(wù):繪制一個(gè)半徑為50像素的圓和一個(gè)內(nèi)切等邊三角形。繪制的圖形如圖2-1所示。圖2-1繪制圓和內(nèi)切等邊三角形參考答案:新建py腳本文件,鍵入如下程序代碼,保存程序后運(yùn)行。importturtleturtle.speed(3) #設(shè)置畫筆繪制速度#繪制外接圓radius=150turtle.penup()turtle.goto(0,-radius)turtle.pendown()turtle.color("blue")turtle.circle(radius)#繪制內(nèi)切等邊三角形turtle.penup()turtle.goto(0radius) #從圓頂點(diǎn)開(kāi)始turtle.pendown()turtle.color("red")#等邊三角形的每個(gè)頂點(diǎn)間隔120度turtle.right(120) #向右轉(zhuǎn)角120度turtle.forward(radius*2*0.866) #邊長(zhǎng)計(jì)算公式turtle.left(120) #向左轉(zhuǎn)角120度turtle.forward(radius*2*0.866)turtle.left(120) #120度turtle.forward(radius*2*0.866)#隱藏畫筆turtle.hideturtle()內(nèi)置模塊綜合應(yīng)用。任務(wù):創(chuàng)建一個(gè)海龜繪圖窗口,在窗口中繪制10個(gè)大小不等的圓,圓的半徑、輪廓顏52-2。圖2-2繪制隨機(jī)圓參考答案:importturtleimportmathimportrandomimporttime#設(shè)置窗口turtle.setup(800,600)turtle.bgcolor("lightblue") #背景顏色為淺藍(lán)色colors=["red","blue","green","orange","purple","pink","yellow"]#設(shè)置顏色列表#創(chuàng)建海龜對(duì)象turtle.speed(3) #設(shè)置畫筆繪制速度turtle.pensize(2)#設(shè)置畫筆寬度f(wàn)or_inrange(10):#運(yùn)行分10次turtle.penup()turtle.goto(random.randint(-300,300),random.randint(-200,200))#隨機(jī)設(shè)置圓的位置turtle.pendown()turtle.pencolor(random.choice(colors))#隨機(jī)設(shè)置圓的輪廓顏色turtle.fillcolor(random.choice(colors))#隨機(jī)設(shè)置圓的填充顏色turtle.begin_fill()turtle.circle(random.randint(10,50))#隨機(jī)設(shè)置圓的半徑turtle.end_fill()time.sleep(2)#程序暫停2秒turtle.penup()turtle.goto(0,-200)turtle.color("orange")turtle.write(time.ctime(),align='center',font=('TimesNewRoman',40,'normal'))#顯示當(dāng)前時(shí)間turtle.hideturtle() #隱藏畫筆第三章數(shù)據(jù)輸入與輸出實(shí)驗(yàn)?zāi)康膇nput()print()函數(shù)應(yīng)用輸入輸出設(shè)計(jì)程序?qū)嶒?yàn)題目1.用戶信息收集任務(wù):輸入姓名和年齡,輸出"姓名:XXX,年齡:XX歲"參考答案:name=input("請(qǐng)輸入姓名:")age=input("請(qǐng)輸入年齡:")print(f"姓名:{name},年齡:{age}歲")2.格式化輸出練習(xí)任務(wù):使用三種不同方式(%格式化、format()、f-string)輸出圓周率參考答案:pi=3.1415926print("Pi:%.2f"%pi)print("Pi:{:.3f}".format(pi))print(f"Pi:{pi:.4f}")3.多值輸入處理任務(wù):一次性輸入三個(gè)數(shù)字,計(jì)算乘積參考答案:nums=input("請(qǐng)輸入三個(gè)數(shù)字(用空格分隔):").split()product=1forninnums:product*=float(n)print("乘積:",product).4.數(shù)學(xué)計(jì)算器任務(wù):實(shí)現(xiàn)加法計(jì)算器,用戶輸入兩個(gè)數(shù)字后輸出結(jié)果參考答案:a=float(input("第一個(gè)數(shù)字:"))b=float(input("第二個(gè)數(shù)字:"))print(f"結(jié)果:{a+b:.2f}")print(f"結(jié)果:{a-b:.2f}")print(f"結(jié)果:{a*b:.2f}")print(f"結(jié)果:{a/b:.2f}")5.密碼驗(yàn)證3次則鎖定參考答案:password="admin123"attempts=0whileattempts<3:user_input=input("請(qǐng)輸入密碼:")ifuser_input==password:print("登錄成功!")breakelse:attempts+=1print(f"密碼錯(cuò)誤,剩余嘗試次數(shù):{3attempts}")else:print("賬戶已鎖定!")溫度轉(zhuǎn)換任務(wù):實(shí)現(xiàn)攝氏度與華氏度的互轉(zhuǎn),用戶輸入"35C"或"95F"格式時(shí)自動(dòng)轉(zhuǎn)換參考答案:tempinput("輸入溫度(32C89F):").upper()iftemp.endswith("C"):f=float(temp[:-1])*9/5+32print(f"{temp}={f:.1f}F")eliftemp.endswith("F"):c=(float(temp[:-1])-32)*5/9print(f"{temp}={c:.1f}C")else:print("輸入格式錯(cuò)誤")生成購(gòu)物清單任務(wù):用戶連續(xù)輸入商品名稱和價(jià)格,輸入"done"時(shí)輸出總價(jià)和購(gòu)物清單參考答案:total=0items=[]name=input("商品名稱(輸入done結(jié)束):")ifname.lower()=="done":breakprice=float(input("價(jià)格:"))items.append(f"{name:10}¥{price:.2f}")total+=priceprint("\n購(gòu)物清單:")print("\n".join(items))print(f"總價(jià):¥{total:.2f}")8.彩色菜單系統(tǒng)任務(wù):創(chuàng)建帶顏色選擇的終端菜單(使用ANSI轉(zhuǎn)義碼)參考答案:menu="""\033[33m1.開(kāi)始游戲\033[32m2.加載存檔\033[31m3.退出\033[0m"""print(menu)choice=input("請(qǐng)輸入選項(xiàng):")print(f"你選擇了選項(xiàng){choice}")第四章程序控制結(jié)構(gòu)實(shí)驗(yàn)?zāi)康恼莆粘绦蚩刂频幕窘Y(jié)構(gòu),包括選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。Python選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)編寫程序,解決簡(jiǎn)單應(yīng)用問(wèn)題。實(shí)驗(yàn)題目成績(jī)等級(jí)判斷任務(wù):編寫一個(gè)程序,輸入成績(jī)并給出對(duì)應(yīng)的等級(jí),90A,80分到89分給出B,70分到79分給出C,其他分?jǐn)?shù)給出D。參考答案:score=float(input("請(qǐng)輸入成績(jī):"))ifscore>=90:print("A")elif80<=score<90:print("B")elif70<=score<80:print("C")else:print("D")閏年判斷任務(wù):輸入年份,判斷是否為閏年(4100整除,或400整除)參考答案:year=int(input("輸入年份:"))if(year%4==0andyear%100!=0)or(year%400==0):print("閏年")else:print("非閏年")奇偶判斷任務(wù):輸入整數(shù),用三元表達(dá)式輸出“奇數(shù)”或“偶數(shù)”參考答案:num=int(input("輸入整數(shù):"))if num%2!=0:result奇數(shù)"else:result="偶數(shù)"print(result)三角形類型判斷任務(wù):輸入三邊長(zhǎng)度,判斷是否能構(gòu)成三角形及類型(等邊、等腰、普通)參考答案:a,b,c=map(int,input("輸入三邊長(zhǎng)度:").split())ifa+b>canda+c>bandb+c>a:ifa==b==c:print("等邊三角形")elifa==bora==corb==c:print("等腰三角形")else:print("普通三角形")else:print("不能構(gòu)成三角形")1-100奇數(shù)和1100所有奇數(shù)的和參考答案:sum=0i=1whilei<=100:sum+=ii+=2print(sum) #2500跳過(guò)偶數(shù)1-20continue跳過(guò)參考答案:foriinrange(1,21):ifi%2==0:continueprint(i,end="")輸出金字塔圖案任務(wù):輸入層數(shù),用循環(huán)嵌套輸出由星號(hào)組成的金字塔圖案參考答案:n=5foriinrange(n):print(""*(n-i-1)+"*"*(2*i+1))輸出菱形圖案n2n+1層的菱形星號(hào)圖案參考答案:n=3foriinrange(-n,n+1):k=abs(i)print(""*k+"*"*(2*(n-k)+1))猜數(shù)字游戲1100之間的整數(shù),并給出相應(yīng)的提示,例如“猜大了”,“猜小了”,“猜對(duì)了”參考答案:importrandomtarget=random.randint(1,100)whileTrue:guess=int(input("猜數(shù)字(1-100):"))ifguess==target:print("猜對(duì)了!")breakifguess>target:print("猜大了")else:print("猜小了")尋找水仙花數(shù)任務(wù):輸出100-999中的所有水仙花數(shù)(各位立方和等于自身)參考答案:fornuminrange(100,1000):a=num//100b=(num//10)%10c=num%10if a**3+b**3+c**3==num:print(num)密碼驗(yàn)證系統(tǒng)任務(wù):循環(huán)輸入密碼,最多3次機(jī)會(huì),正確則退出參考答案:correct_pwd="123456"forxinrange(3):pwd=input("輸入密碼:")ifpwd==correct_pwd:print("登錄成功")breakelse:print("賬戶鎖定")統(tǒng)計(jì)字符類型任務(wù):輸入字符串,統(tǒng)計(jì)字母、數(shù)字、其他字符的數(shù)量參考答案:s=input("輸入字符串:")letters=digits=others=0forcins:ifc.isalpha():letters+=1elifc.isdigit():digits+=1else:others+=1print(f"字母:{letters},數(shù)字:{digits},其他:{others}")打印九九乘法表任務(wù):編寫一個(gè)程序,輸出九九乘法表。1×1=12×1=2 2×2=43×1=3 3×2=6 3×3=94×1=4 4×2=8 4×3=124×4=165×1=5 5×2=105×3=155×4=205×5=256×1=6 6×2=126×3=186×4=246×5=306×6=367×1=7 7×2=147×3=217×4=287×5=357×6=427×7=498×1=8 8×2=168×3=248×4=328×5=408×6=488×7=568×8=649×1=9 9×2=189×3=279×4=369×5=459×6=549×7=639×8=729×9=81參考答案:foriinrange(1,10):forjinrange(1,i+1):print(f"{i}×{j}={i*j}",end="\t")print()#九九乘法表---左下三角forrowinrange(1,10):forcolinrange(1,row+1):print("{}*{}={}\t".format(col,row,row*col),end="")print()#九九乘法表---右上三角forrowinrange(1,10):forcolinrange(row,10):print("{}*{}={}\t".format(row,col,row*col),end="")print(end="\n")print(end="\t"*row)#九九乘法表---左上三角forrowinrange(1,10):forcolinrange(row,10):print("{}*{}={}\t".format(row,col,row*col),end="")print(end="\n")九九乘法表---右下三角forrowinrange(1,10):print(end="\t"*(10-row))forcolinrange(1,row+1):print("{}*{}={}\t".format(row,col,row*col),end="")print(end="\n")質(zhì)數(shù)判斷程序任務(wù):編寫一個(gè)程序,輸入一個(gè)數(shù)字并判斷是否為質(zhì)數(shù)。參考答案:num=int(input("輸入數(shù)字:"))is_prime=Trueforiinrange(2,int(num**0.5)+1):ifnum%i==0:is_prime=Falsebreakprint("是質(zhì)數(shù)"ifis_primeelse"不是質(zhì)數(shù)")斐波那契數(shù)列生成nn的數(shù)值由用戶指定。參考答案:n=int(input("輸入項(xiàng)數(shù):"))a,b=0,1for_inrange(n):print(a,end='')a,b=b,a+b第五章字符串與正則表達(dá)式實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)題目"abcdef"反轉(zhuǎn)為"fedcba"。參考答案一:s="abcdef"reversed_s=s[::-1]print(reversed_s) #輸出fedcba參考答案二:original_str="world"result=""foriinoriginal_str:result=i+resultprint(result) #輸出dlrow編寫程序,輸入一串?dāng)?shù)字和字母混合的數(shù)據(jù),統(tǒng)計(jì)其中數(shù)字和字母的個(gè)數(shù),數(shù)字個(gè)數(shù):3,字母?jìng)€(gè)數(shù):4"。參考答案:ns=input("請(qǐng)輸入一串?dāng)?shù)據(jù):")dnum,dchr=0,0foriinns:ifi.isdigit():dnum=dnum+1elifi.isalpha():dchr=dchr+1else:passprint('數(shù)字個(gè)數(shù):{},字母?jìng)€(gè)數(shù):{}'.format(dnum,dchr))參考答案:s1=input("s1輸入:")s2=input("s2輸入:")foriins1:ifiins2:s1=s1.replace(i,"")print(s1)。參考答案:n=input()sum=""foriinn:if"a"<=i<="z":sum+=i.upper()elif"A"<=i<="Z":sum+=i.lower()print(sum)編寫程序,根據(jù)中文逗號(hào)和中文句號(hào)對(duì)輸入的字符串進(jìn)行分行顯示。參考答案:text="玉不琢,不成器。人不學(xué),不知義。"#替換所有分隔符為帶換行的分隔符separators=[',','。']foriinseparators:text=text.replace(i,i+'\n')print(text)編寫程序,輸入一個(gè)日期格式如"2025/05/05",將輸入的日期格式轉(zhuǎn)換為"2025年-05月-05日"輸出。參考答案:input_str=input("請(qǐng)輸入日期,格式為yyyy/mm/dd:")year,month,day=input_str.split("/")output_str=f"{year}年-{month}月-{day}日"print(output_str)7. "2025-05-05""05/05/2025"。參考答案:importredate="2025-05-05"new_date=re.sub(r'(\d{4})-(\d{2})-(\d{2})',r'\2/\3/\1',date)print(new_date)編寫程序,通過(guò)正則表達(dá)式模塊,實(shí)現(xiàn)以下要求:(1)驗(yàn)證電子郵件地址參考答案:importreemail=input("請(qǐng)輸入電子郵件地址:")pattern=r'^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'#^ 字符串開(kāi)始#[a-zA-Z0-9.%+-]+用戶名部分(允許字母/數(shù)字/.%+-符號(hào)),至少1個(gè)字符#@ 必須的@符號(hào)a-zA-Z0-9.-]+ 域名主體(允許字母/數(shù)字/.-符號(hào)),如"gmail"\. 必須的.分隔符(轉(zhuǎn)義)a-zA-Z]{2,} 頂級(jí)域名(2個(gè)字母),如"com"/"org"#$ 字符串結(jié)束print(bool(re.match(pattern,email)))#"test@", #有效#"name.last@", #有效#"invalid@.com", #無(wú)效(缺少域名主體)#"no_at_", #無(wú)效(缺少@)#"user@domain", #無(wú)效(缺少頂級(jí)域名)#"user@-" #無(wú)效(域名以連字符開(kāi)頭)(2)在句子中尋找重復(fù)的單詞參考答案:importresentence="Thisisisatesttestsentence.Pleasecheckcheckthisthis."#r'\b(\w+)(\s+\1)+\b'匹配連續(xù)重復(fù)的單詞\b表示單詞邊界,(\w+)捕獲單詞,(\s+\1)+匹配至少一次重復(fù)(含空格)patternr'\b(\w+)(\s+\1)+\b' #匹配連續(xù)重復(fù)單詞的模式flags=re.IGNORECASE|#忽略大小寫,允許.匹配換行符#查找所有重復(fù)單詞(返回包含元組的列表)raw_matches=re.findall(pattern,sentenceflags) #獲取原始匹配結(jié)果#提取并處理匹配結(jié)果(通過(guò)集合去重)#轉(zhuǎn)換為小寫后去重duplicates=list({match[0].lower()formatchinraw_matches})print("重復(fù)單詞:",duplicates) #結(jié)果:['is','test','check','this'](3)驗(yàn)證車牌號(hào)參考答案:1.普通車牌:漢字(1位字母(1位5位字母數(shù)字(7)2.新能源車牌:漢字(1位字母(1位DF](1位5位字母數(shù)字(總長(zhǎng)度8)importreplate_pattern=r'''^ #字符串起始[\u4e00-\u9fa5] #省份漢字(Unicode范圍)[A-Z] #發(fā)牌機(jī)關(guān)字母(?: #非捕獲組(普通/新能源兩種格式)[0-9A-Z]{5} #普通車牌:5位字母數(shù)字(7)| #或[DF][0-9A-Z]{5} #新能源車牌:D/F開(kāi)頭+5位字母數(shù)字(8)) #組結(jié)束$ #字符串結(jié)尾'''#測(cè)試樣例集(含有效/無(wú)效案例)test_samples=["京A12345", #有效普通"滬BABCDE", #有效普通(全字母)"粵AD12345", #有效新能源"津FD1234", #無(wú)效(新能源長(zhǎng)度不足)"京AF1234H", #無(wú)效(普通長(zhǎng)度超限)"浙D12345", #有效普通(發(fā)牌機(jī)關(guān)D)"魯BD12345", #有效新能源"渝XYZ1234" #無(wú)效(格式錯(cuò)誤)]#使用re.VERBOSE模式支持注釋compiled_pattern=pile(plate_pattern,re.VERBOSE)#批量驗(yàn)證并打印結(jié)果foriintest_samples:is_valid=bool(compiled_pattern.fullmatch(i))status="?有效"ifis_validelse"?無(wú)效"print(f"{i.ljust(10)}=>{status}")調(diào)用正則表達(dá)式模塊,進(jìn)行密碼強(qiáng)度驗(yàn)證,要求:密碼需包含大小寫字母、數(shù)字且長(zhǎng)度≥8,若輸入的密碼符合要求,輸出輸入的密碼不符合要求,輸出"False"。參考答案:importrepassword=input("請(qǐng)輸入密碼:")pattern=r'^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$'print(bool(re.fullmatch(pattern,password)))參考答案:importretext="玉不琢,不成器。人不學(xué),不知義。"#匹配中文逗號(hào)和句號(hào)pattern=r'[,。]'#re.split進(jìn)行分割result=re.split(pattern,text)forlineinresult:print(line)編寫程序,用正則表達(dá)式找到所給字符串中所有的數(shù)字。參考答案:importrecontent="""詐騙報(bào)警:12321120,交通報(bào)警:122"""pattern=pile(r'\d+')matcher=pattern.search(content)whilematcher:print(matcher.group())matcher=pattern.search(content,matcher.end())第六章組合數(shù)據(jù)類型實(shí)驗(yàn)?zāi)康恼莆樟斜淼膭?chuàng)建、訪問(wèn)和切片,掌握列表元素的增加、刪除、修改、索引、統(tǒng)計(jì)、排序和反序等操作。掌握元組的創(chuàng)建,掌握元組元素的訪問(wèn)和刪除等操作。掌握字典的創(chuàng)建,掌握字典元素的訪問(wèn)、修改、增加和刪除等操作。掌握集合的創(chuàng)建,掌握集合元素的增加和刪除,以及集合的運(yùn)算等操作。實(shí)驗(yàn)題目1. list_1=[7,8,9,10]list_2=[3,4],請(qǐng)將這兩個(gè)列表合并位一個(gè)列表,并將合并后的列表中的元素按降序排列。參考答案:list_1=[7,8,9,10]list_2=[3,4]merged_list=list_1+list_2merged_list.sort(reverse=True)print(merged_list)2. 編寫程序,score77,79,70],[99,93,93],[80,85,89],[79,77,74],[85,86,94]],score列表里有5位同學(xué)的比賽成績(jī),每組成績(jī)包含3項(xiàng),分別為a1,a2和a3oal=a1*0.5+a2*0.3+a3*0.2。參考答案:score=[[77,79,70],[99,93,93],[80,85,89],[79,77,74],[85,86,94]]foriinrange(len(score)):final_score=score[i][0]*0.5+score[i][1]*0.3+score[i][2]*0.2print('the{}finalscoreis{}'.format(i+1,int(final_score)))list101~100list中的奇數(shù)變成它的平方,偶數(shù)變成它的立方。參考答案:importrandomimportmathlist1=[random.randint(1,100)for_inrange(10)]print(list1)foriinrange(0,10):iflist1[i]%2==0:list1[i]=list1[i]**3else:list1[i]=list1[i]**2print(list1)201-50ls列表中篩選符合ls1ls2。參考答案:importrandomimportmathls=[random.randint(1,50)for_inrange(20)]ls1=[]ls2=[]fornuminls:ifnum>1andall(num%i!=0foriinrange(2,int(math.sqrt(num))+1)):ls1.append(num)else:ls2.append(num)print("原始列表:",ls)print("素?cái)?shù)列表:",sorted(ls1))print("非素?cái)?shù)列表:",sorted(ls2))5參考答案:#輸入5個(gè)學(xué)生成績(jī)并存儲(chǔ)到列表scores=[]foriinrange(5):whileTrue:try:

score=float(input(f"請(qǐng)輸入第{i+1}個(gè)學(xué)生的成績(jī):"))scores.append(score)breakexceptValueError:print("輸入錯(cuò)誤,請(qǐng)輸入有效數(shù)字!")#計(jì)算結(jié)果ifscores:total=sum(scores)average=total/len(scores)max_score=max(scores)min_score=min(scores)print("\n統(tǒng)計(jì)結(jié)果:")print(f"總分:{total}")print(f"平均分:{average:.2f}")print(f"最高分:{max_score}")print(f"最低分:{min_score}")else:print("未輸入任何有效成績(jī)")編寫程序,實(shí)現(xiàn)以下元組的需求:(1)student=("張三",2023001,("數(shù)學(xué)",90),("英語(yǔ)",85)),輸出張三的數(shù)學(xué)成績(jī)參考答案:student=("張三",2023001,("數(shù)學(xué)",90),("英語(yǔ)",85))#訪問(wèn)元組元素(索引從0開(kāi)始)namestudent[0] #獲取姓名math_scorestudent[2][1] #獲取數(shù)學(xué)成績(jī)print(f"{name}的數(shù)學(xué)成績(jī):{math_score}") #輸出:張三的數(shù)學(xué)成績(jī):90(2)(年,月,日,時(shí),分,秒?yún)⒖即鸢福?創(chuàng)建時(shí)間戳元組(年,月,日,時(shí),分,秒)timestamp=(2025,10,15,14,30,45)#切片獲取時(shí)間部分time_parttimestamp[3:6] #截取時(shí)、分、秒print("當(dāng)前時(shí)間:",":".join(map(str,time_part))) #輸出:當(dāng)前時(shí)間:14:30:45201-10tuple1,統(tǒng)計(jì)每tuple1中出現(xiàn)的次數(shù)。參考答案:importrandomfromcollectionsimportCounterrandom_tuple=tuple(random.randint(1,10)for_inrange(20))count_result=Counter(random_tuple)print("生成的元組:",random_tuple)foriinrange(1,11):print(f"數(shù)字{i}出現(xiàn)次數(shù):{count_result.get(i,0)}")members張三':['',6500],'李四':['后勤部',4900],'王五':['市場(chǎng)部',6100],'趙六':['組織部',8500]},將字典中的每一位員6500元,部門是開(kāi)發(fā)部。并統(tǒng)計(jì)工資最高的部門是哪個(gè)部分,該部門工資是多少。參考答案:members={'張三':['開(kāi)發(fā)部',6500],'李四':['后勤部',4900],'王五':['市場(chǎng)部',6100],'趙六':['組織部',8500]}sal_dep={}forkeyinmembers:print('{}的工資是:{},部門是{}'.format(key,members[key][1],members[key][0]))sal_dep[members[key][1]]=members[key][0]max_val=max(sal_dep)max_name=sal_dep[max_val]print('工資最高的部門是:{},該部門工資是:{}'.format(max_name,max_val))編寫程序,有一學(xué)生列表為 studs=[{'sid':'103','Chinese':90},{'sid':'101','Chinese':80},{'sid':'102','Chinese':70}],將列表中的數(shù)據(jù)內(nèi)容提取出來(lái)在屏幕上按學(xué)號(hào)從小到大的順序顯示每個(gè)學(xué)號(hào)對(duì)應(yīng)課程的分?jǐn)?shù)。參考答案:#studs列表中的元素是字典studs=[{'sid':'103','Chinese':90},{'sid':'101','Chinese':80},{'sid':'102','Chinese':70}]scores={}forstudinstuds:svstud.items() #sv被賦值為二維列表,形如[('sid','103'),('Chinese',90)]foritinsv:ifit[0]=='sid': #第一次訪問(wèn):it=('sid','103')k=it[1] #k='103'else: #第二次訪問(wèn):it=('Chinese',90)it[1]=90scores[k] =it[1] #scores["103"]=90solist(scores.items()) #形如:[('103':90),('101':80),...]so.sort(keylambdax:x[0],reverseFalse按學(xué)號(hào)進(jìn)行排序forlinso:print('{}:{}'.format(l[0],l[1])) #遍歷輸出排序后結(jié)果stu={'Alice':101,'John':102,'Mike':103}的鍵信息和值信息進(jìn)行互換,并按新的鍵信息降序輸出新字典。參考答案:stu={'Alice':101,'John':102,'Mike':103}sorted_dict=dict(sorted(((v,k)fork,vinstu.items()),reverse=True))print(sorted_dict)11.編寫程序,已知列表list_1=[1,2,1,2,3,2,5,6,7,5,9],請(qǐng)刪除列表中的重復(fù)數(shù)據(jù)后輸出新列表。參考答案:list_1=[1,2,1,2,3,2,5,6,7,5,9]unique_list=list(set(list_1))print(unique_list)第七章函數(shù)一.實(shí)驗(yàn)?zāi)康恼莆蘸瘮?shù)的定義與調(diào)用,包括匿名函數(shù)、嵌套函數(shù)。掌握函數(shù)參數(shù)的兩種傳遞方法和四種傳遞方式。理解遞歸函數(shù)的原理,并簡(jiǎn)單應(yīng)用掌握局部變量與全局變量的作用及其應(yīng)用理解模塊與包的創(chuàng)建與應(yīng)用二.實(shí)驗(yàn)案例一般函數(shù)的定義與調(diào)用【案例1】:編寫程序調(diào)用自定義函數(shù),檢查任意一個(gè)非負(fù)整數(shù)是否為質(zhì)數(shù)。參考代碼如下:defis_prime(num):ifnum<=1:returnFalseforiinrange(2,int(num**0.5)+1):ifnum%i==0:returnFalsereturnTrueprint(is_prime(11))print(is_prime(4))匿名函數(shù)的定義與調(diào)用2例如,輸入:舞蹈羽毛球武術(shù)繪畫,要求輸出格式如下,其中冒號(hào)為英文冒號(hào):羽毛球:4武術(shù):3舞蹈:2繪畫:1參考代碼如下:names=input("請(qǐng)輸入社團(tuán)名稱,社團(tuán)名稱之間用空格間隔(回車結(jié)束輸入):")t=names.split()d={}foriinrange(len(t)):d[t[i]]=d.get(t[i],0)+1ls=sorted(d.items(),key=lambdax:x[1],reverse=True)forjinrange(len(ls)):hy,num=ls[j]print("{}:{}".format(hy,num))提示:匿名函數(shù)中x為形參,x[1]為表達(dá)式,下表0表示按鍵排序,1表示按值排序.函數(shù)的嵌套定義與調(diào)用3】:編寫程序及嵌套自定義函數(shù),求圓的周長(zhǎng)或面積。r01參考代碼如下:frommathimportpir=eval(input("請(qǐng)輸入圓的半徑(回車結(jié)束輸入):"))mode=eval(input("請(qǐng)輸入圓的周長(zhǎng)選項(xiàng)0或面積選項(xiàng)1(回車結(jié)束輸入):"))defcircle(r,mode): #函數(shù)定義defperimiter(r): #函數(shù)嵌套定義return2*pi*rdefarea(r):returnpi*(r**2) #函數(shù)嵌套定義ifmode==0:returnperimiter(r)elifmode==1:returnarea(r)value=circle(r,mode) #函數(shù)調(diào)用print(value)函數(shù)參數(shù)的值傳遞方法【案例4】:編寫程序調(diào)用自定義函數(shù),求s=x+xx+xxx+xxxx+…+x…x(n個(gè)x)的值,其中x是一個(gè)10以內(nèi)的自然數(shù)。例如,5+55+555+5555+55555。參考代碼如下:deff(x,n):x=str(x) x轉(zhuǎn)換成字符s=sum(eval(x*i)foriinrange(1,n+1)) #x1n次并轉(zhuǎn)換成數(shù)值求和returnsx=int(input("輸入x的值:"))n=int(input("輸入n的值:"))s=f(x,n)print(s)函數(shù)參數(shù)的地址傳遞方法。【案例5】:編寫程序調(diào)用自定義函數(shù),實(shí)現(xiàn)更新字典。例如,將一個(gè)字典傳遞給一個(gè)函數(shù)時(shí),在函數(shù)內(nèi)部修改字典,函數(shù)外部原字典也會(huì)被修改。參考代碼如下:defupdate_dict(in_dct):in_dct['new_key']='new_value'print("函數(shù)內(nèi)部字典的ID:",id(in_dct))out_dict={'key':'value'}update_dict(out_dict)print(out_dict)print("函數(shù)外部字典的ID:",id(out_dict))函數(shù)位置參數(shù)傳遞方式【案例6】:編寫程序,調(diào)用自定義函數(shù)實(shí)現(xiàn)不同數(shù)據(jù)類型元素?cái)?shù)量之和。例如,列表:[3,2,4],字典:{'x':10,'y':20},字符串:'abc',輸出8參考代碼如下:defprocess_data(data_list,data_dict,data_str):print("List:",data_list)print("Dict:",data_dict)print("string:",data_str)sum=len(data_list)+len(data_dict)+len(data_str)returnsumresult=process_data([3,2,4],{'x':10,'y':20},'abc')print("不同數(shù)據(jù)類型元素?cái)?shù)量之和:",result)默認(rèn)值參數(shù)傳遞方式7例如,函數(shù)實(shí)參為:"張三"函數(shù)形參:name,Tel,six='male',city="Ningxia"參考代碼如下:defenroll(name,Tel,six='male',city="Ningxia"):print("name:",name)print("Tel: ",Tel)print("six: ",six)print("city:",city)print("默認(rèn)值參數(shù)輸出:")enroll("張三"print("\n")print("指定參數(shù)輸出:")enroll("張三""female","Shanghai")8.關(guān)鍵字參數(shù)傳遞方式【案例8】:編寫程序調(diào)用自定義函數(shù),利用關(guān)鍵字參數(shù)傳遞方式模擬數(shù)據(jù)庫(kù)連接配置。例如,實(shí)參為:host='',database='production',password='888888'hostport=5432user='adminpassword='secretdatabase='default'toadmin@:5432/production參考代碼如下:defcreate_connection(host,port=5432,user='admin',password='111111',database='default'):print(f"Connectingto{user}@{host}:{port}/{database}")print('password:',password)create_connection(host='',database='production',password='888888')9.不定長(zhǎng)參數(shù)傳遞方式9(解包(解包傳遞。例如,實(shí)參為1,2,3和name="Alice",age=30參考代碼如下:defcombined_args(*args,**kwargs):print("Positionalarguments:",args)print("Keywordarguments:")forkey,valueinkwargs.items():print(f"{key}:{value}")#函數(shù)調(diào)用combined_args(1,2,3,name="Alice",age=30)遞歸函數(shù)100~5入棧與出棧的過(guò)程。543210012345參考代碼如下:defdigui(num):print("入棧:",num)ifnum>0:digui(num-1)else:print("="*20)print("出棧:",num)digui(5)局部變量11total來(lái)累加列表中的元素并返回。L=[6274]total19參考代碼如下:defsum_list(numbers,total=0):fornumberinnumbers:totalnumber #局部變量totalreturntotalL=[6,2,7,4]print('total=',sum_list(L))全局變量12】:定義全局變量,編寫程序調(diào)用自定義函數(shù)修改全局變量的值。global_value1015。參考代碼如下:global_value=10defmodify_global():globalglobal_value #global_value為全局變量global_value5 #修改全局變量的值print("Globalvalueinsidefunction:",global_value)#定義顯示全局變量的值defdisplay_global():print("Globalvalueoutsidefunction:",global_value)#函數(shù)調(diào)用display_global()modify_global() #調(diào)用函數(shù)修改全局變量的值display_global() #再次顯示全局變量的值以驗(yàn)證修改13.自定義模塊與應(yīng)用【案例13】:在目錄D:\Python下創(chuàng)建一個(gè)名為math_module.py的自定義模塊,其中包含加、減、乘、除的數(shù)學(xué)函數(shù),接著在程序?qū)朐撃K并給定參數(shù)使用其中的函數(shù)。math_module.py,參考代碼如下:(D:\Python中)defadd(x,y):returnx+ydefsubtract(x,y):returnx-ydefmultiply(x,y):returnx*ydefdivide(x,y):ify==0:return"Error:Divisionbyzero"returnx/yD:\Pythonmath_module.py模塊并使用其中的函數(shù),參考代碼如下:importmath_module#使用自定義模塊中的函數(shù)result_add=math_module.add(10,5)result_subtract=math_module.subtract(10,5)result_multiply=math_module.multiply(10,5)result_divide=math_module.divide(10,5)#輸出語(yǔ)句print("Addition:",result_add)print("Subtraction:",result_subtract)print("Multiplication:",result_multiply)print("Division:",result_divide)第八章文件一.實(shí)驗(yàn)?zāi)康?.掌握文件的打開(kāi)與關(guān)閉操作方法。2.掌握文本文件的寫入、讀取操作方法。3.掌握二進(jìn)制文件的寫入、讀取操作方法。4.掌握CSV文件的寫入、讀取操作方法。5.理解目錄與文件的常用操作方法。二.實(shí)驗(yàn)案例文件的打開(kāi)與關(guān)閉1D:\Pythonxifengli.txtclose()方法關(guān)閉文件。例如,自創(chuàng)建文件xifengli.txt,內(nèi)容如下。雄關(guān)漫道真如鐵,而今邁步從頭越。從頭越,蒼山如海,殘陽(yáng)如血。參考代碼如下:file_path='xifengli.txt'file=open(file_path,'r')try:file_content=file.read()print(file_content)finally:file.close()21xifengli.txtwith語(yǔ)句以讀寫方式打開(kāi)文件,以便于自動(dòng)關(guān)閉文件,接著測(cè)試文件是否已被關(guān)閉。參考代碼如下:file_path='xifengli.txt'withopen(file_path,'w+')asfile: #讀寫方式打開(kāi)文件pass #文件已經(jīng)被自動(dòng)關(guān)閉# 測(cè)試文件是否被自動(dòng)關(guān)閉iffile.closed:print('fileisclosed!')else:print('fileisopen.')文本文件的寫入、讀取3D:\Pythonxifengli2.txt參考代碼如下:file_path='xifengli2.txt'#寫入文件withopen(file_path,'w')asfile:file.write("西風(fēng)烈,\n長(zhǎng)空雁叫霜晨月。\n霜晨月,\n馬蹄聲碎,\n喇叭聲咽。\n")#讀取文件withopen(file_path,'r')asfile:file_content=file.read()print(file_content)二進(jìn)制文件的寫入、讀取4gbkD:\Pythonvalues.dat中,如果該文件不存在,會(huì)自動(dòng)創(chuàng)建文件。寫入內(nèi)容為:愛(ài)國(guó),友善,敬業(yè),誠(chéng)信;自由,參考代碼如下:s="愛(ài)國(guó),友善,敬業(yè),誠(chéng)信;自由,法制,公正,平等;富強(qiáng),民主,文明,和諧。"fileName="D:\\Python\\values.dat"#寫入二進(jìn)制文件withopen(fileName,"wb")asf: #wb方式打開(kāi)二進(jìn)制文件f.write(s.encode("gbk")) #gbk編碼方式寫入二進(jìn)制文件#讀取二進(jìn)制文件withopen(fileName,"rbasf: f.read()print(byte) #顯示字節(jié)序列print("解碼后:",byte.decode("GBK")) #字節(jié)序列解碼顯示CSV文件的寫入、讀取5D:\Pythonexample1.csv文件中,如果該文件不存在,則自動(dòng)創(chuàng)建文件。寫入內(nèi)容為:'Name','Age','Occupation','JohnDoe',30,'Engineer','JaneSmith',25,'Designer'接著將該文件內(nèi)容輸出到屏幕。參考代碼如下:importcsvcsv_file_path='example1.csv'data=[['Name','Age','Occupation'],['JohnDoe',30,'Engineer'],['JaneSmith',25,'Designer']]#寫入CSV文件withopen(csv_file_path,'w',newline='')ascsvfile:csv_writer=csv.writer(csvfile)csv_writer.writerows(data)CSVwithopen('D:\\Python\\example1.csv','r',newline='')ascsvfile:frcsv.reader(csvfile) readerfrforlineinfr: frlst.append(line) 目錄與文件【案例6】:編寫程序,分別實(shí)現(xiàn)下面(1)和(2)兩個(gè)目錄操作過(guò)程。(1)使用os.path模塊中的exists函數(shù),檢查目錄D:\Python\folder是否存在?(2)分別使用os模塊中的mkdir函數(shù)和makedirs函數(shù),創(chuàng)建新目錄D:\Python\folder和D:\Python\folder\folder1makedirs函數(shù)用于創(chuàng)建多級(jí)目錄參考代碼如下:(1)檢查目錄是否存在importosimportos.pathdir_path="D:\\Python\\folder"ifos.path.exists(dir_path):print(f"{dir_path}exists.")else:print(f"{dir_path}doesnotexist.")(2)創(chuàng)建新目錄importos#創(chuàng)建單級(jí)目錄single_dir="D:\\Python\\folder"os.mkdir(single_dir)#創(chuàng)建多級(jí)目錄multi_dir="D:\\Python\\folder\\folder1"os.makedirs(multi_dir)【案例7】:編寫程序,分別實(shí)現(xiàn)下面(1)和(2)兩個(gè)目錄操作過(guò)程。。(1)使用os模塊中的getcwd函數(shù)獲取當(dāng)前工作目錄,接著使用listdir函數(shù)列出當(dāng)前目錄下的所有文件和目錄。2使用os模塊中的mdr函數(shù)刪除目錄DPthonfodeode2shul模塊中的meeD:\Python\folder\folder3rmtree函數(shù)用于刪除非空目錄及其內(nèi)容。參考代碼如下:(1)獲取當(dāng)前工作目錄及列出當(dāng)前目錄下的所有文件和目錄importos#獲取當(dāng)前工作目錄current_dir=os.getcwd()print(f"Currentdirectory:{current_dir}")#列出當(dāng)前目錄下的所有文件和目錄foriteminos.listdir(current_dir):print(item)(2)刪除錄importosimportshutil#刪除空目錄empty_dir="D:\\Python\\folder\\folder2"os.rmdir(empty_dir)#刪除非空目錄non_empty_dir="D:\\Python\\folder\\folder3"shutil.rmtree(non_empty_dir)【案例8】:編寫程序,使用shutil模塊中的copy函數(shù)將目錄D:\Python下的文件p8_1.txt拷貝到目錄D:\Python\folder下。os.pathisdirimportosimportos.pathimportshutilsource_path='D:\\Python\\p8_1.txt'destination_path='D:\\Python\\folder'#判斷目錄是否存在,如果不存在則創(chuàng)建該目錄ifnotos.path.isdir(destination_path):os.makedirs(destination_path)shutil.copy(source_path,destination_path)9oslistdirD:\Python中的所有文件,并renamep8_1.txtp9_1.txt。參考代碼如下:importos#列出目錄中的所有文件files=os.listdir(directory)print(files)#文件重命名old_file_name='p8_1.txt'new_file_name='p9_1.txt'os.rename(old_file_name,new_file_name)10os.pathisfileD:\Python\p9_1.txt是否osremove刪除該文件。參考代碼如下:importosimportos.path#指定要?jiǎng)h除的文件的目錄file_path='D:\\Python\\p9_1.txt'#檢查文件是否存在ifos.path.isfile(file_path):print(f'File{file_path}exists,proceedtodelete.')else:print(f'File{file_path}doesnotexist,skipdeletion.')#執(zhí)行刪除操作try:os.remove(file_path)print(f'File{file_path}deletedsuccessfully.')exceptOSErrorase:print(f'Erroroccurred:{e}')第九章深度學(xué)習(xí)應(yīng)用實(shí)例實(shí)驗(yàn)?zāi)康腣GG19VGG19Python(TensorFlow搭建深度學(xué)實(shí)驗(yàn)題目VGG19KerasVGG19模型為基礎(chǔ),對(duì)給定的真實(shí)世界圖像數(shù)進(jìn)行分類任務(wù)的訓(xùn)練和評(píng)估,分析模型的性能表現(xiàn)。參考答案:fromtensorflow.keras.datasetsimportcifar10fromtensorflow.keras.utilsimportto_categoricalfromtensorflow.keras.applicationsimportVGG19fromtensorflow.keras.modelsimportModelfromtensorflow.keras.layersimportDense,Flattenfromsklearn.model_selectionimporttrain_test_splitimporttensorflowastf#數(shù)據(jù)集準(zhǔn)備和預(yù)處理(x_train,y_train),(x_test,y_test)=cifar10.load_data()x_train,x_test=x_train/255.0,x_test/255.0y_train=to_categorical(y_train,10)y_test=to_categorical(y_test,10)x_train,x_val,y_train,y_val=train_test_split(x_train,y_train,test_size=0.2,random_state=42)#VGG19模型并進(jìn)行微調(diào)base_model=VGG19(weights='imagenet',include_top=False,input_shape=(32,32,3))base_model.trainable=Falsex=Flatten()(base_model.output)x=Dense(256,activation='relu')(x)predictions=Dense(10,activation='softmax')(x)model=Model(inputs=base_model.input,outputs=predictions)model.summary()#編譯模型pile(optimizer='adam',loss='categorical_crossentropy',metrics=

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論