
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) ... ...
~~ 您好,已阅读到文档的结尾了 ~~