2022—2023学年教科版(2019))高中信息技术必修一所有程序知识汇总

资源下载
  1. 二一教育资源

2022—2023学年教科版(2019))高中信息技术必修一所有程序知识汇总

资源简介

1.鸡兔同笼问题程序,p10
print('这是一个有关鸡兔同笼问题的程序')
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,(三小鸡)只数g6
money=100 #一共100文钱
num=100 #一共100只鸡
g1=5 #公鸡价格5文
g2=3 #母鸡价格3文
g3=1 #3只小鸡1文
for g4 in range(1,money//g1+1): #公鸡只数可能为1-20
for g5 in range(1,money//g2+1): #母鸡只数可能为1-33
for g6 in range(1,money//g3+1): #(3小鸡)只数可能为1-100
money1=g1*g4+g2*g5+g6*g3
num1=g4+g5+g6*3
if money1==money and num1==num:
print (g4,g5,g6*3)
input("运行完毕,请按回车键退出...")
最强大脑程序p22
import random #添加随机库
import time
import os
print("你好,现在你有10秒钟的时间记忆下列物品及其编号")
things=["苹果","香蕉","桔子","梨子","猕猴桃","柚子",
"猴魁","铁观音","毛笔","宣纸"]
for i in range(10):
print(i,":",things[i])#在屏幕上显示编号及物品
time.sleep(10) #延时10秒
os.system("cls") #清屏幕,隐去编号及物品
n=0 #记录答对的题数,初值为0
t2=random.sample(things,5)#随机抽出5个物品
for i in t2: #出5题
ans=int(input(i + "的编号是:"))#输入编号答题
if i==things[ans]:
n=n+1 #如果回答正确,答对的题数加1
print("\n你一共答对了",n,"次")#屏幕显示答对的题数
input("\n按回车键结束程序")
计算心率p29
low=(220-16 -71)*0.6+71
high=(220-16 -71)*0.8+71
print(low,high)
input("运行完毕,请按回车键退出...")
输入语句p30
myname=input("请输入myname:")
print("hello",myname)
6.计算心率p30
age=float(input('请输入age='))
HRrest=float(input('请输入HRrest='))
low=(220-age-HRrest)*0.6+ HRrest
high=(220-age-HRrest)*0.8+HRrest
print("最适宜的心率是:",low,"~",high)
input("运行完毕,请按回车键退出...")
飞船升空问题p32
v=float(input("请输入速度(千米/秒):"))
if v>=7.91:
print("飞船成功飞行! ")
else:
print("飞船不能升空! ")
input("运行完毕,请按回车键退出...")
8.分性别计算心率p33
age=float(input('请输入age='))
HRrest=float(input('请输入HRrest='))
gender=input("请输入male or female :")
if gender=='male':
n=220
else:
n=210
low=(n-age-HRrest)*0.6+HRrest
high=(n-age-HRrest)*0.8+HRrest
print('最适宜的心率是:',low,'~',high)
input("运行完毕,请按回车键退出...")
计算心率拓展练习p33
age=float(input('请输入age='))
HRrest=float(input('请输入HRrest='))
EHR=float(input('请输入EHR=')) #输入运动后的心率
gender=input("请输入male or female :")
if gender=='male':
n=220
else:
n=210
low=(n-age-HRrest)*0.6+HRrest
high=(n-age-HRrest)*0.8+HRrest
if 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.计算利率不变情况下到期存款总额p34
principal = 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”程序p36
for i in ["hello","world"]:
print (i) #循环体
input("运行完毕,请按回车键退出...")
生成0-100的自然数程序p36
for i in range(101): #想想为什么是101
print (i)
input("运行完毕,请按回车键退出...")
15.利用for循环来解决利率不变情况下到期存款总额p37
money = 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("运行完毕,请按回车键退出...")
条件循环例子p37
s=0
while s<=30:
s=s+10 #循环体
print(s) #循环体
input("运行完毕,请按回车键退出...")
17.资金被全部取出程序p38
money=100000 #本金100000
year=0 #理财年数赋初值为0
while money>=0:
money=round(money*(1+0.037),2)-20000 #计算新的理财金额
year=year+1 #理财年数加1
print(year,"年后资金被全部取出") #输出结果
input("运行完毕,请按回车键退出...")
调试程序操作p38(了解即可)
import pdb
money=100000 #本金100000
year=0 #理财年数赋初值为0
while money>=0:
money=round(money*(1+0.037),2)-20000 #计算新的理财金额
year=year+1 #理财年数加1
pdb.set_trace()
print(year,"年后资金被全部取出") #输出结果
input("运行完毕,请按回车键退出...")
19.计算存款总额拓展练习第一题p39
money=0 #初值为0
for i in range(10):
money=round((money+20000)/(1+0.037),2) #计算理财金额
print("初期投资",money,"元") #输出结果
input("运行完毕,请按回车键退出...")
20.计算存款总额拓展练习第二题p39
money=100000 #本金100000
year=0 #理财年数赋初值为0
while money<200000:
money=round(money*(1+0.0425),2) #计算新的理财金额
year=year+1 #理财年数加1
print(year,"年后资金翻倍") #输出结果
input("运行完毕,请按回车键退出...")
循环嵌套,九九乘法表p39
for 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的阶乘程序p42
def factorial(n):
#求n!
s=1
for i in range(2,n+1):
s=s*i
return s
#调用factorial函数
total=factorial(4)
print(total)
input("运行完毕,请按回车键退出...")
23.火柴棒拼数字游戏程序p43
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 #返回需要多少根火柴棒数
#以下为主程序
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 setup
setup(
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("运行完毕,请按回车键退出...")
求生肖程序p45
def shengxiao(year):
#求生肖
zodiac=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
index=(year-1972)%12
return zodiac[index]
#以下为主程序
myyear=int(input("请输入出生年份,输入0结束:"))
while myyear!=0:
print("你的生肖是:",shengxiao(myyear))
myyear=int(input("请输入出生年份,输入0结束:"))
27.利用时间库获取计算机时间(拓展知识)p45-p46
import time
print(time.time()) #时间戳,即1970纪元后经过的浮点秒数
time.sleep(2) #延时2秒
print(time.asctime()) #格式化显示时间
input("运行完毕,请按回车键退出...")
利用随机库产生一个随机数p46
import random
num=random.randint(0,1) #产生一个[0, 1]之间的随机整数
print(num)
input("运行完毕,请按回车键退出...")
29.猜数字游戏程序p47
import random
num=random.randint(1,100)
mynum=int(input('请输入mynum='))
n=1
while not(num==mynum):
n=n+1
print("输入不正确,请再次输入")
mynum=int(input('请输入mynum='))
print("你猜对了!","一共用了",n,"次")
input("运行完毕,请按回车键退出...")
十进制转换为二进制程序p53
b=''
d=int(input('请输入非负整数d='))
while d>0:
r=d%2
b=str(r)+b
d=d//2
if b=='':
b='0'
print(b)
print()
input("运行完毕,请按回车键退出...")
31.编制订单数据处理程序p58
listque=[] #定义列表listque存储订单
x=0
while(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,minr
vis.add(v)
r=r+'-'+v
if vis==set('HABC'):
s=s+G[v]['H']
r=r+'-'+'H'
print('线路'+r[1:]+'用时:'+str(s))
if smin=s
minr=r
s=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 min
G={'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=999
s=0
r=''
minr=''
print("最短用时:"+str(dfs('H',set())))
print("最短用时线路有:"+minr[1:])
print()
input("运行完毕,请按回车键退出...")
更新旅行线路p68
from 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 datetime
root = Tk()
root.geometry('300x100')
def jiemi():
d1=datetime.datetime.now() #获取当前系统时间d1
p=int(varin.get()) #获取输入文本框的数字密码
for i in range(p+1): #从0循环到正确密码数值
if i==p: #如果密码相同
d2=datetime.datetime.now() #获取当前系统时间d2
d=d2-d1 #取得时间差
#在输出文本框中显示解密用时
varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")
frm = Frame(root)
#left
frm_L = Frame(frm)
Label(frm_L, text='输入密码:', font=('Arial', 10)).pack()
Label(frm_L, text='破解用时:', font=('Arial', 10)).pack()
frm_L.pack(side=LEFT)
#right
frm_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()
凯撒密码程序p81
from 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()
拓展练习82
def NewCaesar(m,n,t):
z='';i=0
while 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+=1
return z
m='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.人羊过河问题p83
def InsertQ(x,i):
global rear
if x not in Q:
rear+=1
Q.append(x)
F.append(front)
L.append(i)
def OutputR(front):
global n
if F[front]>0:
OutputR(F[front])
if L[front]>=0:
n+=1
print("第"+str(n)+"步:"+law[L[front]])
def OK(M,W,S,V):
return W!=S and S!=V or M==S
Q=[0];F=[0];L=[-1]
law=["移动人","移动人和狼","移动人和羊","移动人和菜"]
front=0;rear=0
while front<=rear:
x=Q[front]
if x==15:
break
V=x%2
S=x//2%2
W=x//4%2
M=x//8
if OK(1-M,W,S,V):
x=(1-M)*8+W*4+S*2+V
InsertQ(x,0)
if M==W and OK(1-M,1-W,S,V):
x=(1-M)*8+(1-W)*4+S*2+V
InsertQ(x,1)
if M==S and OK(1-M,W,1-S,V):
x=(1-M)*8+W*4+(1-S)*2+V
InsertQ(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+=1
if x==15:
print("人狼羊菜过河游戏成功!")
n=0
OutputR(front)
else:
print("无法完成任务!")
print()
input('运行结束,按回车键退出...')
药瓶污染问题p89
d=int(input('请输入每颗药丸的标准重量:'))
w=int(input('请输入药丸称得的重量:'))
x=w-10*d
print('被污染的药瓶序号是:',x)
input("运行完毕,请按回车键退出...")
39.谁是冠军程序p91
champion=['A','B','C','D'] #设置选手列表
for i in champion: #循环读取选手编号
cond=(i!='A') +(i=='C') + (i=='D')+(i!='D') #查找符合条件的选手
if cond==3: #说真话是否是3人
print("冠军是:",i) #输出冠军
input("运行完毕,请按回车键退出...")
画正弦曲线p94
import numpy as np #加载numpy模块并取名为np
import matplotlib.pyplot as plt #加载matplotlib.pyplot并取名为plt
x=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-P98
def fib(n):
#迭代求Fibonacci数列
f2=f1=1
for i in range(3,n+1):
f1,f2=f2,f1+f2
return f2
n=int(input('输入需要计算的月份数:'))
print('兔子总对数为:',fib(n))
input("运行完毕,请按回车键退出...")
二分查找程序p101
x=int(input("请输入要查找的1000以内的整数:"))
step=0
flag1=1
flag2=1000
while(flag1<=flag2):
mid=(flag1+flag2)//2
step=step+1
if mid>x:
flag2=mid-1
elif midflag1=mid+1
else:
break
print("查找次数为:",step)
input("运行完毕,请按回车键退出...")
汉诺塔移动游戏程序p104
def hanno(n,s,m,t):
#定义一个函数,n层塔,将盘子从s借助m移动到t
if n==1:
print(s,'-->',t) #将一个盘子从s移动到t
else:
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("运行完毕,请按回车键退出...")

展开更多......

收起↑

资源预览