资源简介 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("运行完毕,请按回车键退出...") 展开更多...... 收起↑ 资源预览