2.4常见算法的程序设计 练习 2021—2022学年人教中图版(2019)高中信息技术必修1

文档属性

名称 2.4常见算法的程序设计 练习 2021—2022学年人教中图版(2019)高中信息技术必修1
格式 docx
文件大小 147.3KB
资源类型 教案
版本资源 人教中图版(2019)
科目 信息技术(信息科技)
更新时间 2022-04-18 08:26:18

图片预览

文档简介

2.4 常见算法的程序设计
P72实践活动
编写程序研究某山地的气温分布某地区为了开发山区农业,需要了解山地的气候变化。现已知该地山区海拔每升高10m,气温下降约0.5℃,山地最高海拔为1500m,山脚下的年平均气温为22℃(假设山脚海拔为0m)。
1.依据气温随海拔升高而变化的规律,写出计算该山地不同海拔高度
的气温的解析式,并编程实现。
2.某种植物适宜生长在气温为18~20℃的山区,如果要分析这种植
物应被种植在该山地多高的地区为宜,需要如何修改算法 试编程实现。
第1题:
try:
h = eval(input("输入高度"))
if 0 <= h <= 1500:
t = 22 - h / 100 * 0.5
print("此处的气温为:",round(t, 1))
else:
print("输入数据超出范围!")
except:
print("输入数据格式有误!")
第2题:
t1 = 18
t2 = 20
h1 = (22 - t1) * 2 * 100
h2 = (22 - t2) * 2 * 100
print("适宜种植的高度为{:.1f}至{:.1f}米".format(h2, h1))
P75实践活动
编程求解1000以内的所有素数。素数是在大于1的自然数中,除了1和它本身以外不再有其他因数的数,如2,3,5,7,11,
方案一:
k = True
for n in range(2, 1000):
if n == 2:
print(n)
m = n // 2
if n % 2 != 0:
for j in range(2, m + 1):
if n % j == 0:
k = False
break
if k :
print(n)
k = True
方案二:
import math #导入math模块,以便使用其中的数学函数
k = True
for n in range(2, 1000):
m = int(math.sqrt(n)) #函数sqrt()用于求平方根
for j in range(2, m + 1):
if n % j == 0:
k = False
break
if k:
print(n)
k = True
方案三:
k=1
for n in range(2, 1000):
for j in range(2, n):
if n % j == 0:
k = 0
break
if k == 1:
print(n)
k = 1
练习提升
1、交通信号“绿波带”是根据车辆运行情况对各路口红绿灯进行协调,使车辆通过路口时能连续获得一路録灯。某路段启用了“録波带”技术,如图2.4.8所示,全长1.6km,5个灯控路口,提示的“绿波速度”为60km/h,假设5个灯控路口间距相等。在仅考虑一辆车通行的情况下,如果实现“绿波”交通,那么相邻两个路口间绿灯亮起的最大时间间隔应该设置为多少 思考该问题求解的算法并编程实现。
ss = 1.6
n = 5
v = 60
s = 1.6 / (n - 1)
t = s / v * 60 * 60
print("实现绿波通行,两路口绿灯亮起的最大时间间隔为:", t)
2、韩信是汉初著名军事家,传说他统计士兵数目有个独特的方法。例如,先令士兵排成5列纵队,结果余1人;接着,命令士兵排成6列纵队,结果余5人;再命令士兵排成7列纵队,结果余4人;最后,命令士兵排成11列纵队,结果余10人。这样他便知道士兵的总人数了。这种计数的方法被后人称为“韩信点兵”。试编写程序计算士兵的数目。
k = 21
while not ((k % 5 == 1) and (k % 6 == 5) and (k % 7 == 4) and (k % 11 == 10)):
k = k + 1
print("总人数:", k)
3.编写程序,统计一段文本中分別有多少个汉字、英文字母、数字和其他字符。
str = input('请输入一行字符,可以是任意字符:')
count_en = count_dg = count_zh = count_pu = 0
for s in str:
# 英文
if "A" <= s <= "Z" or "a" <= s <= "z":
count_en += 1
# 数字
elif "0" <= s <= "9":
count_dg += 1
# 中文
elif u'\u4e00' <= s <= u'\u9fff':
count_zh += 1
# 特殊字符
else:
count_pu += 1
print('英文字符:', count_en)
print('数字:', count_dg)
print('中文:', count_zh)
print('特殊字符:', count_pu)