資源簡介 (共27張PPT)3.3.1 解析算法0.用算法解決問題的過程抽象與建模找到核心要素得出計算模型設計算法明確輸入輸出描述數據處理編寫程序用計算機程序語言描述,形成計算機程序調試運行程序關注語法錯誤邏輯錯誤等1.基本思想【解析算法】是指根據問題的前提條件與所求結果之間的關系,找出求解問題的數學表達式,并通過表達式的計算來實現問題的求解。解題思路:明確問題的前提條件明確要求的解找出前提條件與所求解之間關系的數學表達式1.基本思想【解題關鍵】要確保數學表達式的正確性在程序中正確描述該數學表達式。(python運算符的正確使用)2. 實例分析Q1:一個小球從高處自由落體落下,經過5秒后到達地面,已知重力加速度g為10m/s,請問小球從距離地面多高的地方落下?1.抽象與建模找到核心要素(問題的前提條件和要求的解)得出計算模型前提條件:自由落體運動時間為5秒,設為t重力加速度g為10m/s,設為g要求的解:小球下落的高度,假設為h根據自由落體運動:h=1/2gt22. 實例分析Q1:一個小球從高處自由落體落下,經過5秒后到達地面,已知重力加速度g為10m/s,請問小球從距離地面多高的地方落下?2.設計算法輸入數據處理數據輸出數據無h=1/2gt2輸出h輸入本金p輸入期數t輸出ht=5g=10h=1/2gt22. 實例分析Q1:一個小球從高處自由落體落下,經過5秒后到達地面,已知重力加速度g為10m/s,請問小球從距離地面多高的地方落下?3.編寫程序t=5g=10h=g*t**2/2print(h)輸入本金p輸入期數t輸出ht=5g=10h=1/2gt22. 實例分析Q2:判斷一個數是否是3和7的公倍數,請用程序實現上述功能。1.抽象與建模找到核心要素得出計算模型假設要判斷的數為 x判斷條件:3和7的公倍數3和7的公倍數x%3==0 and x%7==0x是公倍數或x不是公倍數2.設計算法輸入數據處理數據輸出數據輸入xx%3==0 and x%7==0輸出x是公倍數或x不是公倍數3.編寫程序x=int(input(“請輸入一個數”))if x%3==0 and x%7==0:print(‘x是公倍數’)else:print(‘x不是公倍數’)3. 課堂實戰1.人口增長問題2.設備價值問題3.蔡勒公式4.十進制轉二進制5.二進制轉十進制6.二進制轉十六進制7.十六進制轉二進制3. 課堂實戰二進制轉十進制n="011101"res=0for i in range(len(n)):res=res*2+int(n[i])十進制轉二進制n=int(input())res=""while n>0:res=str(n%2)+resn=n//2print(res)3. 課堂實戰十六進制轉十進制n="A3"dic={'0':0,'1':1,'3':3,'A':10}res=0for i in n:res=res*16+dic[i]print(res)十進制轉十六進制n=int(input())res=""g="0123456789ABCDEF"while n>0:res=g[n%16]+resn=n//16print(res)3.3.2 枚舉算法131.基本思想【枚舉算法】1.建立正確的數學模型,即得出正確的數學代數式2.將數學代數式轉化為正確的python表達式13我手里有三把一模一樣的鑰匙,分別可以開教室、辦公室、寢室的門。當我晚上回到寢室,該如何找到能開寢室門的鑰匙呢?每把都試一遍14一一列舉逐一檢驗分支循環枚舉篩選1.基本思想15不能遺漏任何一個正確解盡可能地縮小解的列舉范圍,提高算法的效率1.基本思想【枚舉算法要注意的問題】4. 課堂實戰【Q0:例舉出300以內被7整除的所有的數,如何編程實現?】列舉的范圍是什么?檢驗的條件是什么?列舉方式是什么?n=0,1,2,···,300被7整除的數:n%7==0for循環如何編程實現for i in range(301):if i%7==0:print(i)4. 課堂實戰【Q1:編程推算單據中被涂抹數字】有一張單據上有一個5位數的編號n,如圖所示,其千位數和十位數處已經變得模糊不清,但是知道這個5位數是23的倍數?,F要設計一個算法,找出所有滿足這些條件的5位數,并統計這些5位數的個數。4. 課堂實戰【編程推算單據中被涂抹數字】列舉的范圍是什么?檢驗的條件是什么?列舉方式是什么?千位的數:i=0,1,···,9十位的數:j=0,1,···,9被23整除:(20506+i*1000+j*10)%23==0雙重for循環,找出這些數并統計其個數count_14. 課堂實戰【編程推算單據中被涂抹數字】count =0# 循環i#循環jt=20506+i*1000+j*10if t % 23 == 0:count+=1; print(t)print(“這些5位數的個數為” ,count)4. 課堂實戰【編程推算單據中被涂抹數字】count =0for i in range(10): # 循環ifor j in range(10): #循環jt=20506+i*1000+j*10if t % 23 == 0:count+=1; print(t)print("這些5位數的個數為" ,count)3. 課堂實戰【Q2:編程推算水仙花數】“水仙花數”是指一個三位自然數,其各位數字的立方和等于該數本身。編程輸出所有的水仙花數。例如153是“水仙花數”,因為:153 = 13 + 53 + 33。【Q2:編程推算水仙花數】各位數字的立方和等于該數本身列舉范圍是什么?如何表示這個數?如何表示各位的數字?3. 課堂實戰【Q2:編程推算水仙花數】列舉每個位上可能的數字百位:i 十位:j 個位:k三位數n=i*100+j*10+k逐一檢驗可能的解,判斷條件是什么?i : 1 ~ 9j : 0 ~ 9k : 0 ~ 9n == i ** 3 + j ** 3 + k ** 33. 課堂實戰24【Q3:今有雉、兔同籠,上有三十五頭,下有九十四足。問:雉、兔各幾何?】當雞為1的時候,兔子為1,滿足條件嗎?當雞為1的時候,兔子為2,滿足條件嗎?當雞為1的時候,兔子為3,滿足條件嗎?……當雞為2的時候,兔子為1,滿足條件嗎?當雞為2的時候,兔子為2,滿足條件嗎?當雞為2的時候,兔子為3,滿足條件嗎?……3. 課堂實戰【Q3:今有雉、兔同籠,上有三十五頭,下有九十四足。問:雉、兔各幾何?】雞x的取值范圍為 0~35兔y的取值范圍為 0~35在這個取值范圍內的所有x和y判斷:如果 x、y滿足35個頭 94只腳那么我們要求的x、y3. 課堂實戰初值終值【Q3:今有雉、兔同籠,上有三十五頭,下有九十四足。問:雉、兔各幾何?】3. 課堂實戰h = 35f = 94for x in range(0,36):for y in range(0,36):if x + y == 35 and 2 * x + 4 * y == 94 :print(x,y) 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫