资源简介 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.5print("此处的气温为:",round(t, 1))else:print("输入数据超出范围!")except:print("输入数据格式有误!")第2题:t1 = 18t2 = 20h1 = (22 - t1) * 2 * 100h2 = (22 - t2) * 2 * 100print("适宜种植的高度为{:.1f}至{:.1f}米".format(h2, h1))P75实践活动编程求解1000以内的所有素数。素数是在大于1的自然数中,除了1和它本身以外不再有其他因数的数,如2,3,5,7,11,方案一:k = Truefor n in range(2, 1000):if n == 2:print(n)m = n // 2if n % 2 != 0:for j in range(2, m + 1):if n % j == 0:k = Falsebreakif k :print(n)k = True方案二:import math #导入math模块,以便使用其中的数学函数k = Truefor n in range(2, 1000):m = int(math.sqrt(n)) #函数sqrt()用于求平方根for j in range(2, m + 1):if n % j == 0:k = Falsebreakif k:print(n)k = True方案三:k=1for n in range(2, 1000):for j in range(2, n):if n % j == 0:k = 0breakif k == 1:print(n)k = 1练习提升1、交通信号“绿波带”是根据车辆运行情况对各路口红绿灯进行协调,使车辆通过路口时能连续获得一路録灯。某路段启用了“録波带”技术,如图2.4.8所示,全长1.6km,5个灯控路口,提示的“绿波速度”为60km/h,假设5个灯控路口间距相等。在仅考虑一辆车通行的情况下,如果实现“绿波”交通,那么相邻两个路口间绿灯亮起的最大时间间隔应该设置为多少 思考该问题求解的算法并编程实现。ss = 1.6n = 5v = 60s = 1.6 / (n - 1)t = s / v * 60 * 60print("实现绿波通行,两路口绿灯亮起的最大时间间隔为:", t)2、韩信是汉初著名军事家,传说他统计士兵数目有个独特的方法。例如,先令士兵排成5列纵队,结果余1人;接着,命令士兵排成6列纵队,结果余5人;再命令士兵排成7列纵队,结果余4人;最后,命令士兵排成11列纵队,结果余10人。这样他便知道士兵的总人数了。这种计数的方法被后人称为“韩信点兵”。试编写程序计算士兵的数目。k = 21while not ((k % 5 == 1) and (k % 6 == 5) and (k % 7 == 4) and (k % 11 == 10)):k = k + 1print("总人数:", k)3.编写程序,统计一段文本中分別有多少个汉字、英文字母、数字和其他字符。str = input('请输入一行字符,可以是任意字符:')count_en = count_dg = count_zh = count_pu = 0for 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 += 1print('英文字符:', count_en)print('数字:', count_dg)print('中文:', count_zh)print('特殊字符:', count_pu) 展开更多...... 收起↑ 资源预览