版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Python算法與程序設(shè)計基礎(chǔ)
——中學(xué)信息技術(shù)教師培訓(xùn)專題Python算法與程序設(shè)計基礎(chǔ)計算機(jī)基礎(chǔ)及Python語法特點(diǎn)數(shù)據(jù)類型、操作和運(yùn)算流程控制結(jié)構(gòu)常用函數(shù)與模塊常用算法思想文件及目錄操作面向?qū)ο蟮木幊贪咐劢褂嬎闼季S的項目式教學(xué)教學(xué)策略:以學(xué)定教是智慧課堂的本質(zhì)!/course/?groupId=6479578&sKey=b31fb1246d0971898062086272cd965e一.計算機(jī)基礎(chǔ)及Python語法特點(diǎn)計算機(jī)系統(tǒng)組成為什么要學(xué)Python?解釋器及語法特點(diǎn)執(zhí)行方式(交互與腳本方式)【帶著問題學(xué)1】/ssu_38ULv7bd8一.計算機(jī)基礎(chǔ)及Python語法特點(diǎn)計算機(jī)系統(tǒng)組成萬物皆編碼:抽象與表示編碼的本質(zhì)就是區(qū)分彼此。要很好的利用計算機(jī)解決問題至少要掌握它的一門語言練習(xí)題1(1)下列關(guān)于Python的說法不正確的是()。A.Python語言數(shù)據(jù)類型是動態(tài)的
B.Python是免費(fèi)開源的編程語言C.Python是編譯型高級語言
D.Python是解釋型高級語言(2)計算機(jī)解決問題所需要的程序和數(shù)據(jù)是存儲在()。A.CPUB.運(yùn)算器C.存儲器D.控制器(3)我們使用的Java、C、Python等高級程序語言寫的計算機(jī)程序,都需要被編譯或解釋成()代碼才能運(yùn)行。A.二進(jìn)制B.十進(jìn)制C.十六進(jìn)制D.英文字母(4)某4位二進(jìn)制數(shù)1
10,其中有一位看不清了,則可能與這個二進(jìn)制數(shù)相等的十進(jìn)制數(shù)是()。A.9或13B.11或14C.10或13D.10或14思考題5.【多選】所有數(shù)據(jù)信息存儲在計算機(jī)中都是二進(jìn)制數(shù)碼,二進(jìn)制的一個位(bit,譯為比特)。一個二進(jìn)制位只能表示1或0兩種狀態(tài),要表示更多信息,就要把多個位組合成一個整體,一般以8位二進(jìn)制組成一個基本單位稱為字節(jié)(Byte,簡計為B)。一個ASCII碼占用一個字節(jié),一個漢字占用兩個字節(jié),那么字符串“AB12c”占用()。A.5bB.40bC.10BD.5B一.Python語法特點(diǎn)為什么要學(xué)Python?Python已經(jīng)成為最受歡迎的程序設(shè)計語言之一,其主要優(yōu)勢有:(1)Python是面向?qū)ο蟮摹討B(tài)數(shù)據(jù)類型的解釋型語言,同時有面向過程和面向?qū)ο缶幊谭绞健ython省去了變量聲明的過程,程序運(yùn)行的過程中自動決定對象的類型。在Python3后,變量可以存放任意大小的整數(shù),只有內(nèi)存不夠,沒有數(shù)據(jù)溢出,不會像其他語言那樣受到溢出問題的困擾,降低了學(xué)習(xí)門檻。(2)Python使用縮進(jìn)語法格式,使得語法簡單、風(fēng)格清晰、嚴(yán)謹(jǐn)易學(xué),它能讓用戶編寫出更易讀、易維護(hù)的代碼,能讓開發(fā)者、分析人員和研究人員在項目中更好地合作。(3)Python代碼效率高,實(shí)現(xiàn)相同功能,Python語言的代碼行只相當(dāng)于其他語言的1/10~1/5。(4)Python真正的魅力在于它的計算生態(tài),擁有豐富的擴(kuò)展庫,常被戲稱為膠水語言,能夠把用其他語言制作的各種模塊很便捷地聯(lián)結(jié)在一起,可以輕易完成各種高級任務(wù)。一.Python語法特點(diǎn)為什么要學(xué)Python?(5)Python完全免費(fèi),眾多開源的科學(xué)計算庫都提供了Python的調(diào)用接口,用戶可以在任何計算機(jī)上免費(fèi)安裝Python及其絕大多數(shù)擴(kuò)展庫。在國內(nèi)外及各領(lǐng)域,如卡內(nèi)基梅隆大學(xué)的編程基礎(chǔ)、麻省理工學(xué)院的計算機(jī)科學(xué)及編程導(dǎo)論都在使用Python語言講授;如著名的計算機(jī)視覺庫OpenCV、三維可視化庫VTK、醫(yī)學(xué)圖像處理庫ITK等眾多開源的科學(xué)計算軟件包也都提供了Python的調(diào)用接口。我國普通高中信息技術(shù)新教材各個模塊均選擇Python及其庫來進(jìn)行教學(xué)實(shí)現(xiàn),如表1.1所示。Python作為一門面向?qū)ο蟮母呒壘幊陶Z言,已成為人工智能、大數(shù)據(jù)科研人員的首選語言之一。從云端、客戶端,到物聯(lián)網(wǎng)終端,再到人工智能,Python應(yīng)用無處不在,如當(dāng)下火熱全球的ChatGPT就是用Python實(shí)現(xiàn)的。在人工智能逐漸普及的當(dāng)下,選用Python、學(xué)習(xí)Python,不僅可以培養(yǎng)信息技術(shù)學(xué)科核心素養(yǎng),也將為學(xué)生終身發(fā)展提供無限可能。Python讓小學(xué)生到博士生都有可學(xué)的東西Python語言是高初中信息技術(shù)教學(xué)的基礎(chǔ)和關(guān)鍵基礎(chǔ)不牢,地動山搖!高中教材所有版本教材各模塊主要以Python語言及其庫為來實(shí)現(xiàn)。一.Python語法特點(diǎn)——解釋器示范講解解釋器DOS命令行:
py或pythonIDLE安裝注意一.Python語法特點(diǎn)——解釋器一.Python語法特點(diǎn)——解釋器
除了知道Python的簡單易學(xué)、代碼規(guī)范高效、免費(fèi)開源等特點(diǎn)外,還應(yīng)注意以下特點(diǎn):Python嚴(yán)格區(qū)分大小寫Python不是編譯型語言,而是解釋型語言。在交互模式下可以不輸入打印語句,解釋器會自動打印表達(dá)式的結(jié)果。Python變量不需要申明數(shù)據(jù)類型,是動態(tài)數(shù)據(jù)類型的語言變量可以存放任意大小的整數(shù),只有內(nèi)存不夠,沒有數(shù)據(jù)溢出二.數(shù)據(jù)類型、操作和運(yùn)算數(shù)值(整數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù))字符串布爾型高級數(shù)據(jù)類型(列表、元組、集合與字典)以學(xué)定教:數(shù)據(jù)類型、操作和運(yùn)算【帶著問題學(xué)2】二、數(shù)據(jù)類型、操作和運(yùn)算/ssu_38XPsf103二.數(shù)據(jù)類型、操作和運(yùn)算數(shù)值類型是計算機(jī)編程中常用的數(shù)據(jù)類型之一,用于表示數(shù)值。在Python中,常見的數(shù)值類型包括整數(shù)(int)、浮點(diǎn)數(shù)(float)和復(fù)數(shù)(complex)。數(shù)值類型的基本操作和運(yùn)算:四則運(yùn)算(+、-、*、/),取余運(yùn)算(%),冪運(yùn)算(**),二.數(shù)據(jù)類型、操作和運(yùn)算復(fù)數(shù)的操作與運(yùn)算實(shí)部和虛部:可以使用.real屬性獲取復(fù)數(shù)的實(shí)部,使用.imag屬性獲取復(fù)數(shù)的虛部。例如:num1=2+3j,print(num1.real)
#輸出:2.0print(num1.imag)#輸出:3.0復(fù)數(shù)的共軛:可以使用.conjugate()方法獲取復(fù)數(shù)的共軛。例如:num1=2+3jnum2=num1.conjugate()print(num2)#輸出:2-3j復(fù)數(shù)的運(yùn)算:可以對復(fù)數(shù)進(jìn)行加法、減法、乘法和除法運(yùn)算。二.數(shù)據(jù)類型、操作和運(yùn)算字符串(String)是一串字符的序列。在Python中,字符串要用一對引號刮起,例如'我愛Python'或'Quotemeonthis'。單引號與雙引號的工作機(jī)制完全相同,但不能是中文標(biāo)點(diǎn),所有Python語句中的標(biāo)點(diǎn)符號都必須是英文標(biāo)點(diǎn)。
單行字符串可以用單引號或雙引號括起。如果是多行字符串,需使用三個引號"""或'''括起來。你可以在三引號之間書寫任何字符。二.數(shù)據(jù)類型、操作和運(yùn)算小貼士:在字符串中,有時需要表示一些特殊的控制字符,如換行、Tab制表符、引號、退格鍵等,這些字符不能直接輸入,只能使用一些特殊字符代替。Python使用反斜杠“\”加一些特殊字符進(jìn)行轉(zhuǎn)義。常用轉(zhuǎn)義字符見下表所示。轉(zhuǎn)義字符描述轉(zhuǎn)義字符描述\續(xù)行\(zhòng)n換行\(zhòng)\反斜杠\\’單引號\”雙引號\a響鈴\b退格\0空白\t水平制表符\v垂直制表符\f換頁\r回車\odd八進(jìn)制數(shù),dd代表字符\xhh十六進(jìn)制數(shù),hh代表字符說明:如果字符串本身需要有類似于“\t”這樣的內(nèi)容,即使“\t”不進(jìn)行轉(zhuǎn)義,只要在字符串前面加上r(或R)即可。如,a=r’aaa\tbbb’,print(a)輸出“aaa\tbbb”二.數(shù)據(jù)類型、操作和運(yùn)算布爾類型用來表示“真”和“假”,分別用標(biāo)識符True和False表示。布爾值也可以轉(zhuǎn)換為數(shù)值,True表示1,F(xiàn)alse表示0。反過來,0表示False,非0數(shù)表示True。所以我們也可以把布爾型歸類到數(shù)值型里。如下圖所示。二.數(shù)據(jù)類型、操作和運(yùn)算列表(list)與我們在操場上列隊時類似,是由一系列按一定順序排列的元素組成。只要用逗號把各個數(shù)據(jù)項使用方括號“[]”括起來就創(chuàng)建了一個列表。例如:ages=[13,14,16,13,15]names=['李曉','張慧','王姍姍']students=['lixiao',14,'zhanghui',15]Python中列表與其他編程語言的數(shù)組非常類似,使用非常靈活。
在操場上列隊時,所有同學(xué)組成了一個有順序的隊列,經(jīng)過報數(shù),每個同學(xué)都有一個不同的數(shù)字,通過這個數(shù)字可以找到相應(yīng)同學(xué)。在Python中,把這個隊列稱為序列,編號稱為索引或下標(biāo)。Python提供兩種索引方式:正數(shù)索引,從0開始遞增,負(fù)數(shù)索引,從-1開始遞減。例如ages[1]、ages[-4]都指向14二.數(shù)據(jù)類型、操作和運(yùn)算對列表的操作1.對列表切片(分片):使用索引可以訪問序列中單個元素,但有時需要訪問序列中指定范圍內(nèi)的元素,即序列的子序列,Python定義了一個稱為切片的操作符[::]來得到子序列。語法格式:[start_index:end_index:step]表示從start_index索引對應(yīng)的元素開始,每隔step個元素取出來一個,直到取到end_index對應(yīng)的元素結(jié)束,但不包括end_index索引位置上的元素。start_index表示起始位置,end_index表示終止位置,step表示步長。例如:li=[1,2,3,4,5,6,7,8,9]li[3::2]#輸出[4,6,8]二.數(shù)據(jù)類型、操作和運(yùn)算創(chuàng)建列表:1.使用賦值語句直接創(chuàng)建語法格式如下:listname=[element1,element2,…]2.創(chuàng)建空列表創(chuàng)建空列表非常簡單,直接使用下面的代碼:listname=[]或listname=list()3.使用list()函數(shù)創(chuàng)建語法格式如下:listname=list(data)其中,data表示可以轉(zhuǎn)換為列表的對象,如range對象、字符串等其他任何可迭代對象。二.數(shù)據(jù)類型、操作和運(yùn)算創(chuàng)建列表:4.列表推導(dǎo)式使用推導(dǎo)式可以快速生成一個列表,是一種運(yùn)用較多而又非常重要的功能,同時也是最受歡迎的Python特性之一。基本語法格式如下:[表達(dá)式for變量in迭代對象]或者[表達(dá)式for變量in迭代對象if條件]例:age=[iforiinrange(1,120)]將創(chuàng)建一個列表,里面的元素分別為1,2,3,...,119,注意不包括120。age=[iforiinrange(1,120)ifi%2==0]將創(chuàng)建一個1到120之間的偶數(shù)列表,注意不包括120。二.數(shù)據(jù)類型、操作和運(yùn)算列表的訪問1.訪問單個元素Python中列表是一種序列,元素是有順序的,都擁有自己的編號,通常情況是通過索引對元素進(jìn)行訪問。如li=[1,1,2,3,5,8],li[0]將訪問列表中第1個元素,li[3]將訪問列表中第4個元素,li[-2]將訪問列表中倒數(shù)第2個元素。2.遍歷列表遍歷是計算機(jī)科學(xué)中的一種重要運(yùn)算,是指依照某種順序?qū)λ性刈鲆淮吻覂H做一次訪問。比如需要找出班級里身高最高的同學(xué),就需要測量每個同學(xué)的身高。測量身高的過程就相當(dāng)于對列表進(jìn)行遍歷。留在后面介紹。二.數(shù)據(jù)類型、操作和運(yùn)算Pyhon內(nèi)置其他數(shù)據(jù)結(jié)構(gòu)略與數(shù)學(xué)中同二.數(shù)據(jù)類型、操作和運(yùn)算【思考題】如果print(s[1])輸出’綠’,那么s不可能是(
)。A.s=(”紅”,”綠”,”藍(lán)”)B.s=”紅綠藍(lán)”C.s=[”紅”,”綠”,”藍(lán)”]D.s={"紅","綠","藍(lán)"}二.數(shù)據(jù)類型、操作和運(yùn)算表達(dá)式與運(yùn)算符變量名不能使用保留字,Python中的變量是一種指向,存儲的是對象的內(nèi)存地址,在不同時刻可以指向不同對象,所以不需要聲明變量的類型(與其他語言不一樣)。在訪問變量時,該變量必須是存在的。如果需要查看變量的類型,可以使用內(nèi)置函數(shù)type(變量名);如果要查看變量的內(nèi)存地址,可以使用id(變量名)。表達(dá)式與數(shù)學(xué)中的代數(shù)式類似,是指由變量和運(yùn)算符號組合而成的式子。特別地,單獨(dú)的一個值或單獨(dú)的變量也是一個表達(dá)式。表達(dá)式中不能含有“=”。例如,3、a、a+b、int(’3’)+8、a>b、aandb、(c==1)or(dise)都是表達(dá)式。a=3+5不是表達(dá)式,它是一條賦值語句,表示將3+5的和賦值給變量a。二.數(shù)據(jù)類型、操作和運(yùn)算表達(dá)式與運(yùn)算符在表達(dá)式“1+2”中,+叫作運(yùn)算符,1、2叫作操作數(shù)。運(yùn)算符的意義是規(guī)定操作數(shù)的運(yùn)算規(guī)則。Python中的運(yùn)算符主要包括算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符。列表如下:算術(shù)運(yùn)算符注:實(shí)例中,a=2,b=4運(yùn)算符描述實(shí)例+兩個對象相加a+b輸出結(jié)果6-得到負(fù)數(shù)或是一個數(shù)減去另一個數(shù)a-b輸出結(jié)果-2*兩個數(shù)相乘或是返回一個被重復(fù)若干次的字符串a(chǎn)*b輸出結(jié)果8/兩個數(shù)相除a/b輸出結(jié)果0.5%除法的余數(shù)a%b輸出結(jié)果2**冪運(yùn)算a**b為2的4次方,輸出結(jié)果16//商的整數(shù)部分7//2輸出結(jié)果3,7.4//2輸出結(jié)果3.0賦值運(yùn)算符運(yùn)算符描述實(shí)例=簡單的賦值運(yùn)算符c=a+b將a+b的運(yùn)算結(jié)果賦值給c+=加法賦值運(yùn)算符c+=a等價于c=c+a-=減法賦值運(yùn)算符c-=a等價于c=c-a*=乘法賦值運(yùn)算符c*=a等價于c=c*a/=除法賦值運(yùn)算符c/=a等價于c=c/a%=取模賦值運(yùn)算符c%=a等價于c=c%a**=冪賦值運(yùn)算符c**=a等價于c=c**a//=取整除賦值運(yùn)算符c//=a等價于c=c//a邏輯運(yùn)算符與關(guān)系運(yùn)算符運(yùn)算符描述實(shí)例and如果a為False,返回False,否則返回b的值aandbor如果a為True,返回True,否則返回b的值aorbnot如果a為True,返回False,否則返回Truenota運(yùn)算符描述實(shí)例==比較對象是否相等(a==b)返回False!=比較兩個對象是否不相等(a!=b)返回True>比較a是否大于b(a>b)返回False<比較a是否小于b(a<b)返回True>=比較a是否大于或等于b(a>=b)返回False<=比較a是否小于或等于b(a<=b)返回True注:實(shí)例中,a=2,b=4位運(yùn)算符運(yùn)算符描述實(shí)例&按位與運(yùn)算符:如果參與運(yùn)算的兩個值的相應(yīng)位都為1,則結(jié)果為1,否則為0(a&b)的值為(00001100)2或(12)10|按位或運(yùn)算符:只要對應(yīng)的二個二進(jìn)位有一個為1時,結(jié)果位就為1。(a|b)的值為(00111101)2或(61)10^按位異或運(yùn)算符:當(dāng)兩對應(yīng)的二進(jìn)位相異時,結(jié)果為1(a^b)的值為(00110001)2或(49)10~按位取反運(yùn)算符:對數(shù)據(jù)的每個二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)?(~a)的值為(11000011)2或(-61)10<<左移運(yùn)算符:對操作數(shù)的二進(jìn)制位全部左移若干位,由<<右邊的數(shù)字指定移動的位數(shù),高位丟棄,低位補(bǔ)0。a<<2的值為(11110000)2或(240)10>>右移運(yùn)算符:對操作數(shù)的二進(jìn)制位(除符號位外)全部右移若干位,由>>右邊的數(shù)字指定移動的位數(shù),符號位不變,高位補(bǔ)0。a>>2的值為(00001111)2或(15)10注:實(shí)例中,a=60,b=13。二進(jìn)制形式:a=(00111100)2,b=(00001101)2成員運(yùn)算符與身份運(yùn)算符>>>a=300>>>b=300>>>aisb#輸出False>>>a==b#輸出True運(yùn)算符描述實(shí)例in如果在指定的序列中找到值返回True,否則返回Falsexiny,如果x在序列y中返回True,否則返回Falsenotin如果在指定的序列中沒有找到值返回True,否則返回Falsexnotiny,如果x不在序列y中返回True,否則返回False運(yùn)算符描述實(shí)例isis是判斷兩個對象是不是指向同一個對象xisy,等價于id(x)==id(y),如果指向的是同一個對象則返回True,否則返回Falseisnotisnot是判斷兩個對象是不是指向不同對象xisnoty,等價于id(x)!=id(y)。如果指向的不是同一個對象則返回True,否則返回False運(yùn)算符的優(yōu)先級運(yùn)算符描述**指數(shù)(最高優(yōu)先級)~、+、-取反、正號、負(fù)號*、/、%、//乘、除、取模、整除+、-加法減法>>、<<右移、左移運(yùn)算符&按位與運(yùn)算符^、|按位異或運(yùn)算符、按位或運(yùn)算符<=、<、>、>=、==、!=比較運(yùn)算符=、%=、/=、//=、-=、+=、*=、**=賦值運(yùn)算符is、isnot身份運(yùn)算符in、notin成員運(yùn)算符not、and、or邏輯運(yùn)算符低高三.IPO流程及控制結(jié)構(gòu)IPO流程順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)【帶著問題學(xué)3】三IPO流程及控制結(jié)構(gòu)/ssu_390zJ13b4三.IPO流程及控制結(jié)構(gòu)基本輸入輸出語句程序的規(guī)模有大有小,無論程序的規(guī)模如何,每個程序都有統(tǒng)一的運(yùn)算模式:輸入數(shù)據(jù)、處理數(shù)據(jù)和輸出數(shù)據(jù),即IPO(InputProcessOutput)方法。IPO不僅是程序設(shè)計的基本方法,也是描述計算問題的方式。1.賦值語句=語法格式:變量名=表達(dá)式功能:將“=”右邊表達(dá)式的值賦給左邊的變量。注意,“==”才表示相等2.input()函數(shù)語法格式:變量名=input([提示信息])功能:接收用戶的鍵盤輸入,返回字符串3.print()函數(shù)語法格式:print([對象][,參數(shù)列表])功能:打印輸出,無返回值順序結(jié)構(gòu)通俗地說,算法是解決某一問題的方法和步驟。算法的描述很多,主要有自然語言、流程圖和偽代碼三種。一個算法必須具有在有限步驟、有限時間內(nèi)實(shí)現(xiàn),而且步驟的表述都應(yīng)該是確定的、沒有歧義的特征。計算機(jī)在解決某個具體問題時,主要有三種情形:順序執(zhí)行所有語句、選擇執(zhí)行部分語句、循環(huán)執(zhí)行部分語句。事實(shí)證明,任何一個能用計算機(jī)解決的問題,都可運(yùn)用這三種基本結(jié)構(gòu)或它們組合來編寫程序。正如被譽(yù)為“計算機(jī)科學(xué)之父”的圖靈所言:計算的本質(zhì)是機(jī)械運(yùn)動。順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),也是最常用的程序結(jié)構(gòu),只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行。它的執(zhí)行順序是從左到右、自上而下,依次執(zhí)行?!纠繌逆I盤上輸入一串字母,然后將小寫字母轉(zhuǎn)換成大寫字母輸出。
x=input()
x=x.upper()
print(x)處理1處理2輸出結(jié)束輸入開始三.IPO流程及控制結(jié)構(gòu):順序結(jié)構(gòu)順序結(jié)構(gòu)程序的規(guī)模有大有小,無論程序的規(guī)模如何,每個程序都有統(tǒng)一的運(yùn)算模式:輸入數(shù)據(jù)、處理數(shù)據(jù)和輸出數(shù)據(jù),即IPO(InputProcessOutput)方法。IPO不僅是程序設(shè)計的基本方法,也是描述計算問題的方式。處理1處理2輸出結(jié)束輸入開始三.IPO流程及控制結(jié)構(gòu):順序結(jié)構(gòu)三.IPO流程及控制結(jié)構(gòu):順序結(jié)構(gòu)順序結(jié)構(gòu)程序的規(guī)模有大有小,無論程序的規(guī)模如何,每個程序都有統(tǒng)一的運(yùn)算模式:輸入數(shù)據(jù)、處理數(shù)據(jù)和輸出數(shù)據(jù),即IPO(InputProcessOutput)方法。IPO不僅是程序設(shè)計的基本方法,也是描述計算問題的方式?!纠}】假設(shè)每個攝像頭都是720p(1280×720像素,24位色)的高清攝像頭,按25FPS(幀每秒)拍攝,編程輸出一天產(chǎn)生的數(shù)據(jù)量。設(shè)計算法(自然語言)第一步,輸入攝像頭數(shù)。第二步,計算一天產(chǎn)生的數(shù)據(jù)量。第三步,輸出一天產(chǎn)生的數(shù)據(jù)量。編寫程序:n=int(input(”請輸入攝像頭數(shù):”))Data=n*24*60*60*25*1280*720*24/8/1024/1024/1024print(“一天產(chǎn)生的數(shù)據(jù)量為:%.1fGB”%Data)處理1處理2輸出結(jié)束輸入開始三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)選擇結(jié)構(gòu)之if語句
選擇結(jié)構(gòu)用于判斷給定的條件,進(jìn)而控制程序的流程。它會根據(jù)某個特定的條件進(jìn)行判斷后,選擇其中一個分支去執(zhí)行。1.if語句if語句的語法格式如下:if表達(dá)式:語句塊
當(dāng)條件表達(dá)式的值為True時,則執(zhí)行語句塊,如果值為False,則不執(zhí)行語句塊,流程圖如右圖所示。有兩點(diǎn)需要注意:一是表達(dá)式后面需要一個“:”;二是語句塊中的每條語句需要具有相同的縮進(jìn)量,縮進(jìn)量的規(guī)范是相對于前面if的位置縮進(jìn)4個空格。選擇結(jié)構(gòu)流程圖條件語句塊真假三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)選擇結(jié)構(gòu)之if語句【例題】分析、實(shí)踐、比較下面兩段代碼的執(zhí)行結(jié)果。代碼1:age=16ifage>18:print('你是成年人’)print('你還不是成年人’)代碼2:age=16ifage>18:print('你是成年人’)print('你還不是成年人’)選擇結(jié)構(gòu)流程圖條件語句塊真假三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)選擇結(jié)構(gòu)之if...else語句2.if…else語句if…else語句語法格式:if表達(dá)式:語句塊1else:語句塊2
這種結(jié)構(gòu)是一種二選一的結(jié)構(gòu),流程圖如右圖所示。根據(jù)表達(dá)式的值,如果值為True,程序執(zhí)行語句塊1,否則執(zhí)行語句塊2。它相當(dāng)于漢語中的“如果……就……,否則……就……”語句。F條件語句塊1語句塊2T選擇結(jié)構(gòu)流程圖三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)選擇結(jié)構(gòu)之if...else語句【例題】假設(shè)某年高考二本劃線500分,請編寫一段代碼判斷某個學(xué)生是否能上二本。程序代碼如下:score=int(input('請輸入學(xué)生成績:'))ifscore>=500:print('能上二本')else:print('不能上二本')F條件語句塊1語句塊2T選擇結(jié)構(gòu)流程圖三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)選擇結(jié)構(gòu)之if...elif...else語句3.if…elif…else語句if…elif…else語句語法:if表達(dá)式1:語句塊1elif表達(dá)式2:語句塊2……else:語句塊N三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)選擇結(jié)構(gòu)之if...elif...else語句【例題】判斷學(xué)生成績的等級,規(guī)則是:成績小于60分為不合格,大于或等于60分小于70分為合格,大于或等于70分小于80分為良好,大于80分為優(yōu)秀。代碼應(yīng)該怎么寫?三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)4.if語句的嵌套語法格式if語句的嵌套是指在if語句的語句塊中,還可以包含一個或多個if語句。if表達(dá)式1:if表達(dá)式2:語句塊1else:語句塊2elif表達(dá)式3:語句塊3
嵌套是計算思維的核心思想之一。很多復(fù)雜問題的解決,都是通過嵌套化繁為簡的。理解嵌套結(jié)構(gòu)只需把里面的if語句當(dāng)成是一條語句即可。雖然在Python中對嵌套的層數(shù)沒有限制,但如果層數(shù)過多會對理解代碼的執(zhí)行邏輯帶來困難,建議不要嵌套較多的層數(shù)。需要注意的是不同級別語句塊的縮進(jìn)量不同。三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)【思考題】高校自主招生政策的不斷完善,為一些具有特長的學(xué)生進(jìn)入理想高校拓寬了渠道,如2016年參加“全國青少年信息學(xué)奧林匹克競賽”獲得省級一等獎,中國人民公安大學(xué)降至投檔線下30分錄取,南開大學(xué)降至投檔線下40分錄取。假設(shè)2016年中國人民公安大學(xué)的投檔線是530分,南開大學(xué)的投檔線是600分。請編寫一段代碼判斷一個學(xué)生可以被哪些高校通過自主招生渠道錄取。輸入要求:從鍵盤輸入學(xué)生高考成績和是否獲得省級一等獎(用空格隔開)輸入樣例:580已獲得輸出樣例:中國人民公安大學(xué)南開大學(xué)輸入樣例:590未獲得輸出樣例:不能通過自主招生渠道錄取三.IPO流程及控制結(jié)構(gòu):選擇結(jié)構(gòu)思考題參考程序代碼如下:score_str,get_str=input('請輸入:').strip().split()score=int(score_str)ifget_str=='已獲得':ifscore>=530-30:print('中國人民公安大學(xué)',end='')ifscore>=600-40:print('南開大學(xué)',end='')else:print('不能通過自主招生渠道錄取')
說明:strip()方法的作用是去掉字符串前后的空白,split()方法的作用是把字符串按指定字符進(jìn)行切片,本例中為按空格切片。第1行的左邊有兩個變量,這是Python中多變量賦值的寫法。三.IPO流程及控制結(jié)構(gòu):循環(huán)結(jié)構(gòu)沒有人喜歡做重復(fù)、枯燥的事情,但計算機(jī)不一樣,它不怕苦也不怕累,無聊的事情可以重復(fù)上千遍,直至追尋到想要的答案。這就是編程解放人類的地方。循環(huán)結(jié)構(gòu)是指在程序中需要反復(fù)執(zhí)行某個或某些操作,直到條件為假或?yàn)檎鏁r才停止循環(huán)的一種程序結(jié)構(gòu)。循環(huán)語句是指控制一段代碼重復(fù)執(zhí)行多次的語句。首先看一個實(shí)際生活中的情景:在體育課堂中,長跑項目通常是在學(xué)校的運(yùn)動場上沿跑道奔跑,只有當(dāng)聽到體育老師吹口哨的聲音時才能停下來,如果體育老師一直不吹口哨,將跑完一圈又一圈……Python中有兩種方式實(shí)現(xiàn)這種循環(huán)結(jié)構(gòu),分別是while循環(huán)和for循環(huán)。下面分別介紹這兩種循環(huán)結(jié)構(gòu)。F條件語句塊T循環(huán)結(jié)構(gòu)流程圖三.IPO流程及控制結(jié)構(gòu):循環(huán)結(jié)構(gòu)1.while循環(huán)while循環(huán)的基本語法:while表達(dá)式:語句塊(循環(huán)體)
其執(zhí)行邏輯是,首先判斷表達(dá)式的值,如果為True則執(zhí)行語句塊,否則不執(zhí)行語句塊,當(dāng)語句塊執(zhí)行完后,再次判斷表達(dá)式的值,如果為True則執(zhí)行語句塊,否則不執(zhí)行語句塊,如此繼續(xù)……。流程圖如右圖所示。與if語句類似,一是表達(dá)式后面需要一個“:”,二是語句塊中的每條語句需要具有相同的縮進(jìn)量,縮進(jìn)量的規(guī)范是相對于前面while的位置縮進(jìn)4個空格。F條件語句塊T循環(huán)結(jié)構(gòu)流程圖三.IPO流程及控制結(jié)構(gòu):循環(huán)結(jié)構(gòu)【例題】用while循環(huán)實(shí)現(xiàn)計算1+2+3+4+…+100的和。代碼如下:sum=0i=1whilei<=100:sum+=ii+=1print(sum)【思考題】請編寫程序求方程2x+y=100在[1,100]的整數(shù)解。F條件語句塊T循環(huán)結(jié)構(gòu)流程圖三.IPO流程及控制結(jié)構(gòu):循環(huán)結(jié)構(gòu)2.for循環(huán)for循環(huán)的基本語法:for變量in對象:語句塊(循環(huán)體)
對象是指有一個或多個元素的序列,如字符串以及列表、元組、集合、字典等對象。其執(zhí)行邏輯是首先從對象中取出第一個元素賦值給變量,執(zhí)行語句塊,然后從對象中取出第二個元素,再執(zhí)行語句塊……直到取完對象中的所有元素時為止。與while循環(huán)類似,語句塊也需要縮進(jìn)。下面看一個打印字符串中每個字符的例子。sentence="Iamastudent"forchinsentence:
print(ch,end=’,’)將輸出:I,,a,m,,a,,s,t,u,d,e,n,t,三.IPO流程及控制結(jié)構(gòu):循環(huán)結(jié)構(gòu)range()函數(shù)介紹:range()函數(shù)是Python的內(nèi)置函數(shù),其作用是生成一個整數(shù)迭代器,經(jīng)常用于for循環(huán)中,語法格式如下:range(start,end,step)start:起始值,默認(rèn)值為0。end:終止值,但不包括這個值。step:步長(兩個數(shù)之間的間隔),默認(rèn)值為1。說明:除參數(shù)end外,其它參數(shù)都可以省略,參數(shù)的個數(shù)可能有1個或2個或3個。break和continue語句:break意為打破、中斷,continue意為繼續(xù)。在Python中這兩個關(guān)鍵字都是用于改變循環(huán)體中語句執(zhí)行順序的。break用于終止當(dāng)前循環(huán)過程,continue用于忽略本次循環(huán)體中后面的語句,直接開始下一次循環(huán)。例如:學(xué)生在運(yùn)動場進(jìn)行長跑比賽的過程中,因?yàn)榉敢?guī)直接退出比賽,就相當(dāng)于使用了break的作用。當(dāng)跑到1圈半的時候,因?yàn)椴门刑卦S直接回到起點(diǎn)從第2圈繼續(xù)開始,就相當(dāng)于使用了continue的作用。三.IPO流程及控制結(jié)構(gòu):循環(huán)結(jié)構(gòu)【思考題】運(yùn)行下面的程序,輸出的是什么?s="ABCD"foriins:fortinrange(2):print(i,end="")ifi=="B":break四.常用函數(shù)與模塊基本輸入、輸出函數(shù)數(shù)據(jù)類型轉(zhuǎn)換等函數(shù)庫函數(shù)自定義函數(shù)【帶著問題學(xué)4】/ssu_3924za9ad四.常用函數(shù)與模塊關(guān)于函數(shù)在計算機(jī)中,函數(shù)是能完成一定功能、可以被重復(fù)使用的代碼塊。1個函數(shù)可以有0個或多個參數(shù),可以有0個或1個返回值。調(diào)用函數(shù)的語法格式如下:funname(para1,para2,…)para1,para2,…這些用“,”分開的叫作參數(shù)。本質(zhì)上,函數(shù)的功能就是將這些參數(shù)根據(jù)需要進(jìn)行相應(yīng)運(yùn)算并返回值。一個函數(shù)的參數(shù)個數(shù)并不總是固定的,如print()函數(shù),可以不傳參數(shù),也可以傳1個或多個參數(shù)。有些函數(shù)的參數(shù)個數(shù)是固定的。如求絕對值函數(shù)abs(),有且只有1個參數(shù)。另外,并不是所有函數(shù)都有返回值,如print()函數(shù)只是打印信息,沒有返回值。掌握函數(shù)的功能和使用方法是學(xué)好編程的關(guān)鍵。四.常用函數(shù)與模塊基本輸入、輸出函數(shù)程序從鍵盤(鼠標(biāo))讀入數(shù)據(jù)、向屏幕輸出信息是最基本的操作,前面我們已經(jīng)用到了輸入、輸出相關(guān)的基本函數(shù)。1.input()函數(shù)功能:接收用戶的鍵盤輸入,返回字符串,語法格式如下:varname=input([prompt])varname:變量,以字符串類型保存輸入結(jié)果。prompt:參數(shù),提示信息,可以省略。在Python交互模式下實(shí)踐體驗(yàn):>>>name=input('請輸入你的名字:')請輸入你的名字:張三>>>name'張三'小貼士:在介紹函數(shù)的語法時,參數(shù)中凡是用“[]”括起來的表示可以省略。四.常用函數(shù)與模塊基本輸入、輸出函數(shù)2.print()函數(shù)功能:打印輸出,無返回值,語法格式如下:print([對象列表][,參數(shù)列表])對象:一個或多個對象,對象可以是值、變量、表達(dá)式。如果有多個變量要使用“,”隔開。end:參數(shù),結(jié)尾符號,默認(rèn)是換行。更多參數(shù),…>>>a=3>>>b=12>>>c=a+b>>>print(a,b,c)#31215>>>print(a,b,c,end='。')#31215。四.常用函數(shù)與模塊數(shù)據(jù)類型轉(zhuǎn)換與其他內(nèi)置函數(shù)盡管Python不需要聲明變量的類型,但有時還是需要進(jìn)行類型轉(zhuǎn)換,比如要計算從鍵盤輸入的兩個數(shù)的和就需要使用int()函數(shù)進(jìn)行轉(zhuǎn)換,否則就會引發(fā)TypeError異常。1.int()函數(shù)功能:把一個數(shù)字或字符串轉(zhuǎn)換成整數(shù)。例:>>>temp=int(3.74)#取整,去掉小數(shù)部分得3,賦值給變量temp>>>type(temp)#<class'int'>>>>temp=int('456')#將字符串型數(shù)字“456”轉(zhuǎn)換成整數(shù)后賦值給變量temp>>>type(temp)#<class'int'>2.eval()函數(shù)功能:計算字符串表達(dá)式,并返回表達(dá)式的值。>>>x=7>>>eval('3*x')#21>>>eval('2+2')#43.chr()函數(shù)功能:將ASCII碼轉(zhuǎn)換為對應(yīng)的一個字符>>>chr(97)#'a'>>>chr(65)#'A'四.常用函數(shù)與模塊常用轉(zhuǎn)換函數(shù)函數(shù)描述int(x)將x轉(zhuǎn)換成整數(shù)類型float(x)將x轉(zhuǎn)換成浮點(diǎn)數(shù)類型complex(real[,imag])創(chuàng)建一個復(fù)數(shù),real為實(shí)部,imag為虛部str(x)將x轉(zhuǎn)換成字符串repr(x)將x轉(zhuǎn)換成表達(dá)式字符串eval(str)計算str中的有效Python表達(dá)式,并返回一個對象chr(x)將ASCII碼x轉(zhuǎn)換為對應(yīng)的一個字符ord(x)將字符x轉(zhuǎn)換為對應(yīng)的ASCII碼hex(x)將整數(shù)x轉(zhuǎn)換為對應(yīng)的十六進(jìn)制字符串oct(x)將整數(shù)x轉(zhuǎn)換為對應(yīng)的八進(jìn)制字符串四.常用函數(shù)與模塊其他內(nèi)置函數(shù)見教程:/ssu_39eqdacd8前面我們使用的print、input這些函數(shù),是編程語言的設(shè)計工程師為我們開發(fā)好的一些函數(shù),我們直接調(diào)用即可,這種函數(shù)叫作內(nèi)置函數(shù)。四.常用函數(shù)與模塊Python提供了許多內(nèi)置函數(shù),不用死記硬背??梢酝ㄟ^dir(__builtins__)查看具有哪些內(nèi)置函數(shù),可以通過help(函數(shù)名)查看具體函數(shù)的使用說明。了解了某個具體函數(shù)的功能及對參數(shù)的要求后,使用形如函數(shù)名(參數(shù)1,參數(shù)2,…)的方式調(diào)用即可。這里需要強(qiáng)調(diào)的是:不需要記住每個函數(shù)對參數(shù)的具體要求,只需要大概了解這些函數(shù)都有哪些功能。在實(shí)際編寫程序時“百度一下”查詢或問ChatGPT即可。四.常用函數(shù)與模塊庫函數(shù)我們有時會說“×××對象的×××方法”,如“字符串對象提供的方法”,為什么不叫“字符串對象提供的函數(shù)”呢?其實(shí)這只是一種習(xí)慣。習(xí)慣上,把與具體對象無關(guān)的稱為函數(shù),把只能作用于特定對象的稱為方法。例如,在str=input().strip().split()中,input()稱為函數(shù),strip()和split()都是字符串對象提供的,只能作用于字符串,strip()、split()就稱為方法。這個語句的執(zhí)行過程是:首先通過input()函數(shù)接收用戶輸入的字符串對象,然后調(diào)用字符串對象的strip()方法去掉前后的空格,得到一個新的字符串,再調(diào)用字符串對象的split()方法分隔字符串,最后將結(jié)果賦值給變量str。四.常用函數(shù)與模塊庫函數(shù)Python的功能很強(qiáng)大,為什么內(nèi)置函數(shù)就那么幾十個呢?為什么連最基本的正弦、余弦函數(shù)都沒有?其實(shí)Python是把很多功能捆綁在了稱為庫(模塊)的對象上面,需要通過模塊來調(diào)用。在安裝Python時已經(jīng)安裝的庫叫作標(biāo)準(zhǔn)庫,需要單獨(dú)下載安裝庫的叫作第三方庫。兩者本質(zhì)上沒有任何差別。下表介紹三個常用標(biāo)準(zhǔn)庫。四.常用函數(shù)與模塊標(biāo)準(zhǔn)庫四.常用函數(shù)與模塊標(biāo)準(zhǔn)庫四.常用函數(shù)與模塊標(biāo)準(zhǔn)庫四.常用函數(shù)與模塊在DOS命令行方式執(zhí)行:pipinstall庫名比如,我們要用wordcloud庫來制作詞云,Python安裝時并沒有安裝,需要單獨(dú)安裝:pipinstallwordcloudpip安裝第三方庫速度太慢怎么辦?可設(shè)置pip從國內(nèi)的鏡像源下載安裝阿里云/pypi/simple/豆瓣/simple/清華大學(xué)/simple/中國科學(xué)技術(shù)大學(xué)/simple/設(shè)置方法,以清華鏡像源為例:臨時使用:pipinstall-i/simple庫名永久設(shè)置:pipconfigsetglobal.index-url/simple第三方庫的安裝四.內(nèi)置函數(shù)與庫函數(shù)庫函數(shù)的使用Python中的模塊其實(shí)就是一個python文件。模塊名稱就是不包含后綴的文件名。不同模塊間可以相互調(diào)用,從而實(shí)現(xiàn)代碼的復(fù)用。不同模塊間相互調(diào)用的前提是要先導(dǎo)入相關(guān)內(nèi)容,需借助import關(guān)鍵字,語法如下:import模塊名#導(dǎo)入整個模塊import模塊名as別名#導(dǎo)入整個模塊,并給模塊取個別名from模塊名import函數(shù)或類#從模塊中導(dǎo)入某一部分內(nèi)容上面兩種import語句的區(qū)別主要有以下幾點(diǎn):前兩種import語句導(dǎo)入整個模塊內(nèi)的所有成員(包括變量、函數(shù)、類等);第三種import語句只導(dǎo)入模塊內(nèi)的指定成員(除非使用form模塊名import*,但通常不推薦使用這種語法)。四.常用函數(shù)與模塊庫函數(shù)的使用【例題】用標(biāo)準(zhǔn)庫海龜繪圖turtle繪制五角星四.常用函數(shù)與模塊自定義函數(shù)函數(shù)(function)是所有程序設(shè)計語言的核心內(nèi)容之一,在前面我們已經(jīng)多次接觸過input()、print()等內(nèi)置函數(shù),是Python工程師已經(jīng)編寫好了,我們可以直接使用。函數(shù)的最大優(yōu)點(diǎn)是增強(qiáng)了代碼的重用性和可讀性,能提高代碼的重復(fù)利用率。我們也可根據(jù)需要自己編寫函數(shù),稱為自定義函數(shù)。兩者在本質(zhì)是一致的,只是編寫人員不一樣而已。自定義函數(shù)的語法def函數(shù)名(參數(shù)列表):['''函數(shù)說明'''][函數(shù)體]函數(shù)體:函數(shù)被調(diào)用時執(zhí)行的功能代碼,由一條或多條語句組成。如果只希望定義一個空函數(shù),可以使用pass語句占位。四.常用函數(shù)與模塊自定義函數(shù)【例題】定義一個對變量加4的函數(shù)。defadd(x):
'''這個函數(shù)的功能是對變量x加4'''
x=x+4
returnx在這里,def是定義函數(shù)的關(guān)鍵字,凡是在定義函數(shù)的地方都需要書寫,add是函數(shù)的名稱,x是參數(shù),語句returnx的作用是返回x的值。但是,這段代碼是不會被計算機(jī)執(zhí)行的,因?yàn)檫@里只是定義而已,相當(dāng)于只是制造了一個具有適當(dāng)功能的工具,這個工具是否發(fā)揮作用,還需要像前面調(diào)用內(nèi)置函數(shù)一樣進(jìn)行調(diào)用,函數(shù)才會被執(zhí)行。四.常用函數(shù)與模塊自定義函數(shù)函數(shù)的調(diào)用函數(shù)的調(diào)用很簡單,使用“函數(shù)名(參數(shù)列表)”即可。參數(shù)列表要與定義函數(shù)時一致。如果函數(shù)有返回值,需要使用形如“value=函數(shù)名(參數(shù)列表)”接收函數(shù)的返回值。比如我們調(diào)用上面創(chuàng)建的函數(shù),就可以使用下面的代碼調(diào)用:
y=add(5)
當(dāng)計算機(jī)執(zhí)行完這條語句后,y的值為9。
return語句
在函數(shù)體中使用return語句,可以使函數(shù)向調(diào)用語句返回值。語法格式如下:
returnvalue
value:返回值,可以是1個或多個用逗號(,)隔開的值。四.常用函數(shù)與模塊局部變量與全局變量局部作用域中的變量叫作局部變量,在函數(shù)內(nèi)部定義的變量都是局部變量,只在函數(shù)內(nèi)部有效,在函數(shù)運(yùn)行之前或在函數(shù)運(yùn)行之后,這些變量都是不存在的。每個函數(shù)具有自己的作用域,因此,即使兩個函數(shù)中存在名字相同的變量,也不是同一個變量。全局作用域中的變量叫作全局變量。在函數(shù)外定義的變量是全局變量,在函數(shù)內(nèi)也可以訪問全局變量?!纠}】訪問函數(shù)內(nèi)部的變量。deffun_test():
l_name='局部變量范例'
print(l_name)fun_test()print(l_name)#顯示錯誤提示:l_name未定義四.常用函數(shù)與模塊局部變量與全局變量【例題】局部變量與全局變量同名。book_name='Python入門與實(shí)戰(zhàn)'deffun_test():
book_name='Python教學(xué)系列'
print(book_name)fun_test()print(book_name)輸出:Python教學(xué)系列Python入門與實(shí)戰(zhàn)四.常用函數(shù)與模塊遞歸函數(shù)
有一種函數(shù)它直接或間接地調(diào)用自己,這種函數(shù)我們稱之為遞歸函數(shù)。
【例題】例如求n?。╪的階乘)。deffunc(n):#自定義了一個函數(shù)func
ifn==1:
return1
else:
returnn*func(n-1)#func函數(shù)體內(nèi)部調(diào)用了自己func
下面以計算4!為例分析程序的執(zhí)行邏輯。func(4) #第1次調(diào)用自己4*func(3) #第2次調(diào)用自己4*(3*func(2)) #第3次調(diào)用自己4*(3*(2*func(1))) #第4次調(diào)用自己,由于n等于1,結(jié)束遞歸
從規(guī)模上看,每遞歸一次相比上次遞歸都應(yīng)有所減少,直到滿足某個條件時就結(jié)束遞歸調(diào)用。在本例中,n等于1就是結(jié)束遞歸的條件。如果一個遞歸函數(shù)中沒有結(jié)束遞歸的條件,遞歸過程將一直繼續(xù)下去,類似于死循環(huán)。四.常用函數(shù)與模塊遞歸函數(shù)
遞歸函數(shù)的優(yōu)點(diǎn)是定義簡單、邏輯清晰,非常適合解決具有遞推關(guān)系的問題。理論上,所有的遞歸函數(shù)都可以寫成循環(huán)的方式,但循環(huán)的邏輯不如遞歸清晰。例如,把計算n!改用循環(huán)實(shí)現(xiàn)。m=1i=1whilei<=n:
m*=i
i+=1五.常用算法思想舉例聚焦算法思想——計算之魂1.抽象與建模思想:石頭剪刀布、警察抓小偷2.分解與分治思想:探秘答題卡識別
(大問題分解成小問題,各個擊破)3.嵌套與枚舉思想:百錢百雞、一道數(shù)學(xué)競賽題速解
4.迭代與遞歸思想:從兔子數(shù)列到漢諾塔問題
5.二分、排序、貪心等:你想我來猜等…【帶著問題學(xué)】五、常用算法思想/ssu_39bR30542思想是思維的結(jié)果把握計算機(jī)科學(xué)精髓,提升學(xué)科育人本領(lǐng)
一個問題要能用計算機(jī)解決,萬物皆編碼(抽象表示),編碼的本質(zhì)是區(qū)分彼此。
通俗的說,算法是解決問題的方法和步驟。它是解決問題的核心,編程是基礎(chǔ),是對算法的“翻譯”,是對算法的計算機(jī)語言的實(shí)現(xiàn)。如果一個人能夠站在計算機(jī)的角度想問題,采用的是計算機(jī)解決問題的方法,他就具有了計算機(jī)的方法論。這是我給學(xué)生出的一個選擇題:決定人工智能發(fā)展的三大要素是()A.數(shù)據(jù)B.算法C.算力D.編程為什么不選編程?一個女生給我的結(jié)論:計算思維的本質(zhì):抽象+自動化
石頭剪刀布游戲設(shè)計
編寫一個人和計算機(jī)玩“石頭剪刀布”游戲程序。游戲規(guī)則:石頭打剪刀,剪刀剪布,布包石頭。用1代表石頭,2代表剪刀,3代表布。程序運(yùn)行時,人輸入1、2、3中的一個數(shù),計算機(jī)從1、2、3中機(jī)隨機(jī)產(chǎn)生一個數(shù),與人輸入的數(shù)比較后輸出輸贏。
輸出輸出樣例:請出拳(石頭1,剪刀2,布3,退出0):1玩家出拳1,電腦出拳1,平局請出拳(石頭1,剪刀2,布3,退出0):2玩家出拳2,電腦出拳3,玩家勝利請出拳(石頭1,剪刀2,布3,退出0):0游戲退出計算思維的本質(zhì):抽象+自動化
石頭剪刀布游戲設(shè)計importrandomwhileTrue:
ren=int(input("請出拳(石頭1,剪刀2,布3,退出0):"))
jsj=random.randint(1,3)
ifren==0:
print("游戲退出")
break
elif(jsj==1andren==3)or(jsj==2andren==1)or(jsj==3andren==2):
print("玩家出拳{},電腦出拳{},玩家勝利".format(ren,jsj))
elifjsj==ren:
print("玩家出拳{},電腦出拳{},平局".format(ren,jsj))
else:
print("玩家出拳{},電腦出拳{},電腦勝利".format(ren,jsj))將人與計算機(jī)隨機(jī)出拳石頭、剪刀、布抽象成1、2、3將游戲規(guī)則抽象建模成關(guān)系運(yùn)算式判斷利用while循環(huán)嵌套if語句實(shí)現(xiàn)自動化判斷輸贏的算法計算思維的本質(zhì):抽象+自動化1、將嫌疑人a、b、c、d抽象編碼為:1、2、3、4,設(shè)小偷編碼為x2、于是可將審問記錄進(jìn)行抽象表示:a說:x!=1b說:x==3c說:x==4d說:x!=43、由于邏輯值True、False分別為1和0,于是已知條件變?yōu)椋ń#?x!=1)+(x==3)+(x==4)+(x!=4)==34、算法(枚舉法):將x取1、2、3、4時,能滿足3的條件等式的x即為小偷編號5、用python的for循環(huán)嵌套一個if語句(形式化)編程實(shí)現(xiàn)自動化輸出:forxinrange(1,5):if(x!=1)+(x==3)+(x==4)+(x!=4)==3:print(“小偷編號為:”,x)計算機(jī)中一切的行為,都可以歸結(jié)于計算。計算機(jī)只能解決可計算、可工程化的數(shù)學(xué)問題!要實(shí)現(xiàn)計算機(jī)計算,萬物皆編碼(抽象與表示),編碼的本質(zhì)是區(qū)分彼此。思考:如果嫌疑人就用a、b、c、d表示,不用1、2、3、4表示,程序應(yīng)該怎樣改寫?五.常用算法思想舉例迭代法迭代法也稱輾轉(zhuǎn)法,是一種不斷用變量的舊值遞推新值的過程,跟迭代法相對應(yīng)的是直接法(或者稱為一次解法),即一次性解決問題。迭代法是用計算機(jī)解決問題的一種基本方法,它利用計算機(jī)運(yùn)算速度快、適合做重復(fù)性操作的特點(diǎn),讓計算機(jī)對一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。也就是說,這種不斷將結(jié)果當(dāng)作變量代入的遞推思想方法,就叫迭代法?!痉撇瞧鯏?shù)列】斐波那契在《計算之書》中提出了一個有趣的兔子問題:假設(shè)一對兔子每個月可以生一對小兔子,一對兔子出生后第2個月就開始生小兔子,則一對兔子一年內(nèi)能繁殖成多少對?五.常用算法思想舉例迭代法deffib(n):f2=f1=1#1、2月兔子數(shù)都是1foriinrange(3,n+1):#從第3月開始f1,f2=f2,f1+f2#每個月兔子數(shù)量是前兩月的和returnf2n=int(input('輸入需要計算的月份數(shù):'))print('兔子總對數(shù)為:',fib(n))輸入輸出樣例:輸入需要計算的月份數(shù):12兔子總對數(shù)為:144五.常用算法思想舉例遞歸法
【復(fù)習(xí)】有一種函數(shù)它直接或間接地調(diào)用自己,這種函數(shù)我們稱之為遞歸函數(shù)。
【例題】例如求n?。╪的階乘)。deffunc(n):#自定義了一個函數(shù)func
ifn==1:
return1
else:
returnn*func(n-1)#func函數(shù)體內(nèi)部調(diào)用了自己func五.常用算法思想舉例遞歸思想
逆向思考——從遞推到遞歸:如果一個人能夠站在計算機(jī)的角度想問題,采用的是計算機(jī)解決問題的方法,他就具有了計算機(jī)的方法論,這就是計算思維。在計算思維中,最重要的是一種自頂向下、先全局后局部的逆向思維,它被稱為遞歸(Recursive)。與之相對應(yīng)的是人類所采用的自底向上、從小到大的正向思維,它被稱為遞推(Iterative)。這一字之差,思維和行事的方式就截然不同了。
遞推是人類本能的正向思維,我們小時候?qū)W習(xí)數(shù)數(shù),從1、2、3一直數(shù)到100,就是典型的遞推。遞推,我們?nèi)菀桌斫?,從小到大,由易到難,由局部到整體。遞歸是逆向思維,遞歸的本質(zhì)是自身結(jié)構(gòu)的嵌套,它是計算思維的最重要思想之一。它有兩個明顯的妙處。第一個妙處是只要解決當(dāng)前一步的問題,就能解決全部的問題。比如計算n!,只要計算(n-1)!,至于(n-1)!復(fù)制同一過程即可,這便是它的第二個妙處。當(dāng)然,這里面有兩個前提條件:一是每一個問題在形式上都是相同的,否則無法通過同一個過程完成不同階段的計算;二是必須確定好結(jié)束條件,否則就成了死循環(huán),永遠(yuǎn)結(jié)束不了。模擬漢諾塔移動算法實(shí)現(xiàn):逆向思考,從整體到局部,遞歸算法:
1、把盤子抽象編號1-n,2、把A柱上n個盤子借助B移動到C的過程抽象成函數(shù)moveT(n,a,b,c)的功能,注意4個參數(shù)的位置重要,字符名稱不重要把n個盤子的塔從A借助中間B移動到C的過程抽象成函數(shù)f(n,a,b,c)封裝起來moveT自身結(jié)構(gòu)的嵌套:每執(zhí)行1次規(guī)模會減小1將disk從源位置a移動到目標(biāo)位置c下面的代碼是我用科大訊飛的星火大模型生成的
判斷是否正確?六.文件及目錄操作文件與目錄操作教材:python文件與目錄操作.PDF【帶著問題學(xué)】/ssu_39dpCe057六.文件及目錄操作文件操作在前面,編寫的程序運(yùn)行結(jié)束后數(shù)據(jù)就會丟失,有時希望將程序的運(yùn)行結(jié)果保存到文件中,也希望處理一些磁盤上已經(jīng)存在的文件。為滿足這種需求,就需要掌握文件及目錄的相關(guān)操作,本章將介紹Python中如何進(jìn)行文件及目錄的操作。對文件的主要操作有創(chuàng)建文件、打開文件、讀取文件內(nèi)容、向文件中寫入內(nèi)容、關(guān)閉文件等。創(chuàng)建和打開文件Python提供了內(nèi)置函數(shù)open(),可用于創(chuàng)建和打開文件?;菊Z法格式如下:file=open(filename[,mode][,buffering][,encoding])其中,filename為文件名稱;mode為打開模式,可選參數(shù);buffering為對文件讀寫的緩存模式,可選參數(shù),值為0、1或大于1的整數(shù),0表示不緩存,1表示緩存,其他值表示緩沖區(qū)的大小,默認(rèn)為緩存模式,encoding為編碼方式,file為文件對象。例:>>>file=open(r'd:\123.txt')#字符串前面的r是使字符串中的\不轉(zhuǎn)義,以只讀模式打開d:\123.txt文件并創(chuàng)建文件對象,用變量file指向該文件對象。六.文件及目錄操作對文件的操作,使用文件對象提供的方法即可。下面介紹mode的取值,見下表。值意義r以只讀方式打開文件,文件的指針將會放在文件的開頭。這是默認(rèn)模式r+打開一個文件用于讀寫。文件指針將會放在文件的開頭rb以二進(jìn)制格式打開一個文件用于只讀。文件指針將會放在文件的開頭,一般用于非文本文件,如聲音文件rb+以二進(jìn)制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭w以只寫方式打開文件,文件原有內(nèi)容會被刪除w+打開一個文件用于讀寫,文件原有內(nèi)容會被刪除wb以二進(jìn)制格式打開一個文件只用于寫入wb+以二進(jìn)制格式打開一個文件用于讀寫a打開一個文件用于追加a+打開一個文件用于讀寫規(guī)律:模式是由r、w、a后面跟+、b、b+組成的。模式中凡是包含r的文件必須存在;模式中凡是包含w的如果文件存在則覆蓋,不存在就創(chuàng)建新文件;模式中凡是包含a的如果文件存在則追加,不存在就創(chuàng)建新文件;模式中凡是包含b的表示以二進(jìn)制格式打開,不包含b的是以文本文件方式打開;模式中凡是包含+的表示用于讀寫。六.文件及目錄操作關(guān)閉文件
當(dāng)一個文件被打開后,對文件操作的結(jié)果將會放到文件緩沖區(qū)中,如增加了新內(nèi)容,如果操作完成后不進(jìn)行關(guān)閉,這些增加的內(nèi)容就不會被寫入文件中,從而造成不必要的破壞,因此要及時關(guān)閉文件。關(guān)閉文件的語法為:file.close(),file表示文件對象。
另一方面,如果在打開文件時或?qū)ξ募牟僮鬟^程中遇到了錯誤,則不能使用file.close()來關(guān)閉文件。為了避免這類問題的發(fā)生,Python提供了with語句來保證不論異常是否發(fā)生,with語句執(zhí)行完畢后文件都能關(guān)閉。with語句的基本語法格式如下:with表達(dá)式as對象:
語句塊例:withopen(r'd:\123.txt','w')asfile:
file.write('人生苦短,我學(xué)Python')無須使用file.close()也可以關(guān)閉文件。建議使用這種方式打開文件進(jìn)行操作。
七.面向?qū)ο蟮木幊贪咐嫦驅(qū)ο蟮木幊填惖膭?chuàng)建與使用數(shù)據(jù)封裝與訪問限制繼承和多態(tài)八.聚焦計算思維的項目式教學(xué)以學(xué)定教——智慧課堂的本質(zhì)聚焦計算思維的項目式教學(xué).PDF一核心素養(yǎng)與學(xué)科核心素養(yǎng)指向核心素養(yǎng)的課程性質(zhì)與理念教育的根本問題:為誰培養(yǎng)人、培養(yǎng)怎樣的人、怎樣培養(yǎng)人?二十大報告關(guān)于教育,擲地有聲:教育、科技、人才是全面建設(shè)社會主義現(xiàn)代化國家的基礎(chǔ)性、戰(zhàn)略性支撐。國家意志學(xué)生核心素養(yǎng),需要價值引領(lǐng)、思維啟迪和品格塑造培養(yǎng)什么樣的人?全面落實(shí)習(xí)近平總書記關(guān)于培養(yǎng)擔(dān)當(dāng)民族復(fù)興大任時代新人的要求,從有理想、有本領(lǐng)、有擔(dān)當(dāng)三個方面,明確新時代新人培養(yǎng)的具體要求。落實(shí)立德樹人根本任務(wù)中國學(xué)生發(fā)展核心素養(yǎng)2017版高中培養(yǎng)目標(biāo)2022版義教培養(yǎng)目標(biāo)新要求
新提法有理想
價值觀念有本領(lǐng)
關(guān)鍵能力有擔(dān)當(dāng)
必備品格未來需要怎樣的國民素養(yǎng)?怎樣培養(yǎng)人?課程建設(shè)的基本遵循
聚焦課程育人本質(zhì),從方向、對象、目標(biāo)、實(shí)施機(jī)制和育人方式五個方面,明確了課程建設(shè)的基本遵循。
1.堅持全面發(fā)展,育人為本
2.面向全體學(xué)生,因材施教
3.聚焦核心素養(yǎng),面向未來
4.加強(qiáng)課程綜合,注重關(guān)聯(lián)
5.變革育人方式,突出實(shí)踐怎樣培養(yǎng)人?課程標(biāo)準(zhǔn)都要聚焦到信息技術(shù)(科技)課程目標(biāo)1.反映數(shù)字時代正確育人方向全面貫徹黨的教育方針,落實(shí)立德樹人根本任務(wù)。發(fā)揮課程育人功能,幫助全體學(xué)生學(xué)會數(shù)字時代的知識積累與創(chuàng)新方法,引導(dǎo)學(xué)生在使用信息科技解決問題的過程中,培育學(xué)生正確的世界觀、人生觀、價值觀,促進(jìn)學(xué)生在數(shù)字世界與現(xiàn)實(shí)世界中健康成長。2.學(xué)科大概念貫穿課程教學(xué)始終以數(shù)據(jù)、算法為信息技術(shù)學(xué)科大概念。3.遴選科學(xué)原理和實(shí)踐應(yīng)用并重的課程內(nèi)容吸納國內(nèi)外信息科技的前沿成果,基于數(shù)字素養(yǎng)與技能培育要求,從信息科技實(shí)踐應(yīng)用出發(fā),注重幫助學(xué)生理解基本概念和基本原理,引導(dǎo)學(xué)生認(rèn)識信息科技對人類社會的貢獻(xiàn)與挑戰(zhàn),提升學(xué)生知識遷移能力和學(xué)科思維水平,體現(xiàn)“科”與“技”并重。信息技術(shù)課程性質(zhì)與理念聚焦核心素養(yǎng)
提升育人本領(lǐng)信息技術(shù)(科技)課程邏輯主線核心素養(yǎng)引領(lǐng)項目式學(xué)習(xí)項目式學(xué)習(xí)習(xí)得核心素養(yǎng)“算法與程序設(shè)計”項目式教學(xué)一般流程聚焦核心素養(yǎng)
提升育人本領(lǐng)有的老師上公開課把大量時間和精力用于突出“社會責(zé)任”教學(xué)。所有學(xué)科都有“社會責(zé)任”要求,不是我們一個學(xué)科的素養(yǎng)要求!不掌握學(xué)科本質(zhì),怎么用學(xué)科能力擔(dān)當(dāng)責(zé)任?核心的核心請問:哪個學(xué)科不需要培養(yǎng)學(xué)生信息意識?何為學(xué)科關(guān)鍵能力?計算思維要素及思維流程核心素養(yǎng)內(nèi)涵從總體目標(biāo)到學(xué)科目標(biāo)二學(xué)科核心素養(yǎng)語文數(shù)學(xué)科學(xué)技術(shù)歷史藝術(shù)體育……?核心素養(yǎng)與學(xué)科核心素養(yǎng)核心素養(yǎng)關(guān)鍵能力、必備品格和價值觀念學(xué)科核心素養(yǎng)信息技術(shù)學(xué)科核心素養(yǎng)信息意識、計算思維、數(shù)字化學(xué)習(xí)與創(chuàng)新、信息社會責(zé)任。核心中的核心計算思維的概念演進(jìn)2006年3月,美國卡內(nèi)基·梅隆大學(xué)計算機(jī)科學(xué)系主任周以真:運(yùn)用計算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計以及人類行為理解等涵蓋計算機(jī)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年江鈴汽車集團(tuán)財務(wù)有限公司招聘筆試參考題庫含答案解析
- 2025個人獨(dú)資企業(yè)金融貸款與擔(dān)保合同2篇
- 2025年度個人二手房買賣定金合同(含交易傭金支付)3篇
- 2025年個人商業(yè)地產(chǎn)租賃合同樣本2篇
- 2025年度個人與企業(yè)間個人住房貸款合同3篇
- 2025年二手車買賣價格評估及調(diào)整合同
- 2025年全球及中國自行車導(dǎo)航設(shè)備行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國企業(yè)合同管理軟件行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年度個人住房公積金貸款合同續(xù)簽范本2篇
- 2024年農(nóng)網(wǎng)配電營業(yè)工(中級工)技能等級認(rèn)證備考試題庫-下(判斷題)
- 開展課外讀物負(fù)面清單管理的具體實(shí)施舉措方案
- 《中國心力衰竭診斷和治療指南(2024)》解讀完整版
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025-2030年中國洗衣液市場未來發(fā)展趨勢及前景調(diào)研分析報告
- 2024解析:第三章物態(tài)變化-基礎(chǔ)練(解析版)
- 北京市房屋租賃合同自行成交版北京市房屋租賃合同自行成交版
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動力學(xué)課件與案例分析
- 《智能網(wǎng)聯(lián)汽車智能傳感器測試與裝調(diào)》電子教案
- 客戶分級管理(標(biāo)準(zhǔn)版)課件
- GB/T 32399-2024信息技術(shù)云計算參考架構(gòu)
評論
0/150
提交評論