資源簡介 2.4 常見算法的程序設(shè)計(jì)P72實(shí)踐活動(dòng)編寫程序研究某山地的氣溫分布某地區(qū)為了開發(fā)山區(qū)農(nóng)業(yè),需要了解山地的氣候變化。現(xiàn)已知該地山區(qū)海拔每升高10m,氣溫下降約0.5℃,山地最高海拔為1500m,山腳下的年平均氣溫為22℃(假設(shè)山腳海拔為0m)。1.依據(jù)氣溫隨海拔升高而變化的規(guī)律,寫出計(jì)算該山地不同海拔高度的氣溫的解析式,并編程實(shí)現(xiàn)。2.某種植物適宜生長在氣溫為18~20℃的山區(qū),如果要分析這種植物應(yīng)被種植在該山地多高的地區(qū)為宜,需要如何修改算法 試編程實(shí)現(xiàn)。第1題:try:h = eval(input("輸入高度"))if 0 <= h <= 1500:t = 22 - h / 100 * 0.5print("此處的氣溫為:",round(t, 1))else:print("輸入數(shù)據(jù)超出范圍!")except:print("輸入數(shù)據(jù)格式有誤!")第2題:t1 = 18t2 = 20h1 = (22 - t1) * 2 * 100h2 = (22 - t2) * 2 * 100print("適宜種植的高度為{:.1f}至{:.1f}米".format(h2, h1))P75實(shí)踐活動(dòng)編程求解1000以內(nèi)的所有素?cái)?shù)。素?cái)?shù)是在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)的數(shù),如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 #導(dǎo)入math模塊,以便使用其中的數(shù)學(xué)函數(shù)k = Truefor n in range(2, 1000):m = int(math.sqrt(n)) #函數(shù)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練習(xí)提升1、交通信號(hào)“綠波帶”是根據(jù)車輛運(yùn)行情況對(duì)各路口紅綠燈進(jìn)行協(xié)調(diào),使車輛通過路口時(shí)能連續(xù)獲得一路録燈。某路段啟用了“録波帶”技術(shù),如圖2.4.8所示,全長1.6km,5個(gè)燈控路口,提示的“綠波速度”為60km/h,假設(shè)5個(gè)燈控路口間距相等。在僅考慮一輛車通行的情況下,如果實(shí)現(xiàn)“綠波”交通,那么相鄰兩個(gè)路口間綠燈亮起的最大時(shí)間間隔應(yīng)該設(shè)置為多少 思考該問題求解的算法并編程實(shí)現(xiàn)。ss = 1.6n = 5v = 60s = 1.6 / (n - 1)t = s / v * 60 * 60print("實(shí)現(xiàn)綠波通行,兩路口綠燈亮起的最大時(shí)間間隔為:", t)2、韓信是漢初著名軍事家,傳說他統(tǒng)計(jì)士兵數(shù)目有個(gè)獨(dú)特的方法。例如,先令士兵排成5列縱隊(duì),結(jié)果余1人;接著,命令士兵排成6列縱隊(duì),結(jié)果余5人;再命令士兵排成7列縱隊(duì),結(jié)果余4人;最后,命令士兵排成11列縱隊(duì),結(jié)果余10人。這樣他便知道士兵的總?cè)藬?shù)了。這種計(jì)數(shù)的方法被后人稱為“韓信點(diǎn)兵”。試編寫程序計(jì)算士兵的數(shù)目。k = 21while not ((k % 5 == 1) and (k % 6 == 5) and (k % 7 == 4) and (k % 11 == 10)):k = k + 1print("總?cè)藬?shù):", k)3.編寫程序,統(tǒng)計(jì)一段文本中分別有多少個(gè)漢字、英文字母、數(shù)字和其他字符。str = input('請(qǐng)輸入一行字符,可以是任意字符:')count_en = count_dg = count_zh = count_pu = 0for s in str:# 英文if "A" <= s <= "Z" or "a" <= s <= "z":count_en += 1# 數(shù)字elif "0" <= s <= "9":count_dg += 1# 中文elif u'\u4e00' <= s <= u'\u9fff':count_zh += 1# 特殊字符else:count_pu += 1print('英文字符:', count_en)print('數(shù)字:', count_dg)print('中文:', count_zh)print('特殊字符:', count_pu) 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫