資源簡介 (共26張PPT)復習鞏固順序結構分支結構計算機解決問題的一般過程算法的三種基本結構循環結構把大象裝進冰箱需要幾步1、打開冰箱2、裝進大象3、關閉冰箱把大象裝進冰箱需要幾步如何打開冰箱?如何裝進大象?如何關閉冰箱?檢查電源是否接通啟動冰箱打開拉手確定體型確定體重確定··· ···搬進冰箱保持電源暢通再次檢查關閉拉手把大象裝進冰箱需要幾步如何打開冰箱?如何裝進大象?如何關閉冰箱?三個模塊中又需要做流程圖,再細分,每個步驟又可以細化做流程圖,因此用模塊化的思想來說,這三個步驟各是三個模塊,實現三個功能,而每個功能組合,是完整的主題任務方案。2.4 可以復用的代碼項目: 解決火柴棒擺數字問題活動1 用流程圖表述問題解決的思路有6根火柴棒,列出所有能擺出的自然數,要求火柴棒正好用完。思考:6根火柴棒能擺放的最大數是多少?任務一 用自定義函數實現火柴棒擺數字問題如何計算一個數需要多少根火柴棒呢 數字 0 1 2 3 4 5 6 7 8 9需要的 火柴棒6 2 5 5 4 5 6 3 7 6可以用6根火柴棒擺放的數字,分別是、 、 、 、 、 、 。069144177111要擺出106這個數字需要多少根火柴棒?怎么計算?有6根火柴棒,列出所有能擺出的自然數要求火柴棒正好用完。分析問題:如何讓計算機找出這個數字中的所有位數上的數字呢?想一想,如果我們想得到125的個位上的5,那種運算可以實現?除?整數?還是取模?125 % 10 = 5我們定義一個變量digit來接受取模運算的結果,用tens來接受整除的結果digit1=125%10tens1=125//10digit2=tens1%10tens2=tens1//1051221設計算法:如何讓計算機找出這個數字中的所有位數上的數字呢?例:123123%10 3123//10 1212%10 212//10 11%10 11//10 0實現方法:1、將這個數除以10求余(取模),求得個位數2、將這個數除以10取整數3、重復第1和第2步驟,直到這個數為0代碼實現:如何讓計算機找出這個數字中的所有位數上的數字?list=[6,2,5,5,4,5,6,3,7,6]數字 0 1 2 3 4 5 6 7 8 9需要的 火柴棒 6 2 5 5 4 5 6 3 7 6num=int(input("請輸入0-111之間的任意數字:"))s=0while (num>0):i=num % 10s=s+list[i]num=num//10設計函數:計算擺出一個數字需要的火柴棒數自定義函數match-num(num)list=[6,2,5,5,4,5,6,3,7,6]S=0i=num%10num>0s=s+list==[i]num=num//10輸出s結束是否def macth_num(num):list=[6,2,5,5,4,5,6,3,7,6]s=0while (num>0):i=num % 10s=s+list[x] num=num//10print(s)代碼實現:計算6根火柴棒能擺出的數字開始sum=6i=0i<=111i=i+1輸出i結束是否Match_num(i)==sum 是否sum=6i=0while (i<=111):if(Match_num(i)==sum):print(i)i=i+1else:i=i+1調用函數函數1、概念:將一組語句用一個名字封裝起來2、分類系統函數函數庫中的標準函數,是程序設計語言或操作系統提供給用戶的一系列已經編好的程序。print( ) input( )max( ) min( )自定義函數用戶自定義函數用戶自己編寫的一段程序。常見系統函數有以下幾種:數學運算類函數數據轉換類函數字符串操作類函數輸入輸出函數文件操作類函數其他函數函數3、函數定義與使用def 函數名(參數):#函數說明語句或語句組return 返回值定義函數的基本格式:向函數傳遞值,多個參數用逗號隔開將表達式的值返回給調用者重復使用的代碼冒號縮進函 數 名參 數函 數 體返 回 體同變量命名規則4、函數調用def factorial(n):s=1for i in range(2,n+1):s=s*ireturn s#調用factorial函數total=factorial(4)print(total)采用函數名(參數)的方式因為出現def,所以跳過因此,這一行才是主程序的第一行,從這里開始執行。程序自上而下逐行執行這里調用函數,參數n變成4試一試1.在 Python 語言中,創建自定義函數的語法規范是( )。A.del函數名(參數): B.def函數名(參數):C.define函數名(參數): D.sub函數名(參數):2.一下程序的輸出錯誤的是( )A.81 7 B. 4 4 C.12 7 D.hellodef mypow(x,y=2):return x**y,x+yprint(“hello”)a,b=mypow(3,4)print(a,b)BA試一試def factorial(n):#求n!s=1for I in range(2,n+1):s=s+ireturn s#調用factorial函數total=factorial(4)print(total)代碼復用的常見方法函數模塊math模塊導入模塊模塊中的函數包含一些常用的數學函數sin() cos()sqrt() abs()使用函數模塊名.函數名()例:math.sqrt()import 模塊名例:import math鞏固提升1.下列代碼的輸出結果是什么?( )def sum(a,b):c=a+breturn cprint(sum(4,5))A.4 B.5 C.9 D.1C鞏固提升1.下列代碼的輸出結果是什么?( )def sum(a,b):c=a+breturn cprint(sum(4,5))A.4 B.5 C.9 D.1C鞏固提升def f(n):s=1for i in range(2,n+1):s=s*ireturn sx=int(______________________)sum=0for j in range(__,_____):sum=__________print(sum)計算1!+2!+3!+......+(x-1)!+x! (x由鍵盤輸入)input(“請輸入x:”)1x+1sum+f(j)鞏固提升def shengxiao(year):#求生肖zodiac=[“鼠”,“牛”,“虎”,“兔”,“龍”,“蛇”,“馬”,“羊”,“猴”,“雞”,“狗”,“豬”]index=(year-1972)%12return zodiac=[ index]P45 擴展練習請編寫程序,實現輸入一個農歷年份(>=1900),輸出該年對應的生肖,直到輸入0結束,運行結果如圖2.4.5所示。#以下為主程序myyear=int(input(“請輸入農歷年份,輸出0結束:”))while myyear!=0print(“生肖是:”,shengxiao(myyear))myyear=int(input(“請輸入農歷年份,輸入0結束:”))鞏固提升1.下列代碼的輸出結果是什么?( )def sum(a,b):c=a+breturn cprint(sum(4,5))A.4 B.5 C.9 D.1C課堂小結可以復用的代碼函數系統函數,如input()、print()用戶自定義函數def function(參數)語句或語句組返回值函數調用——通過函數名調用共享代碼的發布模塊的導入使用import模塊名稱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的個位 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫