版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)(python語言描述)任務(wù)1.1圖說數(shù)據(jù)結(jié)構(gòu)任務(wù)1.1圖說數(shù)據(jù)結(jié)構(gòu)任務(wù)1.2設(shè)計“猴子分桃”算法pptx任務(wù)2.1用Python語言編寫“購買打折票”小程序任務(wù)2.2用Python數(shù)據(jù)結(jié)構(gòu)技術(shù)實現(xiàn)“統(tǒng)計單詞頻率”任務(wù)3.1用線性表技術(shù)實現(xiàn)“運動員得分排序”任務(wù)3.2用棧和隊列技術(shù)實現(xiàn)“括號找搭檔”任務(wù)3.3用串技術(shù)實現(xiàn)“數(shù)據(jù)加密”任務(wù)3.4用2叉樹技術(shù)實現(xiàn)“比賽分組“任務(wù)3.5用圖技術(shù)實現(xiàn)”設(shè)計游玩路線“任務(wù)4.1用查找算法確定“最小供暖半徑”CONTENTS14253任務(wù)描述學習目標知識學習課后習題任務(wù)實現(xiàn)1任務(wù)描述PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/PPT論壇:
1任務(wù)描述任務(wù)主題TaskTopic閱讀本節(jié)內(nèi)容,將關(guān)鍵知識概括成關(guān)鍵詞,再用關(guān)鍵詞匯制思維導圖,然后將數(shù)據(jù)結(jié)構(gòu)所涵蓋的基本內(nèi)容做清晰表述。
2學習目標2學習目標提升任務(wù)文檔的閱讀能力;提高分析問題、解決問題的能力;培養(yǎng)精益求精的工匠精神;提高邏輯思維能力掌握數(shù)據(jù)結(jié)構(gòu)的定義;了解數(shù)據(jù)結(jié)構(gòu)的研究對象;了解常用的八種數(shù)據(jù)結(jié)構(gòu)能夠清晰闡述數(shù)據(jù)結(jié)構(gòu)的定義;能夠清晰闡述數(shù)據(jù)結(jié)構(gòu)的研究對象;能夠清晰闡述常用的八種數(shù)據(jù)結(jié)構(gòu);能夠運用思維導圖展示數(shù)據(jù)結(jié)構(gòu)的基本內(nèi)容知識目標能力目標素質(zhì)目標3知識學習3內(nèi)容提要數(shù)據(jù)結(jié)構(gòu)的研究對象常用的八種數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)1.1.1數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)(datastructure)是計算機存儲、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運行或者存儲效率。數(shù)據(jù)結(jié)構(gòu)是帶有結(jié)構(gòu)特性的數(shù)據(jù)元素的集合,它研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的物理結(jié)構(gòu)以及它們之間的相互關(guān)系,并對這種結(jié)構(gòu)定義相適應(yīng)的運算,設(shè)計出相應(yīng)的算法,并確保經(jīng)過這些運算以后所得到的新結(jié)構(gòu)仍保持原來的結(jié)構(gòu)類型。簡而言之,數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,即帶“結(jié)構(gòu)”的數(shù)據(jù)元素的集合。“結(jié)構(gòu)”就是指數(shù)據(jù)元素之間存在的關(guān)系,分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。3知識學習數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的兩個密切相關(guān)的方面,同一邏輯結(jié)構(gòu)可以對應(yīng)不同的存儲結(jié)構(gòu)。算法的設(shè)計取決于數(shù)據(jù)的邏輯結(jié)構(gòu),而算法的實現(xiàn)依賴于指定的存儲結(jié)構(gòu)。3知識學習1.1.2數(shù)據(jù)結(jié)構(gòu)的研究對象01數(shù)據(jù)邏輯結(jié)構(gòu)02數(shù)據(jù)物理結(jié)構(gòu)03數(shù)據(jù)存儲結(jié)構(gòu)1.1.2常用的八種數(shù)據(jù)結(jié)構(gòu)常用的八種數(shù)據(jù)結(jié)構(gòu)1.數(shù)組數(shù)組是一種聚合數(shù)據(jù)類型,它是將具有相同類型的若干變量有序地組織在一起的集合。一維數(shù)組二維數(shù)組常用的八種數(shù)據(jù)結(jié)構(gòu)2.棧棧是一種特殊的線性表,它只能在一個表的一個固定端進行數(shù)據(jù)結(jié)點的插入和刪除操作。常用的八種數(shù)據(jù)結(jié)構(gòu)3.隊列隊列和棧類似,也是一種特殊的線性表。和棧不同的是,隊列只允許在表的一端進行插入操作,而在另一端進行刪除操作。常用的八種數(shù)據(jù)結(jié)構(gòu)4.鏈表鏈表是一種數(shù)據(jù)元素按照鏈式存儲結(jié)構(gòu)進行存儲的數(shù)據(jù)結(jié)構(gòu),這種存儲結(jié)構(gòu)具有在物理上存在非連續(xù)的特點。常用的八種數(shù)據(jù)結(jié)構(gòu)5.樹樹是典型的非線性結(jié)構(gòu),它是包括,2個結(jié)點的有窮集合K。常用的八種數(shù)據(jù)結(jié)構(gòu)6.圖圖是另一種非線性數(shù)據(jù)結(jié)構(gòu)。在圖結(jié)構(gòu)中,數(shù)據(jù)結(jié)點一般稱為頂點,而邊是頂點的有序偶對。如果兩個頂點之間存在一條邊,那么就表示這兩個頂點具有相鄰關(guān)系。常用的八種數(shù)據(jù)結(jié)構(gòu)7.堆堆是一種特殊的樹形數(shù)據(jù)結(jié)構(gòu),一般討論的堆都是二叉堆。堆的特點是根結(jié)點的值是所有結(jié)點中最小的或者最大的,并且根結(jié)點的兩個子樹也是一個堆結(jié)構(gòu)。常用的八種數(shù)據(jù)結(jié)構(gòu)8.散列表散列表源自于散列函數(shù)(Hashfunction),其思想是如果在結(jié)構(gòu)中存在關(guān)鍵字和T相等的記錄,那么必定在F(T)的存儲位置可以找到該記錄,這樣就可以不用進行比較操作而直接取得所查記錄。4任務(wù)實現(xiàn)1.基礎(chǔ)準備要想完成“數(shù)據(jù)結(jié)構(gòu)”主題的思維導圖繪制,首先要將數(shù)據(jù)結(jié)構(gòu)知識點進行分類、匯總,并準備繪制思維導圖的工具,如XMind等。2.繪制思維導圖圖1-1是使用XMind軟件匯制的數(shù)據(jù)結(jié)構(gòu)的思維導圖。3.描述思維導圖數(shù)據(jù)結(jié)構(gòu)的定義是計算機存儲、組織數(shù)據(jù)的方式,其研究對象包括:數(shù)據(jù)邏輯結(jié)構(gòu)、數(shù)據(jù)物理結(jié)構(gòu)、數(shù)據(jù)存儲結(jié)構(gòu)。常用的八種數(shù)據(jù)結(jié)構(gòu)是:數(shù)組、棧、隊列、鏈表、樹、圖、堆、哈希表。實現(xiàn)步驟4任務(wù)實現(xiàn)4任務(wù)實現(xiàn)5習題1.()是計算機存儲、組織數(shù)據(jù)的方式。A.數(shù)據(jù)結(jié)構(gòu)B.集合C.圖D.表2.以下()不是數(shù)據(jù)結(jié)構(gòu)的研究對象。A.數(shù)據(jù)邏輯結(jié)構(gòu)B.數(shù)據(jù)物理結(jié)構(gòu)C.數(shù)據(jù)存儲結(jié)構(gòu)D.數(shù)據(jù)分組結(jié)構(gòu)3.()是一種聚合數(shù)據(jù)類型,它是將具有相同類型的若干變量有序地組織在一起的集合。A.圖B.數(shù)組C.樹5習題Exercises4.棧中沒有數(shù)據(jù)時,稱為()。A.純凈棧B.隊列C.空棧D.堆5.堆是一種特殊的()數(shù)據(jù)結(jié)構(gòu)。A.棧B.樹形C.隊列D.圖形5習題ExercisesTHANKS
數(shù)據(jù)結(jié)構(gòu)(python語言描述)數(shù)據(jù)結(jié)構(gòu)(python語言描述)任務(wù)1.2
設(shè)計“猴子分桃”算法長春職業(yè)技術(shù)學院CONTENTS14253任務(wù)描述學習目標知識學習課后習題任務(wù)實現(xiàn)1任務(wù)描述1任務(wù)描述任務(wù)主題TaskTopic海灘上有一堆桃子,五只猴子來分桃。第一只猴子把這堆桃子平均分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份;第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一。份第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?。
2學習目標2學習目標提升任務(wù)文檔的閱讀能力;提高分析問題、解決問題的能力;提高邏輯分析能力;提高個人條理性理解什么是算法;理解算法的五大特性;掌握評定算法優(yōu)劣的標準;掌握常用算法的表示能夠表述什么是算法;能夠計算常用算法的時間復雜度;能夠用N-S流程圖表示算法知識目標能力目標素質(zhì)目標3知識學習1.2.1算法再把大象放在冰箱里分幾步?打開冰箱門把大象推進冰箱關(guān)上冰箱門1打開冰箱門;2把剛才那頭大象拉出來;3把大象推進冰箱;4關(guān)上冰箱門。分四步解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機制。算法(Algorithm)不同的算法可能用不同的時間、空間或效率來完成同樣的任務(wù)。一個算法的優(yōu)劣可以用空間復雜度與時間復雜度來衡量。算法就是解決一個問題的具體方法和步驟。算法是程序的靈魂。1.2.3評定算法優(yōu)劣的標準01正確性02可讀性03魯棒性04空間復雜度05時間復雜度(1)時間復雜度的概念算法的時間復雜度是指執(zhí)行算法所需要的計算工作量。一般來說,計算機算法的計算工作量是問題規(guī)模n的函數(shù)f(n),算法的時間復雜度也因此記做:T(n)=O(f(n))。問題的規(guī)模n越大,算法執(zhí)行的時間的增長率與f(n)的增長率正相關(guān),稱作漸進時間復雜度??臻g復雜度一般不作考慮,一般都優(yōu)先考慮時間復雜度。時間復雜度(2)時間復雜度的類型時間復雜度表
1-1常見時間復雜度
復雜度標記符號說明常量O(1)操作數(shù)量為常數(shù),與輸入數(shù)據(jù)的規(guī)模無關(guān)對數(shù)O(logn)與輸入數(shù)據(jù)的比例是logn線性O(shè)(n)與輸入數(shù)據(jù)成正比平方O(n2)與輸入數(shù)據(jù)規(guī)模的比例為平方立方O(n3)與輸入數(shù)據(jù)規(guī)模的比例為立方
指數(shù)O(2n)O(kn)O(n!)
快速增長,盡量減少這種代碼常見時間復雜度對比如圖時間復雜度時間復雜度(3)時間復雜度分析案例①常量階。案例:#常數(shù)階n=10num=1num=num+nprint(num)分析:f(n)是指算法中所有語句的執(zhí)行次數(shù),這里f(n)=4,時間復雜度為O(f(n)),所以應(yīng)該為O(4),可是為什么用O(1)表示呢?這里是用常數(shù)1等價替代不受數(shù)據(jù)規(guī)模影響的基本操作。時間復雜度②對數(shù)階O(log2n)。案例:#對數(shù)階n=10i=1whilei<=n:i=i*2print(i)案例:#對數(shù)階n=8count=0whilen>1:n=n//2count+=1print('程序共被執(zhí)行了:',count,'次')分析:程序一共被執(zhí)行了3次,也是x=log2n,即時間復雜度為O(logn)。③線性對數(shù)階O(nlogn)。案例:#線性對數(shù)階n=10forjinrange(n):i=1whilei<=n:i*=2分析:程序一共被執(zhí)行了40次,時間復雜度為O(nlogn)即線性對數(shù)階O(nlogn)。④線性階O(n)。案例:sum=0#只執(zhí)行一次n=10count=0foriinrange(0,n):#執(zhí)行n次count=count+1#執(zhí)行n次分析:上面代碼執(zhí)行的總次數(shù)為:f(n)=1+n+n;所以時間復雜度為T(n)=O(2n+1)。當n趨近于無窮大時,T(n)=O(n)。⑤平方階O(n2)。案例:#平方階舉例n=5sum=0#執(zhí)行一次foriinrange(0,n):#執(zhí)行n次b=2*i#執(zhí)行n次forjinrange(0,n):#執(zhí)行n*n次sum+=i+j#執(zhí)行n*n次分析:上面代碼執(zhí)行的總次數(shù)f(n)=1+n+n+n×n+n×n=2n2+2n+1。因此可以推出時間復雜度T(n)=O(2n2+2n+1)。當n趨近于無窮大時,T(n)的增長主要與n2有關(guān)系,所以通常也將上述代碼的時間復雜度寫為T(n)=O(n2)。⑥立方階O(n3)。案例:n=5count=0foriinrange(n):forjinrange(n):forkinrange(n):count+=1print('程序共被執(zhí)行了:',count,'次')分析:程序執(zhí)行了125次,即53。1.2.4算法的表示方法【例2】用偽代碼描述:從鍵盤輸入3個數(shù),輸出其中最大的數(shù)。如圖1-3所示。偽代碼如下:/*算法偽代碼開始*//*輸入變量A、B、C*//*條件判斷,如果A大于B,則賦值Max=A*//*否則將B賦值給Max*//*如果C大于Max,則賦值Max=C*//*輸出最大數(shù)Max*//*算法偽代碼結(jié)束*/流程圖基本要素:(1)圓邊框表示算法開始或結(jié)束;(2)矩形框表示處理功能;(3)平行四邊形框表示數(shù)據(jù)的輸入或輸出;(4)菱形框表示條件判斷;(5)圓圈表示連接點;(6)箭頭線表示算法流程;(7)Y(是)表示條件成立;(8)N(否)表示條件不成立。輸入x、y,計算z=x÷y,輸出z。順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)1.2.5算法表示實例【例1-4】素數(shù)就是質(zhì)數(shù),通俗點說就是只能被1和其本身整除的數(shù)就是素數(shù)(1除外)。2、3、4、5、6當中,根據(jù)上面的定義,2、3、5都是素數(shù)。請編寫程序,當用戶輸入一個數(shù)值時判斷其是否是素數(shù)并輸出。1.基礎(chǔ)思路判斷一個數(shù)是否是素數(shù),可以按照素數(shù)的定義,判斷是否有能被m整除的數(shù)(除了1和它本身),如果沒有就是素數(shù),如果有就是非素數(shù)。設(shè)計算法的核心就是判斷n是否會被2開始到n-1的數(shù)整除,如果能就輸出“n不是素數(shù)”,如果不能就輸出“n是素數(shù)”。2.繪制N-S流程圖輸入整數(shù)n,判斷它是否為素數(shù)的N-S流程圖如圖所示。3.代碼實現(xiàn)n=int(input("請輸入一個數(shù)"))i=2flag=Truewhilei<=n-1:ifn%i==0:flag=Falsei+=1ifflag:print("%d是素數(shù)"%n)else:print("%d不是素數(shù)"%n)運行結(jié)果:請輸入一個數(shù):1313是素數(shù)1.2.6人工智能與大數(shù)據(jù)中的典型算法01決策樹算法02樸素貝葉斯算法03支持向量機算法04人工神經(jīng)網(wǎng)絡(luò)算法05Boosting與Bagging算法06關(guān)聯(lián)規(guī)則算法07期望最大化算法4任務(wù)實現(xiàn)N-S流程圖1.基礎(chǔ)思路與N-S流程圖繪制p=1如果桃子不能夠被5只猴子分掉,即notdividable(p)
p+=1輸出p圖1-11程序主體對應(yīng)的N-S流程圖N-S流程圖1.基礎(chǔ)思路與N-S流程圖繪制判斷p個桃子能否被5只猴子分掉部分對應(yīng)的N-S流程圖defdividable(p):#五猴分桃問題子算法(p個桃子能否被5只猴子分掉):for_inrange(5):#1)循環(huán)5次,每次執(zhí)行:p-=1#1.1)p=p–1#注釋:吃掉一個桃子ifp%5==0:#1.2)如果p能被5整除,則:p=p//5*4#p=4/5*pelse:#1.3)否則:returnFalse#程序結(jié)束,返回“假”returnTrue#2)程序成功,返回“真”defmonkey_peach():#主函數(shù)p=1whilenotdividable(p):p+=1print(p)monkey_peach()#調(diào)用五猴分桃函數(shù)2.代碼實現(xiàn)5課后習題1.設(shè)n是描述問題規(guī)模的非負整數(shù),下面程序片段的時間復雜度是()。x=2whilex<n/2:x=2*xprint(x)A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)2.求整數(shù)n(n≥0)階乘的算法如下,其時間復雜度是()。deffact(n):ifn<=1:return1returnn*fact(n-1)A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)3.以下程序片段的時間復雜度為()。i=1whilei<=n:i=i*3A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)4.算法的()是指算法需要消耗的內(nèi)存空間。A.魯棒性B.時間復雜度C.空間復雜度D.唯一性5.以下理解正確的是()。A.數(shù)據(jù)結(jié)構(gòu)=程序+算法B.算法=程序+數(shù)據(jù)結(jié)構(gòu)C.程序=算法=數(shù)據(jù)結(jié)構(gòu)D.程序=算法+數(shù)據(jù)結(jié)構(gòu)THANKS
數(shù)據(jù)結(jié)構(gòu)(python語言描述)數(shù)據(jù)結(jié)構(gòu)(python語言描述)任務(wù)2.1用Python語言編寫“購買打折票”小程序長春職業(yè)技術(shù)學院CONTENTS14253任務(wù)描述學習目標知識學習課后習題任務(wù)實現(xiàn)1任務(wù)描述任務(wù)主題TaskTopic某航空公司原價1000元的機票針對小朋友推出打折服務(wù)。3歲及以下兒童機票免費,4~12歲兒童機票半價,12歲以上兒童不享受打折服務(wù)。請編寫小程序,當用戶輸入年齡后,可顯示是否打折及機票價格。
2任務(wù)描述2學習目標2學習目標提升任務(wù)文檔的閱讀能力;提高歸納總結(jié)的能力;提高邏輯分析能力;培養(yǎng)保護知識產(chǎn)權(quán)的意識;培養(yǎng)熱愛科學的精神;提高語言表達能力掌握Python語言基礎(chǔ)能夠安裝Python環(huán)境;能夠用Python語言編寫程序知識目標能力目標素質(zhì)目標3知識學習知識學習
Python是一種強大且簡單的計算機語言,是開源語言??梢栽诠倬W(wǎng)獲得并安裝使用。Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設(shè)計。Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊獭!翱萍际堑谝簧a(chǎn)力”,我國在計算機編程語言方面還有較大進步空間。希望通過我們的努力,可以提升我國在信息技術(shù)領(lǐng)域的不斷進步。2.1.1Python程序安裝Python安裝包網(wǎng)址主頁面如圖2-1所示。1.獲取安裝包在Windows上安裝Python和安裝普通軟件一樣,選擇常用的安裝目錄,單擊“Installnow”按鈕,等待幾分鐘就可以完成安裝,如圖2-2所示。2.安裝Python
圖2-2Python安裝界面安裝完成以后,打開Windows的命令行程序(命令提示符),在窗口中輸入python命令(注意字母p是小寫的),如果出現(xiàn)Python的版本信息,并看到命令提示符>>>,就說明安裝成功了,如圖2-3所示。圖2-
3
測試安裝成功界面2.安裝Python
PyCharm是一種PythonIDE(integrateddevelopmentenvironment,集成開發(fā)環(huán)境),帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,比如調(diào)試、語法高亮、項目管理、代碼跳轉(zhuǎn)、智能提示、自動完成、單元測試、版本控制。此外,IDE還提供了一些高級功能,以用于支持Django框架下的專業(yè)Web開發(fā)。首先獲取PyCharm安裝程序,獲取界面如圖2-4所示,根據(jù)本機操作系統(tǒng)所選需要下載的版本即可。Professional表示專業(yè)版,Community是社區(qū)版,推薦安裝社區(qū)版,因為是免費使用的。然后運行安裝即可,安裝時建議勾選配置環(huán)境變量選項。3.安裝PyCharm
圖2-4PyCharm安裝程序獲取界面
3.安裝PyCharm2.1.22.1.2編寫Python程序1.啟動IDLE集成開發(fā)環(huán)境編寫程序(1)啟動IDLE集成開發(fā)環(huán)境單擊“開始”菜單,如圖2-5所示,選擇“IDLE(Python3.1064-bit)”選項,即可打開IDLE集成開發(fā)環(huán)境。1.啟動IDLE集成開發(fā)環(huán)境編寫程序圖2-5
啟動IDLE
集成開發(fā)環(huán)境菜單(2)編寫程序在Python提示符下直接輸入代碼print("開拓創(chuàng)新精益求精"),并且按下【Enter】鍵。輸入代碼:運行結(jié)果:1.啟動IDLE集成開發(fā)環(huán)境編寫程序print("開拓創(chuàng)新精益求精")開拓創(chuàng)新精益求精2.使用PyCharm編寫程序(1)新建Python文件并編寫程序進入軟件,選中“py”項目然后單擊“File”→“New”→“PythonFile”命令,新建一個Python文件,在其中編寫一個程序,如圖2-6所示。1.啟動IDLE集成開發(fā)環(huán)境編寫程序圖2-6
新建python文件并編寫程序(2)執(zhí)行程序單擊菜單中的“Run”→“Run‘main’”命令,如圖2-7所示。1.啟動IDLE集成開發(fā)環(huán)境編寫程序圖2-7在PyCharm
中執(zhí)行程序在頁面底部的“終端”中顯示運行結(jié)果,如圖2-8所示。1.啟動IDLE集成開發(fā)環(huán)境編寫程序圖2-
8
在PyCharm
中執(zhí)行程序的“
終端
”顯示運行結(jié)果2.1.32.1.3Python語言基礎(chǔ)python中變量很簡單,不需要指定數(shù)據(jù)類型,直接使用等號定義就好。python變量里面存的是內(nèi)存地址,也就是這個值存在內(nèi)存里面的哪個地方,如果再把這個變量賦值給另一個變量,新的變量通過之前那個變量知道那個變量值的內(nèi)存地址存起來,而不是指向之前的那個變量。變量的定義規(guī)則:變量名要見名知意,不能用拼音,不能用中文;變量名只能是字母,數(shù)字,下劃線的任意組合;變量名的第一個字符不能是數(shù)字。1.變量python中定義變量的時候字符串都用引號引起來,此時單引號和雙引號沒有區(qū)別。但是如果字符串中有單引號的話,外面就得用雙引號;如果里面有雙引號,外面就用單引號;如果既有單引號又有雙引號,那么用三引號,三引號也可以多行注釋代碼,單行注釋,使用#。2.單引號、雙引號、三引號Python中數(shù)字類型的變量可以表示任意大的數(shù)值。十六進制以0x開頭,八進制以0o開頭,二進制以0b開頭。Python中可以表示復數(shù)用j來表示虛部complex(a,b)函數(shù)可以形成復數(shù)。real查看實部imag查看虛部conjugate()返回共軛復數(shù)。3.數(shù)字Python使用input函數(shù)接收用戶輸入,使用print輸出。Python提供了input()內(nèi)置函數(shù)從標準輸入讀入一行文本,默認的標準輸入是鍵盤。input可以接收一個Python表達式作為輸入,并將運算結(jié)果返回。input()的使用規(guī)則比較簡單,因為Python在使用變量的時候不需要提前定義,所以我們在需要輸入信息的時候只要給定一個變量名即可直接輸入。輸入代碼:a=input('社會主義核心價值觀是:')print("社會主義核心價值觀是:",a)
輸出結(jié)果:社會主義核心價值觀是:富強民主文明和諧社會主義核心價值觀是:富強民主文明和諧4.輸入與輸出python中條件判斷使用ifelse來判斷,多分支使用ifelif...else,也就是如果怎么怎么樣就怎么怎么樣,否則怎么怎么樣。例【2-1】:某城市公交車乘坐5站以內(nèi)每人收取3元費用,超出5站每人收取5元費用。請輸入乘坐站數(shù)與人數(shù),得出票價。輸入代碼:p_num=int(input("請輸入乘車人數(shù):"))s_num=int(input("請輸入乘坐站數(shù):"))#判斷乘坐站數(shù)是否小于等于5.ifs_num<=5:print('您需付費:'+str(p_num*s_num*3)+'元')else:print('您需付費:'+str(p_num*s_num*5)+'元’)
輸出結(jié)果:請輸入乘車人數(shù):2請輸入乘坐站數(shù):7您需付費:70元5.條件判斷
Python中有兩種循環(huán),while和for,兩種循環(huán)的區(qū)別是,while循環(huán)之前,先判斷一次,如果滿足條件的話,再循環(huán),for循環(huán)的時候必須有一個可迭代的對象,才能循環(huán).python中for循環(huán)很簡單,循環(huán)的是一個可迭代對象中的元素,你這個對象中有多少個元素,就循環(huán)多少次。循環(huán)里面還有兩個比較重要的關(guān)鍵字,continue和break,continue的意思是,跳出本次循環(huán),繼續(xù)進行下一次循環(huán),break的意思是停止循環(huán),也就是說在continue和break下面的代碼都是不執(zhí)行的。6.循環(huán)例【2-2】:計算1+2+...+100的結(jié)果。使用for循環(huán)對應(yīng)代碼:print("計算1+2+...+100的結(jié)果為:")#保存累加結(jié)果的變量result=0#逐個獲取從1到100這些值,并做累加操作i=1foriinrange(101):result=result+iprint(result)運行結(jié)果:計算1+2+...+100的結(jié)果為:50506.循環(huán)使用while循環(huán)對應(yīng)代碼:print("計算1+2+...+100的結(jié)果為:")sum=0n=1whilen<=100:sum=sum+nn=n+1print(sum)運行結(jié)果:計算1+2+...+100的結(jié)果為:50506.循環(huán)4任務(wù)實現(xiàn)age=int(input('請輸入年齡:'))b=1000ifage<=3:print('三歲以下兒童免費。')elifage<=12:print('3-12歲兒童半價,您只需支付:',b*0.5,'元')else:print('12歲以上,請支付全價:',b,'元')1.代碼實現(xiàn)
請輸入年齡:103-12歲兒童半價,您只需支付:500.0元2.顯示結(jié)果
5課后習題1.Python使用()函數(shù)接收用戶輸入。A.inputB.outputC.printD.put2.Python使用()函數(shù)實現(xiàn)輸出功能。A.inputB.outputC.printD.put3.Python中有兩種循環(huán),是()和for。A.whileB.doC.ifD.set習題
4.Python中條件判斷使用來判斷()。A.ifelseB.elseC.forD.while5.以下關(guān)于Python語言的介紹不正確的是()。A.是一款開源語言B.是一款編程語言C.是一種跨平臺的計算機程序設(shè)計語言D.是一款收費的編程語言習題THANKS
數(shù)據(jù)結(jié)構(gòu)(python語言描述)數(shù)據(jù)結(jié)構(gòu)(python語言描述)任務(wù)2.2用Python數(shù)據(jù)結(jié)構(gòu)技術(shù)實現(xiàn)“統(tǒng)計單詞頻率”長春職業(yè)技術(shù)學院CONTENTS14253任務(wù)描述學習目標知識學習課后習題任務(wù)實現(xiàn)1任務(wù)描述任務(wù)主題TaskTopic從文件中讀取一段英文文章,統(tǒng)計其中出現(xiàn)的所有單詞的數(shù)量。英文文章內(nèi)容如下:Acomputersystemhasinput,output,storage,andprocessingcomponents.Theprocessoristhe“intelligence”ofacomputersystem.Asinglecomputersystemmayhavesever-alprocessors.Eachprocessor,sometimescalledthecentralprocessingunitorCPU,has2任務(wù)描述任務(wù)主題TaskTopiconlytwosections.Allprogramsanddatamustbetransferredtoprimarystorageformaninputdevicebeforeprogramscanbeexecutedordatacanbeprocessed.Manynetworksexistintheworld,oftenwithdifferenthardwareandsoftware.2任務(wù)描述任務(wù)主題TaskTopicPeopleconnectedtoonenetworkoftenwanttocommunicatewithpeopleattachedtoadifferentone.Formtheuser’spointofview,theWebconsistsofavast,worldwidecollectionofdocuments.EveryWebsitehasaserverprocesslisteningtoTCPport80forincomingconnectionsfromclients.Afteraconnectionhasbeenestablished,theclientsendsonerequestandtheserversendsonereply.。
2任務(wù)描述2學習目標2學習目標提升任務(wù)文檔的閱讀能力;提高分析問題、解決問題的能力;提高計算機專業(yè)英語的閱讀理解能力掌握字典的應(yīng)用原理;掌握列表的應(yīng)用原理;掌握元組的應(yīng)用原理;掌握集合的應(yīng)用原理能夠?qū)崿F(xiàn)列表的基本操作;能夠?qū)崿F(xiàn)元組的基本操作;能夠?qū)崿F(xiàn)字典的基本操作;能夠?qū)崿F(xiàn)集合的基本操作;能夠運用Python中的四種內(nèi)置數(shù)據(jù)結(jié)構(gòu)實現(xiàn)任務(wù)需求知識目標能力目標素質(zhì)目標3知識學習2.2.1字典字典是Python內(nèi)置的四大數(shù)據(jù)結(jié)構(gòu)之一,是一種可變的容器模型,該容器中存放的對象是一系列以(key:value)構(gòu)成的鍵值對。字典keyvalue唯一的,不可重復,且一旦定義不可修改;可以是任意類型的數(shù)據(jù),可以修改。len()函數(shù)str()函數(shù)pop()函數(shù)計算字典元素個數(shù)可打印字符串輸出刪除字典給定鍵key所對應(yīng)值定義字典格式:d={key1:value1,key2:value2}輸入代碼:d={'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'天涯','海角'},('male','female'):'male'}print(d)#{'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'海角','天涯'},('male','female'):'male'}運行結(jié)果:{'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'海角','天涯'},('male','female'):'male'}注意:字典的key必須是可被hash的,在Python中,可被hash的元素有:int、float、str、tuple;不可被hash的元素有:list、set、dict。如此,出現(xiàn)的錯誤提示如圖2-9所示。1.字典的創(chuàng)建d={'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'天涯','海角'},('male','female'):'male'}#根據(jù)鍵獲取值print(d['name'])#張愛國print(d.get('name'))#張愛國#成員存在則進行訪問if'age'ind:print(d.get('age'))#25'''2.字典的訪問#循環(huán)遍歷訪問forkind:print(k,d[k])'''name張愛國age25hobby['編程','看報',111]location{'天涯','海角'}('male','female')malefork,vind.items():print(k,'-->',v)'''name-->張愛國age-->25hobby-->['編程','看報',111]location-->{'海角','天涯'}('male','female')-->male'''forvind.values():print(v)'''2.字典的訪問張愛國25['編程','看報',111]{'海角','天涯'}male''''''d={'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'天涯','海角'},('male','female'):'male'}print(d['age'])#25d['age']=27print(d['age'])#27'''3.修改字典的值d={'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'天涯','海角'},('male','female'):'male'}deld['name']print(d)#name鍵值對已被刪除d.clear()print(d)#d已被清除,輸出為空的對象{}deldprint(d)#name'd'isnotdefined4.刪除字典的元素d={'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'天涯','海角'},('male','female'):'male'}deld['name']deld['hobby']deld['location']5.增加字典元素print(d)#{'age':25,('male','female'):'male'}
d.update({'name_1':'測試用戶名'})#添加元素值print(d)#{'age':25,('male','female'):'male','name_1':'測試用戶名'}m={'test':'test',1:1}#合并字典值d.update(m)print(d)#{'age':25,('male','female'):'male','name_1':'測試用戶名','test':'test',1:1}d={'name':'張愛國','age':25,'hobby':['編程','看報',111],'location':{'天涯','海角'},('male','female'):'male'}m=d.copy()#淺復制print(m==d)#Trueprint(id(m)==id(d))#Falsen=d#直接賦值print(id(n)==id(d))#True6.字典的復制7.字典的特征01字典中的元素必須以鍵值對形式出現(xiàn)02字典中的元素的鍵不可以重復,值可以重復03字典中元素的鍵不可以修改,值可以修改2.2.2列表#直接創(chuàng)建列表list=["百度","騰訊","阿里巴巴"]print(list)#通過循環(huán)來創(chuàng)建列表a=[1,2,3,4,5,6]b=[i*10foriina]print(b)1.創(chuàng)建列表#列表后面追加元素list=["百度","騰訊","阿里巴巴"]list.append("火狐")print(list)#在指定位置插入元素list=["百度","騰訊","阿里巴巴"]list.insert(1,"360")print(list)2.增加元素#列表后面追加元素list=["百度","騰訊","阿里巴巴"]list.append("火狐")print(list)#在指定位置插入元素list=["百度","騰訊","阿里巴巴"]list.insert(1,"360")print(list)3.刪除元素#刪除尾部元素list=["百度","騰訊","阿里巴巴"]list.pop()print(list)#刪除指定位置的元素list=["百度","騰訊","阿里巴巴"]list.pop(1)print(list)3.刪除元素#刪除列表中某一個確定元素list=["百度","騰訊","阿里巴巴","火狐"]list.remove("火狐")print(list)#刪除列表指定索引位置范圍內(nèi)的元素list=["百度","騰訊","阿里巴巴","火狐"]dellist[1:3]#刪除列表角標1到2的所有數(shù)據(jù)print(list)#獲取列表長度list=["百度","騰訊","阿里巴巴"]print(len(list))#list[1]獲取列表指定索引位置的數(shù)據(jù)print(list[1])#list[1:3]獲取列表指定范圍的數(shù)據(jù)print(list[1:3])#list[:2]獲取列表從索引位為0開始到指定索引位置的數(shù)據(jù)print(list[:2])#list[1:]獲取指定索引位到列表結(jié)尾的數(shù)據(jù)print(list[1:])4.獲取列表信息2.2.3元組元組元組(tuple)是一種序列,因此獲取列表元素的索引方法同樣可以使用到元組
對象中。元組不再是一種可變類型的數(shù)據(jù)結(jié)構(gòu),它只有兩種方法:count()與index()。元組通過英文狀態(tài)下的()構(gòu)成。元組與列表相似,不同之處就在于元組的元素不能被修改。列表使用的是中括號“[]”,元組使用的是小括號“()”。列表屬于可變類型,元組屬于不可變類型。Python內(nèi)部對元組進行了大量的優(yōu)化,訪問和處理速度都比列表快。1.新建元組tuple1=()#創(chuàng)建一個空元組tuple1=(50,)#創(chuàng)建只有一個元素的元組,該元素后的“,”不可省略2.訪問元組的元素tuple1=('physics','chemistry',1997,2000)tuple2=(1,2,3,4,5,6,7)print("tuple1[0]:",tuple1[0])print("tuple2[1:5]:",tuple2[1:5])3.修改元組元組中的元素值是不允許修改的。4.元組拼接tuple1=(12,34.56)tuple2=('abc','xyz')tuple3=tuple1+tuple2print(tuple3)
元組7.判斷某一個元素是否存在元組中tuple=(1,2,3)a=3intupleprint(a)#True8.遍歷元組tuple=(1,2,3)forxintuple:print(x)9.將列表轉(zhuǎn)化成元組list=[1,2,3]tuple=tuple(list)
元組元組的運算#復制操作tuple=(1,)result=tuple*4#元組截取tuple=("百度","騰訊","阿里巴巴")print(tuple[2])#讀取索引值為2的元素print(tuple[-2])#反向讀取,讀取倒數(shù)第二個元素print(tuple[1:])#截取從索引值為1到末尾的所有元素
元組2.2.4集合集合(set)更接近數(shù)學上集合的概念。集合中每個元素都是無序的、不重復的任意對象??梢酝ㄟ^集合去判斷數(shù)據(jù)的從屬關(guān)系,也可以通過集合把數(shù)據(jù)結(jié)構(gòu)中重復的元素減掉。集合可做集合運算,可添加和刪除元素。集合內(nèi)數(shù)據(jù)無序,即無法使用索引和分片。集合內(nèi)部數(shù)據(jù)元素具有唯一性,可以用來排除重復數(shù)據(jù)。集合內(nèi)的數(shù)據(jù):str,int,float,tuple等,即內(nèi)部只能放置可哈希數(shù)據(jù)。2.2.4集合
2.2.4集合1.新建一個集合#新建一個空集合s=set()print(s)#新建一個有元素的集合s={1,2,3,4,5,6}print(s)2.新增集合中的元素#新增集合中的元素s={1,2,3,4,5,6}s.add(7)print(s)4任務(wù)實現(xiàn)將需要統(tǒng)計單詞數(shù)量的文章放進一個文本中,例如,放在“E:\words-original.txt”文件中。1.基礎(chǔ)準備original_words=open(r'E:\words-original.txt','r',encoding='utf-8')#將文本中的句子分割成一個一個單詞,去除標點符號后存入word_list列表中。word_list=[]forlinesinoriginal_words:word=lines.replace('\n','').split('')forreduce_wordinword:#去除單詞中的標點符號
word_list.append(reduce_word.strip(',').strip('?').strip('.'))
#使用字典數(shù)據(jù)結(jié)構(gòu)統(tǒng)計單詞出現(xiàn)的頻率word_dict={}forwinwordlist:ifwinword_dict.keys():word_dict[w]+=1else:word_dict[w]=1#輸出結(jié)果print(word_dict)2.代碼實現(xiàn){'':22,'A':2,'computer':3,'system':3,'has':4,'input':2,'output':1,'storage':2,'and':4,'processing':2,'components':1,'The':1,'processor':2,'is':1,'the':7,'“intelligence”':1,'of':4,'a':5,'single':1,'may':1,'have':1,'several':1,'processors':1,'Each':1,'sometimes':1,'called':1,'central':1,'u-nit':1,'or':2,'CPU':1,'only':1,'two':1,'sections':1,'All':1,'programs':2,'data':2,'must':1,'be':3,'transferred':1,'to':5,'primary':1,'form':1,'an':1,'device':1,'before':1,'can':2,'executed':1,'processed':1,'Many':1,'net-works':1,'exist':1,'in':1,'world':1,'often':2,'with':2,'different':2,'hardware':1,'software':1,'People':1,'connected':1,'one':4,'network':1,'want':1,'communicate':1,'people':1,'attached':1,'Form':1,'user’s':1,'point':1,'view':1,'Web':2,'consists':1,'vast':1,'worldwide':1,'collection':1,'documents':1,'Every':1,'site':1,'server':2,'process':1,'listening':1,'TCP':1,'port':1,'80':1,'for':1,'incoming':1,'connections':1,'from':1,'clients':1,'After':1,'connection':1,'been':1,'established':1,'client':1,'sends':2,'request':1,'reply':1}3.運行結(jié)果5課后習題1.以下()是Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)中的列表。A.listB.tupleC.dictD.set2.以下()是Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)中的字典。A.listB.tupleC.dictD.set3.以下()是Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)中的集合。A.listB.tupleC.dictD.set4.以下()是Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)中的元組。A.listB.tupleC.dictD.set5.字典是一種可變的容器模型,該容器中存放的對象是一系列以()構(gòu)成的鍵值對。A.key:value
B.value:keyC.valueD.value習題任務(wù)實踐——統(tǒng)計單詞頻率
從文件中讀取一段英文文章,統(tǒng)計其中出現(xiàn)的所有單詞的數(shù)量。Acomputersystemhasinput,output,storage,andprocessingcomponents.Theprocessoristhe“intelligence”ofacomputersystem.Asinglecomputersystemmayhaveseveralprocessors.Eachprocessor,sometimescalledthecentralprocessingunitorCPU,hasonlytwosections.Allprogramsanddatamustbetransferredtoprimarystorageformaninputdevicebeforeprogramscanbeexecutedordatacanbeprocessed.Manynetworksexistintheworld,oftenwithdifferenthardwareandsoftware.Peopleconnectedtoonenetworkoftenwanttocommunicatewithpeopleattachedtoadifferentone.Formtheuser’spointofview,theWebconsistsofavast,worldwidecollectionofdocuments.EveryWebsitehasaserverprocesslisteningtoTCPport80forincomingconnectionsfromclients.Afteraconnectionhasbeenestablished,theclientsendsonerequestandtheserversendsonereply.任務(wù)實踐——統(tǒng)計單詞頻率任務(wù)提出任務(wù)分析任務(wù)實踐THANKS
數(shù)據(jù)結(jié)構(gòu)(python語言描述)數(shù)據(jù)結(jié)構(gòu)(python語言描述)任務(wù)3.1用線性表技術(shù)實現(xiàn)“運動員得分排序”長春職業(yè)技術(shù)學院CONTENTS14253任務(wù)描述學習目標知識學習課后習題任務(wù)實現(xiàn)1任務(wù)描述任務(wù)主題TaskTopic順序表中存儲數(shù)據(jù)的空間是連續(xù)的,所以表中任意一個元素都可以被隨機訪問。因此在實際的信息管理應(yīng)用中,順序表更適合處理添加和刪除較少的數(shù)據(jù)。下表是某次體育比賽中部分運動員在兩輪比賽中的得分。我們需要將表中運動員姓名、各輪得分依次輸入順序表中。分別對表中學生按照第一輪得分和第二輪得分進行排序。
2任務(wù)描述2學習目標2學習目標提升Python代碼編寫和調(diào)試能力;提高獨立思考問題、解決問題的能力;培養(yǎng)精益求精的工匠精神。掌握線性表的基本概念、操作和應(yīng)用。能夠理解線性表的基本概念;能夠理解線性表的存儲原理;能夠?qū)崿F(xiàn)順序表的基本操作;能夠?qū)崿F(xiàn)鏈表的基本操作;能夠運用線性表數(shù)據(jù)結(jié)構(gòu)實現(xiàn)任務(wù)需求。知識目標能力目標素質(zhì)目標3知識學習3內(nèi)容提要順序表的基本操作及實現(xiàn)鏈表的基本操作及實現(xiàn)探秘線性表3.1.1探秘線性表1.定義
線性表是由若干個具有相同特性的數(shù)據(jù)元素組成的有限序列。若該線性表中不包含任何元素,則稱為空表,此時其長度為零。當線性表不為空時,表中元素的個數(shù)即為其長度。2.形式可以用以下形式來表示線性表。{a[1],a[2],…,a[i],…,a[n]}其中a[i]表示線性表中的任意一個元素,n表示元素的個數(shù)。表中a[1]為第一個元素,a[2]為第二個元素,依次類推,a[n]為表中的最后一個元素。由于元素a[1]領(lǐng)先于a[2],因此我們稱a[1]是a[2]的直接先驅(qū)元素,a[2]是a[1]的直接后繼元素。我們把線性表中的第一個元素a[1]稱為表頭,最后一個元素a[n]稱為表尾,在線性表中,有且僅有一個表頭元素和一個表尾元素。通常表頭元素沒有直接先驅(qū)元素,表尾元素沒有直接后繼元素。3.邏輯結(jié)構(gòu)下圖是一種典型的線性表的邏輯結(jié)構(gòu)。
4.類型線性表中的元素之間也可以存在某種關(guān)系。如數(shù)字1~20里所有奇數(shù)的排列,可用如下線性表的形式來表示。{2,4,6,8,10,12,14,16,18,20}此時,表內(nèi)元素的值是按照遞增順序來排列的,通常我們稱這種類型的線性表為有序線性表(簡稱有序表),即該表中元素按某種順序進行排列。從嚴格意義上來講,僅當線性表中所有元素以遞增或遞減的順序排列(允許表中存在相同的元素),我們才稱其為有序表;否則,我們均稱其為無序表,元素之間既無遞增也無遞減關(guān)系,示例如下。{2,15,6,74,9,18,13,12,17,126}5.特性線性表有以下特性。(1)線性表中的元素個數(shù)一定是有限的。(2)線性表中的所有元素具有相同的性質(zhì)。(3)線性表中除表頭元素以外,其他所有元素都有唯一的(直接)先驅(qū)元素。(4)線性表中除表尾元素以外,其他所有元素都有唯一的(直接)后繼元素。3.1.2順序表的基本操作及實現(xiàn)1.順序表的概念順序表是指采用順序存儲的方式來存儲數(shù)據(jù)元素的線性表。在順序表中,我們通常將結(jié)點依次存放在一組地址連續(xù)的存儲空間中,由于待存儲空間連續(xù)且每個數(shù)據(jù)元素占用的空間相同,因此可以綜合上述信息并通過計算得出每個元素的存儲位置。給定一個順序表a,其中的數(shù)據(jù)元素為{1,3,5,7},此時我們將其存入一組連接的存儲空間中(假定每個數(shù)據(jù)元素只占用一個存儲單元),如圖3-1-2所示。假定順序表中第一個元素“1”的位置為Locate(a[1]),則第二個元素“3”的位置就可以通過下式得到Locate(a[2])=Locate(a[1])+1假定每個元素所占用的存儲空間為S個存儲單元,當我們只知道第一個元素的位置時,如果我們想求任意一個元素a[i]的存儲位置,就可以使用下太空關(guān)系式來計算順序表a中任意一個元素的存儲位置。Locate(a[i])=Locate(a[1])+(i-1)*S
線性表中的數(shù)據(jù)元素,在存儲空間中是被依次相鄰存放的。從實現(xiàn)的角度來看,由于順序表中元素的數(shù)據(jù)類型不同,因此占用的存儲單元數(shù)目也不同。所以在分配存儲空間時,必須考慮到這一點。 通常編譯器都會分配多于順序表元素所需的存儲空間,以防止在程序運行時,因為存儲空間不夠而導致程序無法正常運行,但這樣通常會導致存儲空間的極大浪費,而使得存儲效率低下。2.順序表的操作創(chuàng)建文件,在該文件中我們定義了一個用于順序表基本操作的SequenceList類。下表中是SequenceList類中的成員函數(shù)表。我們將具體實現(xiàn)__init__(self)、CreateSequenceList(self)、FindElement(self)、InsertElement(self)、DeleteElement(self)、TraverseElement(self)這6個方法。還可根據(jù)自己的需要,自行實現(xiàn)其余方法。2.順序表的操作序號名稱注釋1__init__(self)初始化線性表(構(gòu)造函數(shù))2CreateSequenceList(self)創(chuàng)建順序表3DestorySequenceList(self)銷毀順序表4IsEmpty(self)判斷順序表是否為空5GetElement(self)獲取表中指定位置的元素值6FindElement(self)在表中查找某一指定元素7GetExtremum(self)獲取表中最大值或最小值8InsertElement(self)在表中指定位置插入某一元素9AppendElement(self)在表末尾插入某一元素10SortSequenceList(self)對表進行排序11DeleteElement(self)刪除表中某一元素12VisitElement(self)訪問表中某一元素13TraverseElement(self)遍歷表中所有元素3.創(chuàng)建順序表我們首先調(diào)用SequenceList類的構(gòu)造函數(shù)__init__(self)初始化一個空的順序表,其算法思路如下。(1)創(chuàng)建一個順序表。(2)對該順序表進行初始化。該算法思路對應(yīng)的算法步驟如下。(1)創(chuàng)建一個順序表self.SeqList。(2)將順序表self.SeqList置空。其實代碼如下:#初始化順序表函數(shù)def__init__(self):self.SeqList=[]然后調(diào)用SequenceList類的成員函數(shù)CreateSequenceList(self)創(chuàng)建順序表,其算法思路如下。(1)輸入數(shù)據(jù)元素并存入順序表中。(2)結(jié)束數(shù)據(jù)元素的輸入。(3)成功創(chuàng)建順序表。該算法思路對應(yīng)的算法步驟如下。(1)調(diào)用input()方法接收用戶的輸入。(2)若用戶的輸入不為“#”,則調(diào)用append()方法將其添加至線性表中并轉(zhuǎn)(3)。(3)重復步驟(1)。(4)若用戶的輸入為“#”,則結(jié)束當前輸入并完成線性表的創(chuàng)建。實現(xiàn)代碼如下:#創(chuàng)建順序表
defCreateSequenceList(self):Element=input("請輸入元素(按#結(jié)束):")whileElement!="#":self.SeqList.append(int(Element))Element=input("請輸入元素(按#結(jié)束):")通過執(zhí)行上述代碼,我們創(chuàng)建了一個新的順序表SeqList,表內(nèi)數(shù)據(jù)元素為{‘1001’,‘365’,‘30’,‘11’,‘23’,‘24’,‘3’,‘9’,‘35’},在之后的基本操作中,我們都會基于該順序表進行。4.查找元素通過SequenceList類的成員函數(shù)FindElement(self,SeqList)來查找順序表中的某一元素,其算法思路如下。(1)輸入待查找的元素值。(2)若需查找的元素值存在于順序表中,則輸出其值及所在位置。(3)若需查找的元素不在順序表中,則輸出相應(yīng)提示。該算法思路對應(yīng)的算法步驟如下。(1)調(diào)用input()方法接收用戶輸入的待查找的元素值key,并將其轉(zhuǎn)化為int型。(2)判斷用戶輸入的元素值key是否存在于順序表SeqList中,若結(jié)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 測控 創(chuàng)新實驗課程設(shè)計
- 機械式除塵器課程設(shè)計
- 波分復用課程設(shè)計
- 桌游課課程設(shè)計
- 小型加熱器課程設(shè)計
- 電力電氣課程設(shè)計
- 機器人控制課程設(shè)計題目
- 機械原理課程設(shè)計p字母
- 2024年貨運代理合同代理范圍和責任規(guī)定
- 植物澆灌系統(tǒng)課程設(shè)計
- 四川省達州市宣漢縣2023-2024學年八年級上學期期末數(shù)學試題含答案解析
- 《物聯(lián)網(wǎng)應(yīng)用技術(shù)》期末試卷及答案2套
- 工作效率管理培訓課件
- 民事證據(jù)規(guī)則 培訓課件
- 冬季施工階段安全事故案例分析及對策
- 醫(yī)院感染科護士的手術(shù)室感染控制培訓
- 大棚項目施工安全措施計劃方案
- 安徽省合肥市蜀山區(qū)2023-2024學年七年級上學期期末生物試卷
- 變電站消防培訓課件
- TSM0500G(阻燃性) 豐田試驗測試標準
- 疊合板施工工藝及質(zhì)量控制要點
評論
0/150
提交評論