資源簡介 1.雞兔同籠問題程序,p10print('這是一個有關雞兔同籠問題的程序')heads=float(input('請輸入總的頭數:'))legs=float(input('請輸入總的腳數:'))tu=int((legs-heads*2)/(4-2))print('兔子有:',tu,'頭')print('雞有:',int(heads-tu),'頭')input("運行完畢,請按回車鍵退出...")利用for循環及if語句解決雞兔同籠問題print('這是一個有關雞兔同籠問題的程序')heads=int(input('請輸入總的頭數:'))legs=int(input('請輸入總的腳數:'))for tu in range(1,heads-1):leg=4*tu+2*(heads-tu)if leg==legs:print('兔子有:',tu,'頭')print('雞有:',int(heads-tu),'頭')input("運行完畢,請按回車鍵退出...")百錢白雞問題程序p15 (注意縮進)#公雞價格g1,母雞價格g2,三小雞價格g3,公雞只數g4,母雞只數g5,(三小雞)只數g6money=100 #一共100文錢num=100 #一共100只雞g1=5 #公雞價格5文g2=3 #母雞價格3文g3=1 #3只小雞1文for g4 in range(1,money//g1+1): #公雞只數可能為1-20for g5 in range(1,money//g2+1): #母雞只數可能為1-33for g6 in range(1,money//g3+1): #(3小雞)只數可能為1-100money1=g1*g4+g2*g5+g6*g3num1=g4+g5+g6*3if money1==money and num1==num:print (g4,g5,g6*3)input("運行完畢,請按回車鍵退出...")最強大腦程序p22import random #添加隨機庫import timeimport osprint("你好,現在你有10秒鐘的時間記憶下列物品及其編號")things=["蘋果","香蕉","桔子","梨子","獼猴桃","柚子","猴魁","鐵觀音","毛筆","宣紙"]for i in range(10):print(i,":",things[i])#在屏幕上顯示編號及物品time.sleep(10) #延時10秒os.system("cls") #清屏幕,隱去編號及物品n=0 #記錄答對的題數,初值為0t2=random.sample(things,5)#隨機抽出5個物品for i in t2: #出5題ans=int(input(i + "的編號是:"))#輸入編號答題if i==things[ans]:n=n+1 #如果回答正確,答對的題數加1print("\n你一共答對了",n,"次")#屏幕顯示答對的題數input("\n按回車鍵結束程序")計算心率p29low=(220-16 -71)*0.6+71high=(220-16 -71)*0.8+71print(low,high)input("運行完畢,請按回車鍵退出...")輸入語句p30myname=input("請輸入myname:")print("hello",myname)6.計算心率p30age=float(input('請輸入age='))HRrest=float(input('請輸入HRrest='))low=(220-age-HRrest)*0.6+ HRresthigh=(220-age-HRrest)*0.8+HRrestprint("最適宜的心率是:",low,"~",high)input("運行完畢,請按回車鍵退出...")飛船升空問題p32v=float(input("請輸入速度(千米/秒):"))if v>=7.91:print("飛船成功飛行! ")else:print("飛船不能升空! ")input("運行完畢,請按回車鍵退出...")8.分性別計算心率p33age=float(input('請輸入age='))HRrest=float(input('請輸入HRrest='))gender=input("請輸入male or female :")if gender=='male':n=220else:n=210low=(n-age-HRrest)*0.6+HRresthigh=(n-age-HRrest)*0.8+HRrestprint('最適宜的心率是:',low,'~',high)input("運行完畢,請按回車鍵退出...")計算心率拓展練習p33age=float(input('請輸入age='))HRrest=float(input('請輸入HRrest='))EHR=float(input('請輸入EHR=')) #輸入運動后的心率gender=input("請輸入male or female :")if gender=='male':n=220else:n=210low=(n-age-HRrest)*0.6+HRresthigh=(n-age-HRrest)*0.8+HRrestif EHRprint('您的運動心率太低,請適當提高')elif low<=EHR<=high:print('您的運動心率正好,請保持')else:print('您的運動心率太高,請適當降低')input("運行完畢,請按回車鍵退出...")10.感冒指數拓展知識p33(多分支語句)num=int(input("請輸入感冒指數: "))if 0<=num<=6 :print("少發")elif 7<=num<=19:print("較易發")elif 20<=num<=30:print("易發")elif 31<=num<=61:print("極易發")else:print("指數值不正確")input("運行完畢,請按回車鍵退出...")11.計算利率不變情況下到期存款總額p34principal = 50000 #本金50000元rate=0.0325 #1年定期利率3.25%year=5 #存款期限money=principal*(1+rate)**year #計算存款總額print("5年以后存款總額:",money,"元") #輸出結果input("運行完畢,請按回車鍵退出...")12.列表的相關操作p35#創建列表,各元素用逗號隔開,放在方括號內,列表可以存儲混合類型的數據object=["石榴",1,"香蕉","橙子","梨子"]object[0]="蘋果" #修改列表第1個元素的值,注意列表索引號從0開始del object[1] #刪除列表第2個元素object.append("獼猴桃")#在列表尾部添加一個數據元素"獼猴桃"print (object) #輸出列表input("運行完畢,請按回車鍵退出...")打印”hello,word”程序p36for i in ["hello","world"]:print (i) #循環體input("運行完畢,請按回車鍵退出...")生成0-100的自然數程序p36for i in range(101): #想想為什么是101print (i)input("運行完畢,請按回車鍵退出...")15.利用for循環來解決利率不變情況下到期存款總額p37money = 50000 #本金50000元rate=[0.0325,0.03,0.03,0.02,0.0175] #利率列表for i in rate:money=round(money*(1+i),2) #計算每年存款額print("5年以后存款總額:",money,"元") #輸出結果input("運行完畢,請按回車鍵退出...")條件循環例子p37s=0while s<=30:s=s+10 #循環體print(s) #循環體input("運行完畢,請按回車鍵退出...")17.資金被全部取出程序p38money=100000 #本金100000year=0 #理財年數賦初值為0while money>=0:money=round(money*(1+0.037),2)-20000 #計算新的理財金額 year=year+1 #理財年數加1print(year,"年后資金被全部取出") #輸出結果input("運行完畢,請按回車鍵退出...")調試程序操作p38(了解即可)import pdbmoney=100000 #本金100000year=0 #理財年數賦初值為0while money>=0:money=round(money*(1+0.037),2)-20000 #計算新的理財金額 year=year+1 #理財年數加1pdb.set_trace()print(year,"年后資金被全部取出") #輸出結果input("運行完畢,請按回車鍵退出...")19.計算存款總額拓展練習第一題p39money=0 #初值為0for i in range(10):money=round((money+20000)/(1+0.037),2) #計算理財金額print("初期投資",money,"元") #輸出結果input("運行完畢,請按回車鍵退出...")20.計算存款總額拓展練習第二題p39money=100000 #本金100000year=0 #理財年數賦初值為0while money<200000:money=round(money*(1+0.0425),2) #計算新的理財金額 year=year+1 #理財年數加1print(year,"年后資金翻倍") #輸出結果input("運行完畢,請按回車鍵退出...")循環嵌套,九九乘法表p39for i in range(1,10):for j in range(1,i+1):print("{0:1}*{1:1}={2:2} ".format(j,i,j*i),end="") #按格式輸出print() #換行input("運行完畢,請按回車鍵退出...")求n的階乘程序p42def factorial(n):#求n!s=1for i in range(2,n+1):s=s*ireturn s#調用factorial函數total=factorial(4)print(total)input("運行完畢,請按回車鍵退出...")23.火柴棒拼數字游戲程序p43def match_num(num):f=[6,2,5,5,4,5,6,3,7,6] # 0-9的數字分別需要多少根小棒if num==0: # 火柴棒總數變量賦初值total=f[0]else:total=0 while (num>0):x=num % 10 # 取num除以10的余數,即num的個位數total=total+f[x] # 所需火柴棒數累加num=num//10 #num整除10,即去掉num的個位數return total #返回需要多少根火柴棒數#以下為主程序snum=6 # 6根火柴棒print("你可以拼出這些數字:")for i in range(112):if match_num(i)==snum: #如果i需要的火柴棒數等于現有火柴棒數print (i)input("運行完畢,請按回車鍵退出...")發布代碼p43-p44(了解即可)def match_num(num):f=[6,2,5,5,4,5,6,3,7,6] # 0-9的數字分別需要多少根小棒if num==0: # 火柴棒總數變量賦初值total=f[0]else:total=0 while (num>0):x=num % 10 # 取num除以10的余數,即num的個位數total=total+f[x] # 所需火柴棒數累加num=num//10 #num整除10,即去掉num的個位數return total #返回需要多少根火柴棒數from distutils.core import setupsetup(name ='mymodule', #參數一定要與mymodule.py文件名相同version ='1.0.0', #版本號py_modules =['mymodule'], #參數一定要與mymodule.py文件名相同author='yd', #作者author_email='zy@', #作者郵箱description ='計算一個數字需要多少根火柴棒', #代碼功能描述)25.導入模板并使用p44(了解即可)import mymodule #導入模塊snum=6 # 6根火柴棒print("你可以拼出這些數字:")for i in range(112):if mymodule.match_num(i)==snum: #調用模塊內match_num()函數print (i)input("運行完畢,請按回車鍵退出...")求生肖程序p45def shengxiao(year):#求生肖zodiac=["鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬"]index=(year-1972)%12return zodiac[index]#以下為主程序myyear=int(input("請輸入出生年份,輸入0結束:"))while myyear!=0:print("你的生肖是:",shengxiao(myyear))myyear=int(input("請輸入出生年份,輸入0結束:"))27.利用時間庫獲取計算機時間(拓展知識)p45-p46import timeprint(time.time()) #時間戳,即1970紀元后經過的浮點秒數time.sleep(2) #延時2秒print(time.asctime()) #格式化顯示時間input("運行完畢,請按回車鍵退出...")利用隨機庫產生一個隨機數p46import randomnum=random.randint(0,1) #產生一個[0, 1]之間的隨機整數print(num)input("運行完畢,請按回車鍵退出...")29.猜數字游戲程序p47import randomnum=random.randint(1,100)mynum=int(input('請輸入mynum='))n=1while not(num==mynum):n=n+1print("輸入不正確,請再次輸入")mynum=int(input('請輸入mynum='))print("你猜對了!","一共用了",n,"次")input("運行完畢,請按回車鍵退出...")十進制轉換為二進制程序p53b=''d=int(input('請輸入非負整數d='))while d>0:r=d%2b=str(r)+bd=d//2if b=='':b='0'print(b)print()input("運行完畢,請按回車鍵退出...")31.編制訂單數據處理程序p58listque=[] #定義列表listque存儲訂單x=0while(x!=4): #當x=!4時,執行循環print('1. 添加訂單')print('2. 發貨')print('3. 查看訂單列表')print('4. 退出')x=int(input("輸入你的選擇:")) #輸入選擇項if x==1:y=input("輸入訂單編號:") #輸入訂單編號listque.append(y) #在列表listque中添加訂單號elif x==2:if len(listque)==0: #如果訂單列表為空print("訂單列表為空")else:print("發貨單號:"+listque.pop(0))elif x==3:print("等待發貨:",listque) #查詢列表listque中的訂單號print()input("運行完畢,請按回車鍵退出...")32.求取快遞最有線路p63(了解即可)def dfs(v,vis):global min,s,r,minrvis.add(v)r=r+'-'+vif vis==set('HABC'):s=s+G[v]['H']r=r+'-'+'H'print('線路'+r[1:]+'用時:'+str(s))if smin=sminr=rs=s-G[v]['H']r=r[:-2]else:for u in G[v]:if u not in vis:s=s+G[v][u]dfs(u,vis)vis.remove(u)s=s-G[v][u]r=r[:-2]return minG={'H':{'A':2,'B':5,'C':10},'A':{'H':2,'B':4,'C':6},'B':{'H':5,'A':4,'C':4},'C':{'H':10,'A':6,'B':4}}min=999s=0r=''minr=''print("最短用時:"+str(dfs('H',set())))print("最短用時線路有:"+minr[1:])print()input("運行完畢,請按回車鍵退出...")更新旅行線路p68from tkinter import *root = Tk() #創建一個窗口root.title("添加線路") #設置窗口標題root.geometry('600x100') #設置窗口大小root.resizable(0,0) #禁止調整窗口大小var=StringVar() #定義StringVar()類型def intomap(): #Button按鈕激發函數c=open("旅行線路.txt",'a+') #以追加模式打開文件c.write(var.get()+"\n") #在文件末尾添加text里的內容c.close #關閉文件#在窗口上建一個文本標簽Label(root, text='請輸入線路', font=('Arial', 10)).pack()#在窗口上建一個文本框Entry(root,textvariable=var,width=550).pack()#在窗口上建一個Button按鈕Button(root, text="添加線路", command =intomap,relief="solid",width=10).pack()root.mainloop()34.破解密碼程序p81(了解即可)from tkinter import *import datetimeroot = Tk()root.geometry('300x100')def jiemi():d1=datetime.datetime.now() #獲取當前系統時間d1p=int(varin.get()) #獲取輸入文本框的數字密碼for i in range(p+1): #從0循環到正確密碼數值if i==p: #如果密碼相同d2=datetime.datetime.now() #獲取當前系統時間d2d=d2-d1 #取得時間差#在輸出文本框中顯示解密用時varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")frm = Frame(root)#leftfrm_L = Frame(frm)Label(frm_L, text='輸入密碼:', font=('Arial', 10)).pack()Label(frm_L, text='破解用時:', font=('Arial', 10)).pack()frm_L.pack(side=LEFT)#rightfrm_R = Frame(frm)varin=StringVar()varout=StringVar()Entry(frm_R, textvariable = varin).pack()Entry(frm_R, textvariable = varout).pack()frm_R.pack(side=RIGHT)frm.pack()Button(root, text="破解", command=jiemi,relief="solid",width=10).pack()root.mainloop()凱撒密碼程序p81from tkinter import * #導入tkinter模塊root = Tk() #建立一個窗口root.title("凱撒加密") #設置窗口標題root.geometry('300x200') #設置窗口大小def CaesarCipher(): #“加密”按鈕激發函數c=mingwen.get("0.0", "end")[:-1] #獲取mingwen對象的內容(明文)b=""miwen.delete("0.0", "end") #清空miwen對象的內容for i in range(len(c)): #獲取明文內容的每一個字符,并加密if 'a'<=c[i]<='w' or 'A'<=c[i]<='W': #判斷a~w或A~W間的字母b=b+chr(ord(c[i])+3) #生成密文elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': #判斷x~z或X~Z間的字母b=b+chr(ord(c[i])-23) #生成密文else:b=b+c[i] #字母以外的明文不變miwen.insert("0.0",b) #在miwen對象中顯示結果Label(root, text='請輸入明文', font=('Arial', 10)).pack()mingwen=Text(root,width=300,height=4)mingwen.pack()mingwen.focus_set() #獲得焦點Button(root, text="加密", command=CaesarCipher,relief="solid",width=10).pack()Label(root, text='凱撒密文', font=('Arial', 10)).pack()miwen=Text(root,width=300,height=4)miwen.pack()root.mainloop()拓展練習82def NewCaesar(m,n,t):z='';i=0while itmp=t[i].upper()if tmp in m:if ord(t[i])<=90:z+=n[m.find(tmp)]else:z+=n[m.find(tmp)].lower()else:z+=t[i]i+=1return zm='ABCDEFGHIJKLMNOPQRSTUVWXYZ'n='QWERTYUIOPASDFGHJKLZXCVBNM'a=input('請輸入明文a=')b=NewCaesar(m,n,a)print('對應的密文為:',b)c=NewCaesar(n,m,b)print('解密后明文為:',c)if a==c:print('加密解密成功!')else:print('加密解密失敗!')print()input("運行完畢,請按回車鍵退出...")37.人羊過河問題p83def InsertQ(x,i):global rearif x not in Q:rear+=1Q.append(x)F.append(front)L.append(i)def OutputR(front):global nif F[front]>0:OutputR(F[front])if L[front]>=0:n+=1print("第"+str(n)+"步:"+law[L[front]])def OK(M,W,S,V):return W!=S and S!=V or M==SQ=[0];F=[0];L=[-1]law=["移動人","移動人和狼","移動人和羊","移動人和菜"]front=0;rear=0while front<=rear:x=Q[front]if x==15:breakV=x%2S=x//2%2W=x//4%2M=x//8if OK(1-M,W,S,V):x=(1-M)*8+W*4+S*2+VInsertQ(x,0)if M==W and OK(1-M,1-W,S,V):x=(1-M)*8+(1-W)*4+S*2+VInsertQ(x,1)if M==S and OK(1-M,W,1-S,V):x=(1-M)*8+W*4+(1-S)*2+VInsertQ(x,2)if M==V and OK(1-M,W,S,1-V):x=(1-M)*8+W*4+S*2+(1-V)InsertQ(x,3)front+=1if x==15:print("人狼羊菜過河游戲成功!")n=0OutputR(front)else:print("無法完成任務!")print()input('運行結束,按回車鍵退出...')藥瓶污染問題p89d=int(input('請輸入每顆藥丸的標準重量:'))w=int(input('請輸入藥丸稱得的重量:'))x=w-10*dprint('被污染的藥瓶序號是:',x)input("運行完畢,請按回車鍵退出...")39.誰是冠軍程序p91champion=['A','B','C','D'] #設置選手列表for i in champion: #循環讀取選手編號cond=(i!='A') +(i=='C') + (i=='D')+(i!='D') #查找符合條件的選手if cond==3: #說真話是否是3人print("冠軍是:",i) #輸出冠軍input("運行完畢,請按回車鍵退出...")畫正弦曲線p94import numpy as np #加載numpy模塊并取名為npimport matplotlib.pyplot as plt #加載matplotlib.pyplot并取名為pltx=np.arange(0,2*np.pi,0.01) #x在0到2π之間,每隔0.01取一個點y1=np.sin(x) #求sin(x)對應的y1值y2=np.sin(-x) #求sin(-x)對應的y2值y3=np.sin(2*x)/2 #求sin(2x)/2對應的y3值plt.plot(x,y1) #繪制sin(x)圖像plt.plot(x,y2) #繪制sin(-x)圖像plt.plot(x,y3) #繪制sin(2*x)/2圖像plt.title('sin(x)') #設置圖像標題plt.xlabel('X') #設置X軸標題plt.ylabel('Y') #設置Y軸標題plt.show() #將繪制的函數圖像窗口顯示出來input("運行完畢,請按回車鍵退出...")求解數列兔子p97-P98def fib(n):#迭代求Fibonacci數列f2=f1=1for i in range(3,n+1):f1,f2=f2,f1+f2return f2n=int(input('輸入需要計算的月份數:'))print('兔子總對數為:',fib(n))input("運行完畢,請按回車鍵退出...")二分查找程序p101x=int(input("請輸入要查找的1000以內的整數:"))step=0flag1=1flag2=1000while(flag1<=flag2):mid=(flag1+flag2)//2step=step+1if mid>x:flag2=mid-1elif midflag1=mid+1else:breakprint("查找次數為:",step)input("運行完畢,請按回車鍵退出...")漢諾塔移動游戲程序p104def hanno(n,s,m,t):#定義一個函數,n層塔,將盤子從s借助m移動到tif n==1:print(s,'-->',t) #將一個盤子從s移動到telse:hanno(n-1,s,t,m) #將前n-1個盤子從s移動到m上print(s,'-->',t) #將最底下的最后一個盤子從s移動到t上hanno(n-1,m,s,t) #將m上的n-1個盤子移動到t上#主程序n=int(input('請輸入漢諾塔的層數:'))hanno(n,'A','B','C')input("運行完畢,請按回車鍵退出...") 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫