資源簡介 (共81張PPT)Python算法探究——初中信息技術第二冊第2單元COMPUTATIONAL THINKING01第一節(jié) 生活中的算法算法就是用一步接一步的方式來詳細描述計算機如何將輸入轉化為所要求的輸出的過程,或者說,算法是對計算機上執(zhí)行的計算過程的具體描述。01第一節(jié) 生活中的算法假設你計劃要進行一次自駕游,從淄博到北京天安門,應該選擇那一條路線呢?01第一節(jié) 生活中的算法02枚舉算法(也稱為窮舉法)是我們在日常中使用到的最多的一個算法,它的核心思想就是:把所有可能的答案全部列出來,從中找最優(yōu)答案。方法簡單,但很實用。第二節(jié) 枚舉算法(也稱為 窮舉法)02第二節(jié) 枚舉算法02第二節(jié) 枚舉算法02第二節(jié) 枚舉算法02第二節(jié) 枚舉算法02第二節(jié) 枚舉算法n=100for i in range(1,n+1):if “7” in str(i): # 找出所有的明"7",即含7的數(shù)print("找到明7數(shù)字:",i)P5402第二節(jié) 枚舉算法n=100for i in range(1,n+1):if not "7" in str(i) and i%7==0:print(“找到的數(shù)字為:”,i)暗7實現(xiàn)代碼# 找出所有的暗“7”,即不含7的倍數(shù)02n=100for i in range(1,n+1):if “7” in str(i) or i%7==0:print(“找到的拍手數(shù)字為:”,i)第二節(jié) 枚舉算法——實現(xiàn)“明7”和“暗7”的代碼02第二節(jié) 枚舉算法-百錢買百雞古人的智慧:百錢買百雞公雞5文錢一只,母雞3文錢一只,小雞3只一文錢,用100文錢買100只雞,其中公雞,母雞,小雞都必須要有,問公雞,母雞,小雞要買多少只剛好湊足100文錢?33只20只02第二節(jié) 枚舉算法-百錢買百雞【解析】本題使用三重循環(huán)實現(xiàn)題目要求,每一次對應的變量可以從程序里看出:第1層循環(huán)控制公雞數(shù)量,用x表示第2層循環(huán)控制母雞數(shù)量,用y表示第3層循環(huán)控制小雞數(shù)量,用z表示每一層循環(huán)中的范圍已經根據(jù)他們的價錢進行了處理,比如每只公雞5文錢最多能買20只,所以它的范圍為(1,21)條件判斷中:計算百錢的表達式為:5*x + 3*y + z//3 ==100計算百只雞的表達式為: x+y+z==100兩個表達式必須同時成立,所以需要使用and來連接最后要注意輸入格式的控制02第二節(jié) 枚舉算法-百錢買百雞#變量x,y,z分別是公雞、母雞和小雞的數(shù)量.② and③ 5*x + 3*y + z//3 ==100for x in range(1,21):for __①__ in range(1,34):for z in range(3,101,3):if x+y+z==100 __②__ __③__:print("公雞:",x,"母雞:",y,"小雞:", __④__)① y④ z02第二節(jié) 枚舉算法1000"1" in str(x)x%10==802第二節(jié) 枚舉算法-尋找水仙花數(shù)02第二節(jié) 枚舉算法-尋找水仙花數(shù)運算符 描述% 取余函數(shù) - 返回除法的余數(shù)** 乘方// 取整函數(shù) – 返回除數(shù)的整數(shù)02第二節(jié) 枚舉算法運算符 邏輯表達式 描述and x and y 布爾“與” – 表示x與y必須同時成立,程序才能正常往下運行。or x or y 布爾“或” –表示只要x與y其中一個條件成立,程序就可以往下運行。not not x 布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。in 如果在指定的序列中找到值返回 True,否則返回 Falsenot in 如果在指定的序列中沒有找到值返回 True,否則返回 False。02第二節(jié) 枚舉算法第一節(jié) 生活中的算法01(預習P49—50 )01第一節(jié) 生活中的算法03第三節(jié) 迭代算法—用迭代法探究數(shù)據(jù)變化的規(guī)律03第三節(jié) 迭代算法預習P60—613分鐘03第三節(jié) 迭代算法03第三節(jié) 迭代算法03第三節(jié) 迭代算法03第三節(jié) 迭代算法03第三節(jié) 迭代算法03第三節(jié) 迭代算法03第三節(jié) 迭代算法—Python中數(shù)學函數(shù)的使用棋盤上的麥粒如何用python編程計算麥粒數(shù)呢?——前期知識預備什么是模塊?邏輯上來說模塊就是一組功能的組合;實質上一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的擴展名。03第三節(jié) 迭代算法—什么是模塊?03第三節(jié) 迭代算法——模塊的導入方法03第三節(jié) 迭代算法——模塊的導入方法From math import *導入數(shù)學函數(shù)模塊,之后可以直接使用里面的一些數(shù)學函數(shù)。03第三節(jié) 迭代算法——模塊的導入方法pow /pa /乘方函數(shù)實例:Pow(2,3)23電子表格也寫做:2^3即:或2**3Pow(2,n)2n即:03第三節(jié) 迭代算法閱讀 P65—66頁,結合運行《3.迭代法文件接收柜》內程序“迭代1.任意麥粒數(shù).py”,理解程序代碼。運行程序時,開始輸入較小點的數(shù)值。3-5分鐘03第三節(jié) 迭代算法#print("總數(shù)簡便計算的方法:",int(pow(2,k))-1)03第三節(jié) 迭代算法a2/1000<1000a31.閱讀 P66—67頁試著理解程序代碼,并填空。(不要寫在書上)2.打開《3.迭代法文件接收柜》內程序“迭代2.任意麥粒數(shù)質量.py”,填空,并運行代碼。03第三節(jié) 迭代算法——總結04第四節(jié) 排序算法04第四節(jié) 排序算法04第四節(jié) 排序算法split/spl t/分解Split( )函數(shù),可以根據(jù)指定的分隔符把一個字符串拆分成一個列表。04第四節(jié) 排序算法04第四節(jié) 排序算法split/spl t/分解Split( )函數(shù),可以根據(jù)指定的分隔符把一個字符串拆分成一個列表。04第四節(jié) 排序算法list /l st/列表列表 是Python中非常重要的數(shù)據(jù)類型,可以隨時添加和刪除其中的元素。如:b=[12,8,9,18,20]d=b[0]設置最大數(shù)變量d的初始值為列表b中的第1個元素。則d=( )1204第四節(jié) 排序算法04第四節(jié) 排序算法i04第四節(jié) 排序算法sum/s m/合計、總計Sum( )函數(shù) 用于進行列表數(shù)據(jù)求和。如Sum([2,3,4],5 )的計算結果為:1404第四節(jié) 排序算法Iterable可迭代對象 / t e bl /(可以是元組、列表或字典等。)04第四節(jié) 排序算法length /le kθ/長度Len( )函數(shù)返回對象(字符串、列表、元組等)長度或項目個數(shù)。如Len([1,2,5])的值為 。35Len([11,12,5,8,9])的值為04第四節(jié) 排序算法——計算選手平均分P71《1.去掉最高最低求平均值.py》04第四節(jié) 排序算法——冒泡排序法什么是冒泡排序法?冒泡排序法是一種簡單直觀的排序算法,它重復地走訪過要排序的數(shù)列。一次比較兩個元素,如果他們的順序錯誤,就把它們交換過來。走訪數(shù)列的工作是重復的進行,直到沒有再需要交換的數(shù),也就是說該數(shù)列已經排序完成。這個算法名字的由來,是因為越小的元素會經由交換,慢慢像泡泡一樣“浮”到數(shù)列的頂端。按照得分高者名次靠前的原則,需要將10位選手的最終得分按照從高分到低分進行排序,計算機如何完成對選手成績的排序呢?在程序設計中,冒泡排序是比較常見的一種排序算法,下面我們一起探究該算法的實現(xiàn)過程。04第四節(jié) 排序算法1——冒泡排序法排序數(shù)字:7,9,5,6,4比較次數(shù) 第1輪: 第2輪: 第3輪: 第4輪:第1次第2次第3次第4次個數(shù):57,9,5,6,47,9,5,6,47,5,9,6,47,5,6,9,47,5,6,4,97,5,6,4,95,7,6,4,95,6,7,4,95,6,4,7,95,6,4,7,95,4,6,7,95,6,4,7,95,4,6,7,94,5,6,7,9游戲:學生手拿代表身高大小不一的數(shù),按照由矮到高來排序。04第四節(jié) 排序算法1——冒泡排序法排序數(shù)字:7,9,5,6,4比較次數(shù) 第1輪: 第2輪: 第3輪: 第4輪:第1次第2次第3次第4次個數(shù):57,9,5,6,47,9,5,6,47,5,9,6,47,5,6,9,47,5,6,4,97,5,6,4,95,7,6,4,95,6,7,4,95,6,4,7,95,6,4,7,95,4,6,7,95,6,4,7,95,4,6,7,94,5,6,7,9游戲:學生手拿代表身高大小不一的數(shù),按照由矮到高來排序。04第四節(jié) 排序算法1——冒泡排序法輪數(shù) 排序數(shù)個數(shù) 比較次數(shù) 比較次數(shù)規(guī)律 排出數(shù) 結果第1輪第2輪第3輪第4輪排序數(shù)字:7,9,5,6,4個數(shù):5第1大數(shù)第2大數(shù)第3大數(shù)第4大數(shù)第5大數(shù)第4輪543243215-15-25-35-497654比較輪數(shù):5-1=4個數(shù)-1個數(shù)-輪數(shù)個數(shù): i比較輪數(shù):i-1規(guī)律:輪數(shù) 排序數(shù)個數(shù) 比較次數(shù) 排出數(shù)第1輪第2輪……第i-1輪第1大數(shù)第2大數(shù)……第i-1大數(shù)ii-1……2i-1i-2……i-(i-1)個數(shù)-輪數(shù)規(guī)律:04第四節(jié) 排序算法1——冒泡排序法排序算法—冒泡排序人工:易出錯、效率低① 有 i 個數(shù)據(jù)④ 如果比較兩個數(shù)時前面數(shù)大②需要 i-1 輪排序 k③ 每輪 i-k (輪數(shù))次比較得到排序結果⑤就交換兩個數(shù)據(jù)排序器用列表 s 存儲數(shù)據(jù)for k in range (0, len(s)-1):循環(huán)外內循環(huán)for i in range (0, len(s)-k-1):if s[i]>s[i+1]:s[i],s[i+1]=s[i+1],s[i]print("排序結果為:",s)多元賦值程序:高效、自動化# 控制比較輪數(shù)# 每輪比較次數(shù)# 判斷相鄰兩數(shù)值的大小# 符合判斷條件情況,交換位置#顯示比較過程預習P72-7304第四節(jié) 排序算法1——冒泡排序法2019 女排世界杯得分04第四節(jié) 排序算法1——冒泡排序法用列表 s 存儲數(shù)據(jù)for k in range (0, len(s)-1):循環(huán)外內循環(huán)for i in range (0, len(s)-k-1):if s[i]>s[i+1]:s[i],s[i+1]=s[i+1],s[i]print("排序結果為:",s)多元賦值1.女排比賽程序.py04第四節(jié) 排序算法1——冒泡排序法04第四節(jié) 排序算法1——冒泡排序法P75《4.冒泡排序編號成績對應.py》04第四節(jié) 排序算法2——簡單快速的桶排序法04第四節(jié) 排序算法2——簡單快速的桶法04第四節(jié) 排序算法2——編程實現(xiàn)桶排序04第四節(jié) 排序算法3—用列表方法排序list /l st/列表列表 是Python中非常重要的數(shù)據(jù)類型,可以隨時添加和刪除其中的元素。列表對向的追加,插入,刪除,排除等稱謂列表方法。格式為:列表名. 方法( )例如:列表的sort /s rt/ 方法可以實現(xiàn)排序(如果是字符串,按照首字母進行排序)默認升序。rp=[5,6,2,8,3,7]p.sort()Print(p)p.sort(reverse=True)print(p)reverse /r v rs/反轉;交換第四節(jié)排序算法04聽寫關鍵單詞感謝聆聽04第四節(jié) 排序算法——練一練1.如圖,運行程序時,輸入"5,3,6,7,2,1",其輸出結果為( )。A.3 B.2 C.7 D.104第四節(jié) 排序算法——練一練2.如圖,m的值為( )。A.評委打分去掉最高分和最低分的平均值B.評委打分去掉最高分和最低分的和C.評委打分的平均值D.評委打分的總和02第二節(jié) 枚舉算法02第二節(jié) 枚舉算法02i=0 #記錄循環(huán)次數(shù)j=0 #記錄方案數(shù)量for a in range(1,11): #10克砝碼的范圍for b in range(1,21): #5克砝碼的范圍for c in range(1,41): #2克砝碼的范圍for d in range(1,41): #1克砝碼的范圍i=i+1if a+b+c+d==40 and 10*a+5*b+2*c+d==100:print(a,b,c,d)j+=1print("共循環(huán)次數(shù):",i," ",j,"種方案")i=0 #記錄循環(huán)次數(shù)j=0 #記錄方案數(shù)量for a in range(1,7+1): #10克砝碼的范圍for b in range(1,17+1): #5克砝碼的范圍for c in range(1,37+1): #2克砝碼的范圍for d in range(1,37+1): #1克砝碼的范圍i=i+1if a+b+c+d==40 and 10*a+5*b+2*c+d==100:print (a,b,c,d)j+=1print("共循環(huán)次數(shù):",i," ",j,"種方案")共循環(huán)次數(shù): 320000 34 種方案共循環(huán)次數(shù): 162911 34 種方案第二節(jié) 枚舉算法砝碼稱重問題和優(yōu)化問題i=0 #記錄循環(huán)次數(shù)j=0 #記錄方案數(shù)量for a in range(1,11): #10克砝碼的范圍for b in range(1,21-a): #5克砝碼的范圍for c in range(1,41-b): #2克砝碼的范圍for d in range(1,41-a-b-c): #1克砝碼的范圍i=i+1if a+b+c+d==40 and 10*a+5*b+2*c+d==100:print (a,b,c,d)j+=1print("共循環(huán)次數(shù):",i," ",j,"種方案")i=0 #記錄循環(huán)次數(shù)j=0 #記錄方案數(shù)量for a in range(1,8): #10克砝碼的范圍for b in range(1,21-2*a): #5克砝碼的范圍for c in range(1,41-b): #2克砝碼的范圍for d in range(1,41-a-b-c): #1克砝碼的范圍i=i+1if a+b+c+d==40 and 10*a+5*b+2*c+d==100:print (a,b,c,d)j+=1print("共循環(huán)次數(shù):",i," ",j,"種方案")共循環(huán)次數(shù): 52585 34 種方案共循環(huán)次數(shù): 35980 34 種方案第二節(jié) 枚舉算法砝碼稱重問題和優(yōu)化問題0202第二節(jié) 枚舉算法第一節(jié) 生活中的算法01第一節(jié) 生活中的算法01偽代碼偽代碼,是介于自然語言和計算機語言之間的文字和符號(包括數(shù)學符號)來描述算法,其目的是使被描述的算法可以容易地轉化為運用任何一種編程語言實現(xiàn)(C、 Java、python等)。偽代碼描述算法在形式上并不是非常嚴格,在某些方面可能顯得不太正規(guī),但它可以屏蔽算法的部分實現(xiàn)細節(jié),讓我們專注于算法的核心思想和關鍵步驟。01第一節(jié) 生活中的算法—偽代碼02for x in range(100,1000): #三位密碼的范圍if "1" in str(x) and x%10==8:print (x)#尋找忘記的一個三位自然數(shù)密碼,前兩位包含1,個位數(shù)是8第二節(jié) 枚舉算法04第四節(jié) 排序算法——冒泡排序法 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫