資源簡介 (共34張PPT)2.4 可以復用的代碼 (第1課時)學習內容一、編程解決復雜問題的思想與方法二、函數的定義與調用三、使用函數解決問題一、計算機解決問題的一般過程知識回顧二、算法的三種基本結構順序結構分支結構循環結構小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。小挑戰6, 2, 5, 5, 4, 5, 6, 3, 7, 6 根火柴棒有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。小挑戰6, 2, 5, 5, 4, 5, 6, 3, 7, 6 根火柴棒6根火柴可以擺出最小的自然數是( 0 )?6根火柴可以擺出最大的自然數是( 111 )?有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。snum=6print("你可以拼出這些數字: ") for i in range(112):if== snum :print ( i )i 需要的火柴棒數range(0 , 112 , 1)0≤i<112小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。print ( i )小挑戰細化問題:如何計算一個自然數需要的火柴棒總數?snum=6print("你可以拼出這些數字: ") for i in range(112):if== snum :i 需要的火柴棒數小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。細化問題:如何計算一個自然數需要的火柴棒總數?=例如:14需要多少根火柴棒?下標f = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 ]1 4f [ 4 ] 4+f [ 1 ] 26求出每一位上(個位、十位......)的數所用的火柴棒數在相加。小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。細化問題:如何計算一個自然數需要的火柴棒總數?小挑戰細化問題:如何計算一個自然數需要的火柴棒總數?num=int(input(“請輸入一個數:“)) f=[6,2,5,5,4,5,6,3,7,6]total=0while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)# 輸入一個自然數# 0-9的數字分別需要多少根小棒# 火柴棒總數變量賦初值# 取num的個位數# 所需火柴棒數累加# 去掉num的個位有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。細化問題:如何計算一個自然數需要的火柴棒總數?num=int(input(“請輸入一個數:“))f=[6,2,5,5,4,5,6,3,7,6]total=0while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)測試數據:14,108,0小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。細化問題:如何計算一個自然數需要的火柴棒總數?num=int(input(“請輸入一個數:“))f=[6,2,5,5,4,5,6,3,7,6]total=0while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)測試數據:14,108,0小挑戰有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。細化問題:如何計算一個自然數需要的火柴棒總數?num=int(input(“請輸入一個數:“)) f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)測試數據:0,50,100# 判斷輸入數字為0時的特殊情況有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。面對一些復雜的問題,可以采用自頂向下、逐步細化的方法編程解決復雜問題的思想與方法面對一些復雜的問題,可以采用自頂向下、逐步細化的方法有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。編寫代碼時,可以運用函數實現化繁為簡、分而治之。if== snum :print ( i )i需要的火柴棒數snum=6print("你可以拼出這些數字: ") for i in range(112):num=int(input(“請輸入一個數: “))f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10print(total)#求解一個自然數需要的火柴棒總數編程解決復雜問題的思想與方法函數函數可分為系統函數和用戶自定義函數兩種類型。系統函數即函數庫中的標準函數。在前面單元使用過的print()和input()函數都是系統函數。自定義函數基本格式:def 函數名(參數): #函數說明語句或語句組(函數體)return 返回值參數是用來向函數傳遞值的,當有多個參數時, 各 個參數之間用逗號分隔開。函數執行完成后,由return語句將表達式值返回給調用者,結束函數。 函數的調用采用函數名(參數)的方式。數學運算類函數;數據轉換類函數;字符串操作類函數;輸人輸出函數;文件操作類函數;其他類函數。函數的定義與調用print(total)#求解一個自然數需要的火柴棒總數定義函數函數名參數def match_num(num):num=int(input(“請輸入一個數: “)) f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10return total返回值函數體案例分析:用自定義函數求n!def factorial(n): #自定義函數名為factorial,有一個參數為ns=1for i in range(2,n+1):s=s*ireturn s #函數返回值為 s#調用factorial函數total=factorial(4)print(total)print(total)#求解一個自然數需要的火柴棒總數def match_num(num):num=int(input(“請輸入一個數: “)) f=[6,2,5,5,4,5,6,3,7,6]if num==0:total=f[0] else:total=0 while (num>0):x=num % 10 total=total+f[x] num=num//10return total#主程序snum=6print("你可以拼出這些數字: ") for i in range(112):if match_num( i ) == snum : print ( i )函數的定義與調用三、調用函數通過函數名即可調用函數先聲明、后調用參數傳遞要對應測試程序:練習:求解 1! + 2! + 3! + 4! ……+ 100!(可參照課本P42)運用函數解決問題調用函數自定義函數【運行結果】ü代碼復用ü模塊化設計一、面對一些復雜的問題,可以采用自頂向下、逐步細化的方法二、編寫代碼時,可以用函數實現化繁為簡、分而治之三、運用函數解決問題,必須先定義再調用本課小結自定義函數主程序疑問一:程序遇到函數時執行過程是怎樣的?有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。疑問二:定義函數和調用函數的參數有什么不同?定義函數match_num(num)中的num為形參調用函數match_num( i )中的 i 為實參多個參數時形參與實參的個數和順序,必須保持一致,每個參數之間用逗號隔開。參數也可以沒有,但括號不能省略。有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。【范例程序】def plus( a, b ):# 自定義函數求2個參數的和s = a + breturn s# 調用plus函數 total = plus( 10, 20 ) print (total)形參實參返回結果】?【運行結果 30有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。疑問二:定義函數和調用函數的參數有什么不同?定義函數match_num(num)中的num為形參調用函數match_num( i )中的 i 為實參退出函數return [參數] ,可以將結果返回給調用方。多個參數時,每個參數之間用逗號隔開。如果沒有參數,則return語句返回None。疑問二:定義函數和調用函數的參數有什么不同?有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。求解 1! + 2! + 3! + 4! ……+ 100!(可參照課本P42)自定義函數主程序練習講解求解 1! + 2! + 3! + 4! ……+ 100!(可參照課本P42)形參實參練習講解求解 1! + 2! + 3! + 4! ……+ 100!(可參照課本P42)返回結果練習講解求解 1! + 2! + 3! + 4! ……+ 100!(可參照課本P42)【運行結果】練習講解 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫