2023年江蘇高中信息技術(shù)學(xué)測知識(shí)點(diǎn)精華匯總_第1頁
2023年江蘇高中信息技術(shù)學(xué)測知識(shí)點(diǎn)精華匯總_第2頁
2023年江蘇高中信息技術(shù)學(xué)測知識(shí)點(diǎn)精華匯總_第3頁
2023年江蘇高中信息技術(shù)學(xué)測知識(shí)點(diǎn)精華匯總_第4頁
2023年江蘇高中信息技術(shù)學(xué)測知識(shí)點(diǎn)精華匯總_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1單元初識(shí)數(shù)據(jù)與計(jì)算

1.1我們身邊的數(shù)據(jù)

1、數(shù)據(jù)

在我們身邊存在著各種數(shù)據(jù),如刷公交卡時(shí)刷卡機(jī)顯示的本次扣款金額和卡內(nèi)余

額、電子手表上顯示的日期和時(shí)間、教科書封底下端的國際標(biāo)準(zhǔn)書號(hào)(ISBN)、體育課上

測量的各項(xiàng)運(yùn)動(dòng)成績等。這些數(shù)字都是數(shù)據(jù)。除了數(shù)字以外,還有文字、圖形、圖像、

聲音和視頻等形式。

在日常生活中,有些數(shù)據(jù)是固定不變的。例如,不管圓有多大,它的周長與直徑的

比值總是一個(gè)固定的數(shù),也就是我們常說的圓周率n;有些數(shù)據(jù)是不斷變化的,例如家

庭每天的用電量、國際黃金價(jià)格、氣溫等。有理數(shù)據(jù)是隨機(jī)出現(xiàn)的。比如拋硬幣,是正

面向上還是反面向上是隨機(jī)的。

2、信息

單純的數(shù)據(jù)不能表達(dá)具體的含義,例如我們并不清楚像28和90%這樣的數(shù)值在生活

中的具體意義。在對(duì)數(shù)據(jù)進(jìn)行處理或賦予其具體的情境后,這些數(shù)據(jù)就成了有意義的信

息。28和90%可以分別用于表達(dá)今日的最高氣溫28°C,相對(duì)濕度90%,此時(shí)數(shù)據(jù)就成了

有意義的信息。

數(shù)據(jù)是信息的符號(hào)表示;信息是數(shù)據(jù)的內(nèi)涵,是對(duì)數(shù)據(jù)的語義解釋。數(shù)據(jù)處理就是

把原始數(shù)據(jù)轉(zhuǎn)換成人們所需要的信息的過程。完整的數(shù)據(jù)處理過程一般包括數(shù)據(jù)的采

集、加工、傳輸、存儲(chǔ)、檢索和輸出六個(gè)環(huán)節(jié)。數(shù)據(jù)處理的目的是把數(shù)據(jù)轉(zhuǎn)化成有用的

信息以滿足用戶的需求。

一般而言,不管是什么樣的信息,它們通常都具有一些特征,如載體依附性、價(jià)值

性、時(shí)效性、共享性等。

以天氣預(yù)報(bào)信息為例,該信息不能獨(dú)立存在,需要依附于一定的載體,它可以顯示

在網(wǎng)頁上,也可以顯示在報(bào)紙上,體現(xiàn)了信息的載體依附性;人們可以利用天氣預(yù)報(bào)作

為穿衣或出行的參考,體現(xiàn)了信息的價(jià)值性;天氣預(yù)報(bào)只是預(yù)報(bào)了未來某一特定時(shí)段的

天氣狀況,它會(huì)隨著時(shí)間的推移而變化,體現(xiàn)了信息的時(shí)效性;作為一種資源,天氣

預(yù)報(bào)往往可以被多個(gè)信息接收者接收并且多次使用,這就體現(xiàn)了信息的共享性。

3、知識(shí).

知識(shí)是信息經(jīng)過加工提煉后形成的抽象產(chǎn)物。它表述的是事物運(yùn)動(dòng)的狀態(tài)和狀態(tài)變

化的規(guī)律。可以說,知識(shí)是一類高級(jí)的、抽象的,而且具有普遍適應(yīng)性的信息。

知識(shí)是人類求知活動(dòng)的結(jié)晶。例如,人們發(fā)現(xiàn)感冒的發(fā)生除了與病毒感染有關(guān)外,

天氣條件也是一個(gè)重要因素。冷空氣的人侵,造成大幅度降溫,或者冷空氣經(jīng)過后出現(xiàn)

冷高壓天氣,特別是大氣壓高于1030百帕的晴好天氣,就會(huì)有大批人感冒。感冒指數(shù)的

計(jì)算方法,是經(jīng)專家調(diào)查研究和演算歸納出來的。知識(shí)是認(rèn)識(shí)世界的結(jié)果,同時(shí)也是改

造世界的依據(jù)。

數(shù)據(jù)、信息和知識(shí)可以看作人類對(duì)客觀事物感知的三個(gè)不同階段。數(shù)據(jù)是對(duì)事物屬

性的客觀記錄,信息是經(jīng)過組織的有結(jié)構(gòu)的數(shù)據(jù),知識(shí)是經(jīng)過人的思維整理過的信息、

數(shù)據(jù)、形象、價(jià)值標(biāo)準(zhǔn)以及社會(huì)的其他符號(hào)化產(chǎn)物。

4、數(shù)據(jù)的來源

按照獲取數(shù)據(jù)的渠道,可以將數(shù)據(jù)分為兩類:直接數(shù)據(jù)和間接數(shù)據(jù)。統(tǒng)計(jì)調(diào)查或科

學(xué)實(shí)驗(yàn)通常是數(shù)據(jù)的直接來源,由此得到的原始數(shù)據(jù)一般稱為直接數(shù)據(jù)或一手?jǐn)?shù)據(jù);而

通過查閱資料獲得的數(shù)據(jù)或他人對(duì)原始數(shù)據(jù)處理過的數(shù)據(jù),一般稱為間接數(shù)據(jù)或二手?jǐn)?shù)

據(jù)。例如,我們用溫度計(jì)實(shí)際測量得到的氣溫值是直接數(shù)據(jù),而從網(wǎng)上搜索到的氣溫值

是間接數(shù)據(jù)。

5、數(shù)據(jù)的收集方法

直接數(shù)據(jù)的收集方法有很多,如調(diào)查法、訪談法、觀察法、實(shí)驗(yàn)法等。隨著技術(shù)的

發(fā)展,收集數(shù)據(jù)的手段日益豐富。例如,在農(nóng)田中使用傳感器可以實(shí)時(shí)收集農(nóng)田土壤含

水率,用以指導(dǎo)精確灌溉;利用車載尾氣檢測技術(shù)可以獲取實(shí)時(shí)的動(dòng)態(tài)尾氣數(shù)據(jù),用以

協(xié)助調(diào)整交通策略及城市規(guī)劃;利用中國嫦娥四號(hào)探測器收集月球表面成分的第一手資

料。

間接數(shù)據(jù)一般都已經(jīng)過加工處理,使用起來更加方便。收集間接數(shù)據(jù)的方法也有很

多,如查閱文獻(xiàn)資料、關(guān)注媒體資源、瀏覽權(quán)威網(wǎng)站、利用搜索引擎在網(wǎng)絡(luò)中進(jìn)行檢索、

從相關(guān)數(shù)據(jù)公司購買等。在收集這類數(shù)據(jù)時(shí)要綜合考慮數(shù)據(jù)的時(shí)效性、可信度以及經(jīng)濟(jì)

條件等方面的因素。

6、數(shù)據(jù)分析

數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計(jì)分析方法對(duì)收集來的大量數(shù)據(jù)進(jìn)行分析,提取有用信

息,并形成結(jié)論的過程。

針對(duì)調(diào)查問卷收集的數(shù)據(jù),我們可以分析問卷中不同指標(biāo)的分布、所占比例等情況,

也可以進(jìn)一步對(duì)問卷指標(biāo)進(jìn)行交叉分析,如性別不同,穿衣情況比例是不是也有所差異

等,然后在分析的基礎(chǔ)上得出結(jié)論。很多網(wǎng)絡(luò)調(diào)查平臺(tái)為用戶提供了一些分析功能。

1.2數(shù)據(jù)的計(jì)算

1、計(jì)算

"數(shù)據(jù)"在"運(yùn)算符”的操作下,按"規(guī)則”進(jìn)行的數(shù)據(jù)變換,如"3+3=6""3x2=6",這是簡

單計(jì)算中的算術(shù)運(yùn)算。

通過建立分析模型和設(shè)計(jì)有效的步驟、方法,利用自動(dòng)計(jì)算工具來進(jìn)行規(guī)律預(yù)測和

發(fā)現(xiàn),這是計(jì)算機(jī)領(lǐng)域的計(jì)算。

2、數(shù)據(jù)的排序

利用電子表格軟件排序功能可以依據(jù)關(guān)鍵字對(duì)表中的數(shù)據(jù)進(jìn)行升序或降序排列,從

而更清晰地了解各種分類信息。

3、數(shù)據(jù)的篩選

根據(jù)一定的規(guī)則成批篩選數(shù)據(jù),有助于我們發(fā)現(xiàn)某類特定數(shù)據(jù)蘊(yùn)含的信息。篩選會(huì)

依據(jù)條件顯示需要的數(shù)據(jù),其余的內(nèi)容都會(huì)被隱藏起來。

4、公式和函數(shù)

(1)利用公式計(jì)算

公式以"="開始,由運(yùn)算數(shù)和運(yùn)算符組成,運(yùn)篩數(shù)可以是常量、函數(shù)、單元格或單元格

區(qū)域。例如,在D3單元格中輸入公式“=A3+B3+C3”,就可以計(jì)算A3、B3、C3這三個(gè)單元

格中內(nèi)容的和。

(2)利用函數(shù)計(jì)算

例如,上面的例子可以用SUM函數(shù)完成,方法是在D3單元格中輸入“=SUM(A3:C3)”。

常用函數(shù)如下表

函數(shù)SUMAVERAGECOUNTMAXMIN

功能求和求平均值計(jì)數(shù)求最大值求最小值

5、分類匯總

若要進(jìn)行數(shù)據(jù)的分類匯總,首先要按照分類字段排序,以便將要進(jìn)行分類匯總的行

排列在一起,然后依據(jù)匯總方式計(jì)算選定匯總項(xiàng)。常用的匯總方式有求和、計(jì)數(shù)求平均

值、求最大值、求最小值、求乘積等。

第2單元編程計(jì)算

2.1計(jì)算機(jī)解決問題的過程

1.算法概念:解決問題的方法和步驟,

2.算法特征:有窮性、確切性、輸入項(xiàng)(0個(gè)或多個(gè)輸入),輸出項(xiàng)(算法一定要有

輸出)、可行性(或有效性)。

3.算法分析是對(duì)一個(gè)算法需要多少計(jì)算時(shí)間和存儲(chǔ)空間做定量的分析。

4.通常從正確性、易讀性、健壯性和高效性等4個(gè)方面評(píng)價(jià)算法;主要從時(shí)間復(fù)雜

度空間復(fù)雜度兩個(gè)方面來考慮。

3.2算法的表示

1.算法的常用描述方法:自然語言、流程圖和偽代碼。

用自然語言描述算法,通常是我們理解算法的第一步。

流程圖也稱程序框圖,它是算法的一種圖形化的表示方法,與用自然語言描述算法

相比,它更加形象、直觀,更容易理解。

常見的流程圖符號(hào)及其含義如下圖所示。

―"O

起止框輸入編出框處理框判斷框流程線連接符

圖2.1.1流程圖符號(hào)

?起止框:表示一個(gè)算法的開始和結(jié)束。

?輸人/輸出框:表示從外部輸人數(shù)據(jù)到計(jì)算機(jī)內(nèi)部或者從計(jì)算機(jī)內(nèi)部輸出數(shù)據(jù)到

計(jì)算機(jī)外部。

?處理框:表示操作的內(nèi)容。

?判斷框:表示判斷的條件。滿足條件,執(zhí)行標(biāo)識(shí)為"是"的路徑;不滿足條件,則執(zhí)

行標(biāo)識(shí)為"否"的路徑。

?流程線:指向算法運(yùn)行的方向。

2.程序設(shè)計(jì)語言的發(fā)展:從低級(jí)到高級(jí),分別是機(jī)器語言、匯編語言和高級(jí)語言。

機(jī)器語言:由二進(jìn)制的0、1代碼指令構(gòu)成,能被計(jì)算機(jī)直接識(shí)別。

匯編語言:是符號(hào)化的機(jī)器語言,仍屬于低級(jí)語言。

高級(jí)語言:更接近自然語言,程序可讀性強(qiáng),修改、維護(hù)方便。常見的高級(jí)語言有

Java.C/C++以及Python等。

3、三種基本結(jié)構(gòu)的流程圖

算法的三種基本結(jié)構(gòu)是順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

順序結(jié)構(gòu)是一種最簡單的基本結(jié)構(gòu),按照自上而下的先后順序依次執(zhí)行程序語句。

在如圖2.1.2所示的順序結(jié)構(gòu)示意圖中,先執(zhí)行處理框A,再執(zhí)行處理框B。

分支結(jié)構(gòu)也稱為選擇結(jié)構(gòu),是一種根據(jù)給定的條件進(jìn)行判斷的結(jié)構(gòu)。如圖2.1.2所

示的分支結(jié)構(gòu)中必定包括一個(gè)判斷框,若滿足條件則執(zhí)行處理框A,若不滿足條件則執(zhí)

行處理框B。

循環(huán)結(jié)構(gòu)是一種重復(fù)某一部分操作的結(jié)構(gòu)。如圖2.1.2所示的循環(huán)結(jié)構(gòu)中,若滿足

條件則執(zhí)行循環(huán)體(處理框A),若不滿足條件則跳出循環(huán),執(zhí)行循環(huán)結(jié)構(gòu)后面的代碼。

5、Python語言的開發(fā)環(huán)境

Python是一門解釋型的編程語言,而且是現(xiàn)在世界上最流行的編程語言之一。

6、程序設(shè)計(jì)語言的發(fā)展

除Python語言之外,還有很多其他程序設(shè)計(jì)語言。程序設(shè)計(jì)語言經(jīng)歷了從機(jī)器語言、

匯編語言到高級(jí)語言的發(fā)展過程。

機(jī)器語言由二進(jìn)制的0、1代碼指令構(gòu)成,能被計(jì)算機(jī)直接識(shí)別。但理解和記憶機(jī)器

語言非常困難,并且容易出錯(cuò),編程效率極低。

匯編語言是符號(hào)化的機(jī)器語言,采用英文助記符代替機(jī)器指令,比機(jī)器語言容易識(shí)

別和記憶,從而提高了程序的可讀性。但是匯編語言仍然是面向機(jī)器的語言,是為特定

的計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的,它要求軟件工程師對(duì)相應(yīng)的機(jī)器硬件非常熟悉,因而匯編語言屬

于低級(jí)語言。

高級(jí)語言更接近自然語言,并不特指某一個(gè)種語言,也不依賴于特定的計(jì)算機(jī)系統(tǒng),

因而更容易掌握和使用,通用性也更好。比較流行的高級(jí)語言有Java、C/C++以及本書

使用的Python等。用高級(jí)語言編寫的程序可讀性更強(qiáng),也便于修改、維護(hù)。

2.2做出判斷的分支

一、常量與變量

1.常量。

在程序運(yùn)行過程中值始終保持不變的量稱為常量。

所有的常數(shù)都是常量。常量可以是數(shù)字、字符申、布爾值、空值。

2.變量。

在程序運(yùn)行過程中值允許改變的量稱為變量。在Python中。變量的命名規(guī)則為:

(1)第一個(gè)字符必須是字母或下畫線,后面可以是字母、下畫線或數(shù)字;

(2)變量的名字是區(qū)分大小寫的;

(3)不能使用保留字.如int,floatfalse等。

3、運(yùn)算符

常用的算術(shù)運(yùn)算符如下表所示。

表2.2.1運(yùn)算符

運(yùn)算符+—*///%

功能加減乘寐除整除取模

常用的關(guān)系運(yùn)算符如下表所示。

大條詆算符

含義等于大于大于等于小于小于笄于

常用的邏輯運(yùn)算符有與(and)、或(or)、非(not)等。

4、表達(dá)式。

(1)算術(shù)表達(dá)式:由一個(gè)或多個(gè)操作數(shù)通過算術(shù)運(yùn)算符組合而成的式子。

(2)關(guān)系表達(dá)式:用關(guān)系運(yùn)算符連接起來的式子結(jié)果為布爾值。如分支語句中的條

件表達(dá)式,當(dāng)條件成立時(shí)值為真(True),不成立時(shí)值為假(False)。

(3)邏輯表達(dá)式:用邏輯運(yùn)算符連接起來的式子,結(jié)果為布爾值。當(dāng)邏輯表達(dá)式成

立時(shí)值為真(True),不成立時(shí)值為假(False)。如邏輯表達(dá)式"(2〈3)or(3〉4)"的值為

"True"。

5.賦值語句。

將賦值號(hào)右邊表達(dá)式的值賦給左邊變量的語句?;靖袷綖椋鹤兞?表達(dá)式。

2.輸人和輸出語句。

print():在屏幕上輸出數(shù)據(jù)。如有多個(gè)輸出項(xiàng),使用英文逗號(hào)分隔。end參數(shù)默認(rèn)值

是換行符\n,輸出后跳到下一行。我們可以換成其他字符串,如End="",則以空格為結(jié)尾。

input():從鍵盤輸入數(shù)據(jù),返回一個(gè)字符串(string)類型的值。

四、Python的數(shù)據(jù)類型

Python提供了整數(shù)(int)、浮點(diǎn)數(shù)(float)、字符串(str)、布爾(bool)、列表(list)

等常見的數(shù)據(jù)類型。

int():根據(jù)一個(gè)字符串或浮點(diǎn)數(shù)創(chuàng)建一個(gè)新的整數(shù)。

float():根據(jù)一個(gè)字符串或整數(shù)創(chuàng)建一個(gè)新的浮點(diǎn)數(shù)(小數(shù))o

str():根據(jù)一個(gè)數(shù)(也可以是任何其他類型)創(chuàng)建一個(gè)新的字符串。

3.分支語句。

當(dāng)程序中需要根據(jù)不同的條件判斷來決定程序執(zhí)行的走向時(shí),可以使用if分支語句

實(shí)現(xiàn),其基本格式如下。

單分支

if條件:

語句或語句組

雙分支

if條件:

語句或語句組A

else:

語句或語句組B

多分支結(jié)構(gòu)

if表達(dá)式1

語句塊1

elif表達(dá)式2

語句塊2

elif表達(dá)式n

語句塊n

else:

語句塊n+1

執(zhí)行流程:如果表達(dá)式1成立,執(zhí)行語句塊1;如果表達(dá)式2成立,執(zhí)行語句塊2;如

果表達(dá)式n成立,執(zhí)行語句塊n;如果以上語句都不成立,執(zhí)行語句語句塊n+1。

elif是endif的簡寫,else及其后的語句可以省略。

4.代碼的縮進(jìn)。

Python用縮進(jìn)(在相應(yīng)的代碼前加空格)來表示代碼之間的從屬關(guān)系,并且允許多層

嵌套。

2.3周而復(fù)始的循環(huán)

1、列表

列表在Python中的作用非常強(qiáng)大,它可以包含多個(gè)數(shù)據(jù)元素,同時(shí)它是一個(gè)有序的

集合。下面通過一個(gè)簡單的例子來熟悉列表的使用方法。

#創(chuàng)建列表,各元素用逗號(hào)隔開,放在方括號(hào)內(nèi)

#列表可以存儲(chǔ)混合類型的數(shù)據(jù)

object,"石榴香蕉","橙子","梨子"]

#修改列表第1個(gè)元素的值,注意列表索引號(hào)從。開始

object[0]="蘋果"

delobject[l]#刪除列表第2個(gè)元素

#在列表尾部添加一個(gè)數(shù)據(jù)元素"琳猴桃"

object.append("驕猴桃")

print(object)#輸出列表

運(yùn)行結(jié)果:

[‘蘋果香蕉橙子梨子嫌猴桃’]

我們可以通過對(duì)應(yīng)的方法對(duì)列表進(jìn)行操作:pop(0)方法可以刪除列表的首元素,

append方法可以在列表尾部添加一個(gè)數(shù)據(jù)元素。

2、計(jì)數(shù)循環(huán)

循環(huán)重復(fù)次數(shù)一定時(shí),我們通常稱為計(jì)數(shù)循環(huán)。在Python中,使用for語句來創(chuàng)建

這類循環(huán)。for語句的基本格式如下

for循環(huán)變量in列表:

語句或語句組

通常我們將一組重復(fù)執(zhí)行的語句稱為循環(huán)體。Python對(duì)循環(huán)體的定的格式是,循環(huán)

體必須相對(duì)關(guān)鍵詞for有縮進(jìn)。在for語句中,in后也可以是range。函數(shù),它可以生成

某個(gè)范圍內(nèi)的數(shù)字列表。例如:range(6)會(huì)生成[0,1,2,3,4,5]列表range。,6)就會(huì)生

成[1,2,3,4,5]列表,而range。,6,2)會(huì)生成[1,3,5]這樣的列表。

3、條件循環(huán)

條件循環(huán)一般用于循環(huán)次數(shù)未知的情況。只有當(dāng)循環(huán)條件成立時(shí),才執(zhí)行循環(huán)體。

在Python中,使用while語句來創(chuàng)建這類循環(huán)。while語句的基本格式如下。

while關(guān)系表達(dá)式:

語句或語句組

如:

s=0

whiles<=30:

s=s+10#循環(huán)體

print(s)#循環(huán)體

運(yùn)行結(jié)果:

10

20

30

40

在本例中,循環(huán)體是兩條語句,因此這兩條語句相對(duì)于關(guān)鍵詞while均要縮進(jìn)。程

序執(zhí)行過程是:變量s初值為0,判斷"s<=30”是否成立;如果成立則執(zhí)行循環(huán)體(s值增

加10,輸出s的值),不斷重復(fù)直到"s<=30"不成立,退出循環(huán)。

在此我們需要特別關(guān)注語句"s=s+10。在編程時(shí),形如"s=s+x"的語句可以起到累加

的作用,如果x=l,即$=$+1可以起到計(jì)數(shù)的作用。一般在使用累加器或計(jì)數(shù)器時(shí)將變量

賦初值為0。也有一類特殊的關(guān)系表達(dá)式,如數(shù)字0表示假,非0數(shù)字表示真。如果循環(huán)

是以"while1:"開頭,那么在不加干預(yù)的情況下,程序就會(huì)"不知疲倦”地一直執(zhí)行下去。

如果你想停止這個(gè)程序,按快捷鍵Ctrl+C即可。通常情況下,我們不會(huì)讓程序陷人這種

"死循環(huán)"的境地。

2.4可以復(fù)用的代碼

1、函數(shù)

函數(shù)可分為系統(tǒng)函數(shù)和用戶自定義函數(shù)兩種類型。系統(tǒng)函數(shù)即函數(shù)庫中的標(biāo)準(zhǔn)函

數(shù),是程序設(shè)計(jì)語言或操作系統(tǒng)提供給用戶的一系列已經(jīng)編制好的程序。在前面單元使

用過的print()和input()函數(shù)都是系統(tǒng)函數(shù)。

函數(shù)一般包括函數(shù)名、參數(shù)、返回值和函數(shù)體等四部分。其中,函數(shù)名和函數(shù)體是

必不可少的,參數(shù)和返回值可根據(jù)需要進(jìn)行定義。

定義函數(shù)的基本格式如下。

def函數(shù)名(參數(shù)):

#函數(shù)說明

語句或語句組

return返回值

參數(shù)是用來向函數(shù)傳遞值的,當(dāng)有多個(gè)參數(shù)時(shí),各個(gè)參數(shù)之間用逗號(hào)分隔開。函數(shù)

執(zhí)行完成后,由retum語句將表達(dá)式值返回給調(diào)用者,結(jié)束函數(shù)。函數(shù)的調(diào)用采用函數(shù)

名(參數(shù))的方式。

如:用函數(shù)來求n!。

deffactorial(n):

#求(1!

s=l

foriinrange(2,n+l):

s=s*i

returns

#調(diào)用factorial函數(shù)

total=factorial(4)

print(total)

上例中,程序執(zhí)行時(shí)由于def塊中的代碼不是主程序的一部分,因此會(huì)跳過該段代

碼,從主程序的第一行total=factorial(4)開始運(yùn)行。在遇到函數(shù)的調(diào)用語句

factorial(4)時(shí),轉(zhuǎn)到程序中的第一行代碼開始執(zhí)行。函數(shù)運(yùn)行時(shí),變量n會(huì)被賦值為4。

函數(shù)執(zhí)行完成返回變量s的值即24,然后回到語句total=factorial(4),將返回值賦

給變量total,最后輸出。

2、發(fā)布代碼

通過模塊發(fā)布代碼可以讓很多人受益于你的工作。

如:有6根火柴棒,列出所有能擺出的自然數(shù),要求火柴棒正好用完?;鸩駭?shù)字如

圖所示。

在D:創(chuàng)建一個(gè)文件夾mymodule,其中包含mymodule.py和setup,py兩個(gè)文件。

mymodule.py是一個(gè)模塊文件,其內(nèi)容就是match_num函數(shù)。

mymodule.py

defmatch_num(num):

f=[6,2,5,5,4,5,6,3,7,6]#。~9分別需要多少根火柴棒

ifnum==0:#將火柴棒總數(shù)變景賦初值

total=f[0]

else:

total=0

while(num>0):

x=num%10#Wnum除以10的余數(shù),即num的個(gè)位數(shù)

total=total+f[x]#所需火柴棒數(shù)累加

num=num//10#num整除10,即去掉num的個(gè)位數(shù)

returntotal#返回需要多少根火柴棒數(shù)

setup,py

fromdistutils.coreimportsetup

setup(

name='mymodule',#參數(shù)一定要與mymodule.py文件名相同

version=*1.0.0,,#版本號(hào)

#參數(shù)一定要^mymodule.py文件名相同

py_modules=['mymodule'],

author—ydI#作者

author_email='yd@mail.com',#作者郵箱

#代碼功能描述

description='計(jì)第一個(gè)數(shù)字需要多少根火柴棒,,

打開mymodule所在的目錄,構(gòu)建發(fā)布文件。最后將發(fā)布文件安裝到你的Python本地

副本中。安裝完成后,mymodule文件夾包含了如圖2.4.4所示的文件。如果你想讓全世

界都分享你的成果,你可以在互聯(lián)網(wǎng)上發(fā)布你的代碼。

)D:\mymodule

CJ

'myroodule.pysetuppyMANIFEST

圖2.4.4mymodule文件夾內(nèi)容

3、導(dǎo)入模塊并使用

已經(jīng)構(gòu)建發(fā)布的模塊必須先導(dǎo)人程序才能使用。導(dǎo)人時(shí)使用語句"import

mymodu1e”,調(diào)用模塊內(nèi)的函數(shù)時(shí)用“mymodule.match_num()”來實(shí)現(xiàn)。

究占下列程序,導(dǎo)入安裝發(fā)布好的模塊mymodule.實(shí)現(xiàn)火柴棒狂

數(shù)字問題

imDortlymodule/導(dǎo)入模塊

snum-6

print(“你可以拼;I;這些數(shù)字:")

for1inrange(112):

iffodule..tchnua(i)==snum:#例用模塊內(nèi)的match_num()函數(shù)

print(i)

第3單元認(rèn)識(shí)數(shù)據(jù)

3.1數(shù)據(jù)編碼

1、模擬信號(hào)與數(shù)字信號(hào)

按照取值特征,可以將信號(hào)分為模擬信號(hào)和數(shù)字信號(hào)。用傳感器直接獲得的信號(hào)-

般為模擬信號(hào),如聲音、溫度、壓強(qiáng)等。模擬信號(hào)的值是隨時(shí)間連續(xù)變化的,波形光滑。

模擬信號(hào)的值稱為模擬數(shù)據(jù)。

數(shù)字信號(hào)隨時(shí)間的變化是非連續(xù)的,數(shù)字信號(hào)可以由模擬信號(hào)轉(zhuǎn)換得來,數(shù)字信號(hào)

的值即數(shù)字?jǐn)?shù)據(jù),直接用計(jì)算機(jī)所能理解的二進(jìn)制表示,以方便計(jì)算機(jī)對(duì)其進(jìn)行處理。

2、聲音的數(shù)字化

我們不能把連續(xù)的音頻信號(hào)存放在計(jì)算機(jī)中,必須將模擬聲音數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)

據(jù)。將模擬聲音數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)的這一過程,稱為聲音的數(shù)字化。通常先對(duì)模擬聲

音信號(hào)按給定的時(shí)間間隔進(jìn)行采樣,然后對(duì)采樣數(shù)據(jù)進(jìn)行量化,最后將量化后的數(shù)據(jù)用

計(jì)算機(jī)能夠存儲(chǔ)和處理的二進(jìn)制數(shù)值表示,即編碼。

3、進(jìn)制與數(shù)制轉(zhuǎn)換

計(jì)算機(jī)外部的各種形式的數(shù)據(jù)經(jīng)過編碼后,都以二進(jìn)制數(shù)的形式存儲(chǔ)在計(jì)算機(jī)中。

二進(jìn)制數(shù)中只有0和1兩個(gè)數(shù)字符號(hào),其計(jì)數(shù)特點(diǎn)是"逢二進(jìn)一"即1+1=10。計(jì)算機(jī)中存儲(chǔ)

數(shù)據(jù)的最小單位是二進(jìn)制位,用比特(bit)表示,1比特能表示兩種(2')狀態(tài)(即0或1),2

比特可以表示00、01、10、11四種(爐)狀態(tài),3比特可表示八種(2?)狀態(tài)....計(jì)算機(jī)存儲(chǔ)

數(shù)據(jù)的基本單位是字節(jié)(Byte,簡寫為B),8比特構(gòu)成1字節(jié),1字節(jié)二進(jìn)制數(shù)可表示2*(256)

種狀態(tài)。

在二進(jìn)制數(shù)中,每一個(gè)數(shù)字在不同的位置上具有不同的權(quán)值,各位上的權(quán)值是基數(shù)

2的若干次嘉。比如二進(jìn)制數(shù)10010,5個(gè)位置上的權(quán)值從右往左可以表示為:

2\2\2\2\2"將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)時(shí),只要將該二進(jìn)制數(shù)的每個(gè)位置上的

數(shù)字與其對(duì)應(yīng)位置的權(quán)值相乘,然后求和即可。比如,

4:

10010,,,-iX2+0X2'+0X2+1x2'+Ox20=180把十進(jìn)制非負(fù)整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),可

使用短除法,即"除二取余"法。例如,把十進(jìn)制整數(shù)18轉(zhuǎn)換為二進(jìn)制數(shù)的過程如圖3.1.7

所示,結(jié)果為18“,,=1001。

2|18余數(shù)

290低位

241

220

2|I0

0I.高位

圖3.1.7十進(jìn)制整數(shù)轉(zhuǎn)為二進(jìn)制

由于二進(jìn)制數(shù)位數(shù)較多,書寫不便,故常改用十六進(jìn)制數(shù)表示。我國古代曾經(jīng)在重

量單位上使用過十六進(jìn)制,如規(guī)定16兩為1斤。十六進(jìn)制需要使用16個(gè)不同的基本數(shù)字,

除了阿拉伯?dāng)?shù)字0到9外,一般用字母A到F(或a~f)依次表示后續(xù)數(shù)字(相當(dāng)于十進(jìn)制數(shù)中

的10~15)。十六進(jìn)制的基本計(jì)數(shù)規(guī)則是“逢十六進(jìn)1",即F+l=10。一般地,十進(jìn)制非負(fù)

整數(shù)轉(zhuǎn)換成R進(jìn)制數(shù)(R22)采用"除R取余法”,把R進(jìn)制非負(fù)整數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)采用"按

權(quán)展開求和法”。

4.容量單位。

計(jì)算機(jī)中的信息是使用二進(jìn)制數(shù)(即0和D來表示的;計(jì)算機(jī)中存儲(chǔ)數(shù)據(jù)的最小單位

是二進(jìn)制位,用比特(Bit)表示;計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的基本單位為字節(jié)(Byte),8比特構(gòu)成

1個(gè)字節(jié)。

存儲(chǔ)容量單位還有KB、MB、GB、TB等,它們之間的轉(zhuǎn)換關(guān)系如下:

1Byte=8Bits

1KB=1024Bytes

1MB=1024KB

1GB=1024MB

1TB=1024GB

4、文本數(shù)據(jù)的編碼

計(jì)算機(jī)要處理文本,就必須將其轉(zhuǎn)換為計(jì)算機(jī)能識(shí)別的二進(jìn)制數(shù)才能處理,該過程

稱為文本數(shù)據(jù)編碼。常見的文本數(shù)據(jù)的編碼方案有ASCH碼和Unicode碼。

ASCII(AmerionStandedCodefor1normationletetange),即美國信息交換標(biāo)

準(zhǔn)碼.用7位(標(biāo)準(zhǔn)ASCII碼)或8位(擴(kuò)展ASCII碼)的二進(jìn)制數(shù)表示一個(gè)字符,共有128個(gè)字

符,每個(gè)字符用一個(gè)字節(jié)來存儲(chǔ),具體如下表所示。

ASCII碼(十進(jìn)制)表示的字符

0-31控制字符或通信專用字符(不可見)

32空格

48-57數(shù)字0~9

65-90大寫英文字母A-Z

97-122小寫英文字母ay

其他英文標(biāo)點(diǎn)符號(hào)、運(yùn)算符號(hào)、括號(hào)等

Uncode碼是一種編碼方案,它是為了解決傳統(tǒng)字符編碼方案的局限而產(chǎn)生的。它為

每種語言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語言、跨平臺(tái)進(jìn)行

文本轉(zhuǎn)換、處理的要求。Unicode字符集是全球共享的編碼字符集,其中包含74686個(gè)

簡繁漢字。Unicode通常用兩個(gè)字節(jié)表示一個(gè)字符,原有的英文編碼要從單字節(jié)變成雙

字節(jié),只需把高位字節(jié)全部填0即可。

漢字的編碼

(1)輸入碼(外碼):包括音碼、形碼、混合碼(五筆、全拼、智能ABC)等。

(2)機(jī)內(nèi)碼(內(nèi)碼):包括國標(biāo)碼(GB)、BIG5碼(繁體)等。

(3)輸出碼(字形碼):點(diǎn)陣表示,每一個(gè)點(diǎn)用一個(gè)二進(jìn)制位表示,值"0"表示沒有筆

形,值"1"表示有筆形。例如,16X16點(diǎn)陣表示一個(gè)漢字,這個(gè)漢字就需要16X16/8=32

字節(jié)來存故。

(4)漢字在計(jì)算機(jī)中的編碼方式如下圖所示。

鍵盤輸入_________編碼轉(zhuǎn)換________編輯與輸出

(輸入碼或外碼)"(機(jī)內(nèi)碼或內(nèi)碼)"(輸出碼或字形碼)

3.2數(shù)據(jù)與結(jié)構(gòu)

A、數(shù)據(jù)類型

數(shù)據(jù)類型用來定義一系列值及應(yīng)用于這些值的一系列操作。比如,在Python語言中,

有整數(shù)、浮點(diǎn)數(shù)、字符串、布爾等數(shù)據(jù)類型。整數(shù)類型的范圍兒乎僅受內(nèi)存限制,能夠

進(jìn)行加、減、乘、除等多種計(jì)算操作。

大多數(shù)程序設(shè)計(jì)語言都定義了兩類數(shù)據(jù)類型:簡單數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型。簡單

數(shù)據(jù)類型不能分解成更小的數(shù)據(jù)類型,復(fù)合數(shù)據(jù)類型則由簡單數(shù)據(jù)類型或者復(fù)合數(shù)據(jù)類

型組成。在Python語言中,整數(shù)、浮點(diǎn)數(shù)、字符串、布爾屬于簡單數(shù)據(jù)類型,列表、字

典等屬于復(fù)合數(shù)據(jù)類型。

訂單數(shù)據(jù)中的商品名稱可以抽象為字符串類型的數(shù)據(jù),是一個(gè)基本數(shù)據(jù)項(xiàng),商品數(shù)

量可以抽象為整數(shù)類型的數(shù)據(jù),也是一個(gè)基本數(shù)據(jù)項(xiàng)。

每個(gè)訂單數(shù)據(jù)包括商品名稱、單價(jià)、數(shù)量、金額、收貨地址等基本數(shù)據(jù)項(xiàng),所以訂

單數(shù)據(jù)需要抽象為復(fù)合數(shù)據(jù)類型。

201708012374*61814190XXXxxxx?swx

二.安也.又KC為千H2B.MV34.M

aMK*tE*:?6.00[“fll

□E3BB

(a)A網(wǎng)站商品的訂單數(shù)據(jù)

如圖3.2.1(a)所示的訂單數(shù)據(jù)用Python的列表存儲(chǔ),列表名稱為OrderList。

0rderList=["2374761814130XXX","語文:生命的,文學(xué)的,美學(xué)的“,34.66]列表中前

兩個(gè)數(shù)據(jù)是字符串類型,最后一項(xiàng)是浮點(diǎn)數(shù)類型。

B、數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)是存在特定關(guān)系的數(shù)據(jù)元素的集合。在解決有些問題時(shí),一些相關(guān)聯(lián)的數(shù)

據(jù)將集中在一起,形成一個(gè)數(shù)據(jù)的集合,這種集合能夠單獨(dú)或作為一個(gè)整體被訪問和處

理。

C、線性數(shù)據(jù)結(jié)構(gòu)

線性數(shù)據(jù)結(jié)構(gòu)又稱為線性表。在線性數(shù)據(jù)結(jié)構(gòu)中,除首元素沒有前趨元素、尾元素

沒有后繼元素外,其他元素都只有一個(gè)前趨元素和一個(gè)后繼元素,如圖3.2.2所示。線

性表中數(shù)據(jù)元素之間是一對(duì)一的關(guān)系。

首元京尾元素

CWD……-0.0-……CWD

GGG

前趨元素當(dāng)前元素后繼元素

圖3.2.2線性數(shù)據(jù)結(jié)構(gòu)

D、隊(duì)列

隊(duì)列是一種有限制(先進(jìn)先出、FIFO)的線性結(jié)構(gòu)。隊(duì)列只允許在后端進(jìn)行數(shù)據(jù)元索

的添加操作(進(jìn)隊(duì)),在前端進(jìn)行數(shù)據(jù)元素的刪除操作(出隊(duì))。也就是說,新來的成員總

是加入隊(duì)尾,離開的成員總是隊(duì)列頭部的(不允許中途離隊(duì)),即當(dāng)前"最老的"成員離隊(duì)。

例如.超市里排隊(duì)付款的隊(duì)伍。

在Python語言中,對(duì)列表的操作通常有以下方法:pop(0)可以刪除列表的首元素;

append可以在列表尾部添加一個(gè)數(shù)據(jù)元素;insert可以用于在中間插入元素;count可

以統(tǒng)計(jì)元素出現(xiàn)的次數(shù);len可以獲取列表的長度。

數(shù)據(jù)結(jié)構(gòu)中的“棧"是一種先進(jìn)后出的線性結(jié)構(gòu)。例如,物流裝車時(shí),先裝的后出,

后裝車的先出。

E、樹結(jié)構(gòu)

樹結(jié)構(gòu)是一種具有層次關(guān)系的非線性結(jié)構(gòu)。樹結(jié)構(gòu)是種具有層次美系的非線性結(jié)

構(gòu)。在樹結(jié)構(gòu)中,每一個(gè)節(jié)點(diǎn)只有一個(gè)前趨節(jié)點(diǎn),稱為父節(jié)點(diǎn)。沒有前趨節(jié)點(diǎn)只有一個(gè),

稱為樹的根節(jié)點(diǎn)。每一個(gè)節(jié)點(diǎn)可以有多個(gè)后繼節(jié)點(diǎn),它們稱為該節(jié)點(diǎn)的子節(jié)點(diǎn)。沒有后

繼的節(jié)點(diǎn)稱為葉子節(jié)點(diǎn)。

在圖3.2.3中,節(jié)點(diǎn)A為根節(jié)點(diǎn),B、C、D為A的子樹的根節(jié)點(diǎn)。同理,E、F、G是B的

子樹的根節(jié)點(diǎn),B是E、F、G的父節(jié)點(diǎn)。在樹結(jié)構(gòu)中,數(shù)據(jù)元素之間是一對(duì)多的關(guān)系。

圖3.2.4城市物流配送送路

例:快遞到達(dá)目的地城市后,物流圖的結(jié)構(gòu)呈樹狀。

F、圖結(jié)構(gòu)

圖結(jié)構(gòu)是由一組節(jié)點(diǎn)(稱為頂點(diǎn))和一組節(jié)點(diǎn)間的連線(稱為邊或弧)構(gòu)成的一種數(shù)

據(jù)結(jié)構(gòu)。圖結(jié)構(gòu)中的每個(gè)頂點(diǎn)都可以與其他頂點(diǎn)有邊相連,圖結(jié)構(gòu)中數(shù)據(jù)元素之間是多

對(duì)多的關(guān)系。圖3.2.7也是一個(gè)圖結(jié)構(gòu),其中,標(biāo)為"1"的頂點(diǎn)與兩條邊相連,頂點(diǎn)"4"與

在物流網(wǎng)絡(luò)中,分撥中心、配送中心、貨物需求點(diǎn)等可以抽象為圖的頂點(diǎn),城市道

路、各級(jí)鐵路等可以抽象為圖的邊,如城市以及城市之間的運(yùn)輸?shù)缆肪褪菆D結(jié)構(gòu)。利用

圖結(jié)構(gòu),我們還可以解決物流中的許多問題,如道路網(wǎng)絡(luò)分析、車輛運(yùn)營安排等。

隊(duì)列、樹結(jié)構(gòu)和圖結(jié)構(gòu)的關(guān)系如下表所示。、

結(jié)構(gòu)類型數(shù)型(節(jié)點(diǎn))之間的關(guān)系生活中相應(yīng)結(jié)構(gòu)應(yīng)用舉例

隊(duì)列(線上車、過馬路、付款時(shí)排的隊(duì)、醫(yī)院就診時(shí)電子牌上

一對(duì)一

性)的就診隊(duì)列

行政區(qū)劃、書的目錄結(jié)構(gòu)、磁道盤文件存儲(chǔ)結(jié)構(gòu)、注

樹結(jié)構(gòu)一對(duì)多

冊表

圖結(jié)構(gòu)多對(duì)多全國骯運(yùn)圖、鐵路運(yùn)輸圖、高速公路圖

3.3數(shù)據(jù)與系統(tǒng)

1>圖形用戶界面

圖形用戶界面(GraphicalUserInterface,GUI)又稱圖形用戶接口,是指采用圖

形方式顯示的計(jì)算機(jī)操作用戶界面。在Python語言中,tkinter是實(shí)現(xiàn)圖形用戶界面的

模塊,可以快速創(chuàng)建GUI應(yīng)用程序。我們需要先導(dǎo)入模塊,上面所示的代碼用"from

tkinterimport*"導(dǎo)入tkinter模塊,然后就可以運(yùn)用相應(yīng)代碼創(chuàng)建矩形容器(Frame)、

文本框(Entry)、命令按鈕(Button)、文本標(biāo)簽(Label)等交互對(duì)象。

在現(xiàn)代程序設(shè)計(jì)中,我們用"對(duì)象"建立計(jì)算機(jī)世界的實(shí)體與客觀世界的實(shí)體相一致

的映射關(guān)系,問題的解決方案可以用一些彼此交互的對(duì)象來形象化表示。比如在“旅行

線路"例子中,我們利用Python提供的按鈕類創(chuàng)建按鈕對(duì)象,通過單擊按鈕的交互方式

完成代碼的執(zhí)行過程。示例:將以下旅行線路"桂林市區(qū)一龍脊梯田一漓江漂流一騎行

之旅一遇龍河漂流。"添加至"旅行線路.txt”文本中

fromtkinterimport*

root=Tk()#創(chuàng)建一個(gè)窗口

root.title("添加線路")#設(shè)置窗口標(biāo)題

root.geometryC600x100*)#設(shè)置窗口大小

root.resizable(030)★禁止調(diào)整窗口大小

var=StringVar()#定義StnngVar。類型

defintomap():*Birtton按鈕激發(fā)困數(shù)

c=open("旅行線路.txt"'a+')衣以追加模式打開文件

c.write(var.get()+“\n")律在文件末尾添加十ext里的內(nèi)容

c.close*關(guān)閉文件

#在窗口上建一個(gè)文本標(biāo)筌.

Label(root,text=’清輸入線路',font=CArial,,10)).pack()

#在窗口上建一個(gè)文本框

Entry(root,textvariab1e=var,width=550).pack()

#在囪口上建一個(gè)But'gn按包_

Button(root,taxt=”添力口線路"command=intomap,relief='vsolid',,width=10).pack()

root,mainloop()

在面向過程的程序設(shè)計(jì)中,我們關(guān)注的是各種類型的數(shù)據(jù)及其操作;而在面向?qū)ο?/p>

的程序設(shè)計(jì)中,我們將數(shù)據(jù)及其操作隱藏細(xì)節(jié)后封裝為類,函數(shù)調(diào)用式的計(jì)算演變?yōu)閷?duì)

象之間的交互。

2、文件

在解決問題的過程中,我們可以根據(jù)需要將數(shù)據(jù)組織在一起形成隊(duì)列、樹或圖等

邏輯結(jié)構(gòu),這時(shí)的數(shù)據(jù)一般存儲(chǔ)在內(nèi)存中,當(dāng)退出程序時(shí),相關(guān)數(shù)據(jù)也將丟失。如果需

要更持久地存儲(chǔ)數(shù)據(jù),我們可以將數(shù)據(jù)以文件的形式存儲(chǔ)到外存儲(chǔ)設(shè)備中。"線路數(shù)據(jù)"

是用文件的形式存儲(chǔ)在計(jì)算機(jī)的磁盤里的。

文件是存儲(chǔ)在外存儲(chǔ)設(shè)備中的相關(guān)數(shù)據(jù)的集合。

3、Python讀寫文本文件

在Python語言中,用open函數(shù)把外存儲(chǔ)器里的文本文件(.txt)打開,用write方法

將內(nèi)存中的數(shù)據(jù)存儲(chǔ)到外存儲(chǔ)器的文件中,文件操作結(jié)束時(shí)一定要用close方法關(guān)閉文

件。

4、數(shù)據(jù)庫

在日常生活中,我們通常用電子表格軟件來管理數(shù)據(jù)。但電子表格軟件中的表是有

行數(shù)限制的,而且在多人共享和聯(lián)表查詢方面也存在不足,因此當(dāng)數(shù)據(jù)量比較大,且管

理比較復(fù)雜時(shí)便需要采用更科學(xué)的數(shù)據(jù)管理方法。數(shù)據(jù)庫是以一定的組織方式存儲(chǔ)在計(jì)

算機(jī)中的相互關(guān)聯(lián)的數(shù)據(jù)集合。

5、數(shù)據(jù)表

在數(shù)據(jù)庫中,數(shù)據(jù)是以二維表的形式組織存儲(chǔ)的稱為表。表中的一列稱為一個(gè)字段,

一個(gè)字段對(duì)應(yīng)車次實(shí)體的一個(gè)屬性,每個(gè)字段都有一個(gè)名字,稱為字段名,如車次編號(hào)、

出發(fā)站等。表中的一行稱為一條記錄,一條記錄對(duì)應(yīng)于一個(gè)車次實(shí)體,保存有關(guān)實(shí)體屬

性的數(shù)據(jù)??梢晕ㄒ淮_定一條記錄的字段稱為主鍵,如車次編號(hào)。若干個(gè)車次數(shù)據(jù)的集

合就組成了"武漢至成都車次"表。我們可以對(duì)數(shù)據(jù)表進(jìn)行插入、刪除、更新等操作。

需要指出的是,數(shù)據(jù)庫中的表與表之間也可以是相互關(guān)聯(lián)的。為不同表中的兩個(gè)字

段建立關(guān)聯(lián)后,兩表中的記錄就可以通過這個(gè)關(guān)系聯(lián)系在一起。比如換乘站既是前段車

程的到達(dá)站,又是下段車程的出發(fā)站,可以通過這一點(diǎn)建立關(guān)系。

6、數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS),是數(shù)據(jù)庫技術(shù)中-一種用來

科學(xué)地組織和存儲(chǔ)數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)的系統(tǒng)軟件。簡言之,數(shù)據(jù)庫管理系統(tǒng)

是定義、創(chuàng)建、維護(hù)數(shù)據(jù)庫的一種工具,它允許用戶管理和控制數(shù)據(jù)庫中的數(shù)據(jù)。常見

的數(shù)據(jù)庫管理系統(tǒng)有Sybase、Oracle、MySQL、Access等。

4.數(shù)據(jù)庫管理員。

數(shù)據(jù)庫的建立、使用和維護(hù)等工作僅靠數(shù)據(jù)庫管理系統(tǒng)還遠(yuǎn)遠(yuǎn)不夠,還要有專門的

人員來完成,這些人被稱為數(shù)據(jù)庫管理員。數(shù)據(jù)庫管理員可以通過數(shù)據(jù)庫管理系統(tǒng)(DBMS)

對(duì)數(shù)據(jù)庫進(jìn)行操作和維護(hù)。

5.數(shù)據(jù)庫系統(tǒng)。

數(shù)據(jù)庫系統(tǒng)是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其應(yīng)用開發(fā)工具)、數(shù)據(jù)庫應(yīng)用系統(tǒng)、

數(shù)據(jù)庫管理員和用戶組成的存儲(chǔ)、管理、處理和維護(hù)數(shù)據(jù)的系統(tǒng)。

數(shù)據(jù)庫系統(tǒng)包括硬件平臺(tái)系統(tǒng)和軟件平臺(tái)系統(tǒng)。如數(shù)據(jù)庫主要用于存儲(chǔ)數(shù)據(jù),需要

足夠大的內(nèi)存儲(chǔ)器和外存儲(chǔ)器等硬件平臺(tái)支持;軟件平臺(tái)系統(tǒng)除了操作系統(tǒng)(OS)和數(shù)據(jù)

庫管理系統(tǒng)(DBMS)外,還包括支持特定應(yīng)用環(huán)境開發(fā)的軟件工具以及開發(fā)完成的數(shù)據(jù)庫

應(yīng)用系統(tǒng)。如12306網(wǎng)站就是一個(gè)大型的數(shù)據(jù)庫應(yīng)用系統(tǒng),各類財(cái)務(wù)管理系統(tǒng)、人事管

理系統(tǒng)、圖書管理系統(tǒng)等軟件也都屬于數(shù)據(jù)庫應(yīng)用系統(tǒng)。

數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)一般包括系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)?、代碼設(shè)計(jì)、數(shù)據(jù)庫(文件)設(shè)計(jì)、

輸人/輸出(I/O)設(shè)計(jì)、模塊功能與處理過程設(shè)計(jì)等步驟。

利用Python訪問Access數(shù)據(jù)庫一般可分為以下5個(gè)步驟:

(1)建立與數(shù)據(jù)庫的連接;

(2)根據(jù)需要產(chǎn)生記錄集;

(3)訪問記錄集,處理數(shù)據(jù);

(4)根據(jù)需要把處理好的數(shù)據(jù)更新到數(shù)據(jù)庫中;

(5)斷開與數(shù)據(jù)庫的連接。

3.4加密與解密

1、密碼:密碼是指用來核對(duì)用戶ID以驗(yàn)證用戶就是本人的一組字符。

2、創(chuàng)建安全密碼的一般技巧

使用長度不少于8個(gè)字符的密碼。密碼長度越長越不容易被破解。

在可能的情況下,盡量使用字母、數(shù)字和特殊字符(如$、#)相結(jié)合的密碼。

不要使用電話號(hào)碼、身份證號(hào)碼或生日等信息作為密碼。

不要使用整個(gè)用戶ID或用戶ID的一部分作為密碼。

不要使用字典中能找到的詞語作為密碼,即使是字母次序顛倒過來的常用詞語也不

可以。

?加密的概念

加密:即將原始信息(數(shù)據(jù))隱匿起來,使之在缺少特殊信息(數(shù)據(jù))時(shí)不可讀。

明文:加密前的原始信息(或數(shù)據(jù))稱為明文。

密文:加密后的信息(或數(shù)據(jù))稱為密文。

解密:將密文還原成原文的過程稱為解密(或解碼)。

?加法密碼

加法密碼又被稱為移位密碼。在加法密碼算法中,明文中的所有字母都在字母表上

向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。例如,當(dāng)偏移量是3的時(shí)候,

所有的字母A將被替換成D,B變成E,以此類推,X將變成A,Y變成B,Z變成C。

愷撒密碼作為一種最為古老的對(duì)稱加密體制,在古羅馬的時(shí)候已經(jīng)很流行,它是加

法密碼的典型代表。

用Python語言實(shí)現(xiàn)加密算法時(shí),明文和密文都被抽象為字符串類型的數(shù)據(jù),Python

中的字符串由一串字符組成,用引號(hào)引起來表示,比如"abCEd"。類似于列表的操作,

我們可以指向或操作字符串中的某一個(gè)字符,比如c[0]表示字符串中的第一個(gè)字符。我

們還可以用Python系統(tǒng)函數(shù)對(duì)數(shù)據(jù)進(jìn)行特定的操作,len函數(shù)可以獲取字符串中字符的

個(gè)數(shù),0rd函數(shù)可以將字符類型的參數(shù)轉(zhuǎn)換為對(duì)應(yīng)的整數(shù)值,chr函數(shù)可以將整數(shù)類型的

參數(shù)轉(zhuǎn)換為對(duì)應(yīng)的字符。

了解密碼安全與加密、解密的技術(shù)能夠幫助我們保護(hù)個(gè)人隱私。同時(shí),我們也要從

自己做起,遵守相關(guān)法律和必要的道德規(guī)范,共同維護(hù)健康、良好的數(shù)據(jù)環(huán)境。

第4單元計(jì)算與問題解決

4.1算法及其特征

1、算法的重要特征

有窮性。算法必須能在執(zhí)行有限個(gè)步驟之后終止。

確切性。算法中的每一次運(yùn)算都有明確的定義,具有無二義性,并且可以通過計(jì)算

得到唯一的結(jié)果。

輸人項(xiàng)。一個(gè)算法有0個(gè)或多個(gè)輸人,以刻畫運(yùn)算對(duì)象的初始情況,所謂0個(gè)輸人是

指算法本身給出了初始條件。

輸出項(xiàng)。算法一定要有輸出。任何算法都不能"無功而返"可行性。算法中執(zhí)行的任

何計(jì)算都可以在有限時(shí)間內(nèi)完成(也稱為有效性)。算法中的運(yùn)算都必須是可以實(shí)現(xiàn)的。

從某種意義上說,算法也是一種數(shù)學(xué)模型。一般而言,問題求解的第一步是數(shù)學(xué)建

模。用數(shù)學(xué)語言描述實(shí)際現(xiàn)象,將現(xiàn)實(shí)世界的問題抽象成數(shù)學(xué)模型,就可能發(fā)現(xiàn)問題的

本質(zhì)并判定其能否求解,繼而找到求解該問題的方法和算法。

2、枚舉

我們常利用計(jì)算機(jī)運(yùn)算速度快、精確度高的特點(diǎn)解決實(shí)際問題。在設(shè)計(jì)算法時(shí),最

簡單的方法就是"直譯"我們的思維過程。有一種算法是把所有可能的答案一一列舉,合

適就保留,不合適就丟棄。這種方法稱作"枚舉〃或"窮舉"

4.2數(shù)值計(jì)算

1、numpy模塊簡介

numpy是一個(gè)科學(xué)計(jì)算包,其中包含很多數(shù)學(xué)函數(shù),如三角函數(shù)、矩陣計(jì)算方法等。

通過該模塊中的arange函數(shù)可以創(chuàng)建一個(gè)等差數(shù)列。如在0~2n之間每隔0.01取個(gè)值,

則可以用arange(0,2*numpy.pi,0.01)來表示,其中numpy.pi表示n。下列代碼可以產(chǎn)

生sin(x)的若干個(gè)關(guān)鍵點(diǎn)

#加載numpy模塊并取一個(gè)簡潔的別名為np.便于后續(xù)引用

importnumpyasnp

#xdE0到2n之間,每隔取一個(gè)點(diǎn)

x=np.arange(0,2*np.pi0.01)

y=np.sin(x)#通過解析式計(jì)算列表x對(duì)應(yīng)的列表y的值

2、matplotlib模塊簡介

matplotlib模塊是Python中最出色的繪圖庫,功能很完善。調(diào)用

matplotlib.pyplot時(shí),坐標(biāo)系可以根據(jù)數(shù)值范圍自動(dòng)生成。

matplotlib的繪圖原理很簡單,利用plot畫線函數(shù)就可以在直角平面內(nèi)輕松地將

(x,y)坐標(biāo)點(diǎn)對(duì)連接成平滑曲線。例如:在上述代碼的適當(dāng)位置增加下列語句,就可以

將剛才生成的關(guān)鍵點(diǎn)連接起來。

#)j|l^matplotlib.pyplot并取別名為pit

importmatplotlib.pyplotaspit

plt.plot(x,y)#將點(diǎn)對(duì)連線

pit.show()#將繪制的圖像窗口顯示出來

參考上述代碼,讓我們一起來完善以下Python程序,嘗試?yán)L出"sin(x)"“sin(-x)"

和"sin(2x)/2”的圖像。

importnumpyasnp#加載numpy模塊并取名為np

importmatplotlib.pyplotpit#加載matplotlib.pyplot并取名為pit

x=np.arange(0,2*np.pi,0.01)極在。到2匹之間,每隰0.01取一個(gè)點(diǎn)

yl=np.sin(x)#求sin(x)對(duì)應(yīng)的值

y2=np.sin(-x)#求5正(-:<)對(duì)應(yīng)的y2值

y3=np.sin(2*x)/2#求sin(2x)/2對(duì)應(yīng)的y3值

pit.plot(x,yl)#繪制sin(x)圖像

pit.plot(x,y2)#繪制sin(-x)圖像

pit.plot(x,y3)#繪制sin(2*x),2圖像

pit.titleCsin(x),)#設(shè)置圖融標(biāo)題

plt.xlabelCX')殳置X軸標(biāo)題

plt.ylabelCY')*設(shè)置Y軸標(biāo)題

pit.show()#將繪制的函數(shù)圖像窗口顯示出來

input("運(yùn)行完畢,清按回車鍵退出...")

斐波那契在《計(jì)算之書》中提出了一個(gè)有趣的兔子問題:假設(shè)一對(duì)兔子每個(gè)月可以

生一對(duì)小兔子,一對(duì)兔子出生后第2個(gè)月就開始生小兔子。則一對(duì)兔子一年內(nèi)能繁殖成

多少對(duì)?10年呢?

第1個(gè)月和第2個(gè)月的兔子對(duì)數(shù)之和為第3個(gè)月的兔子對(duì)數(shù),第2個(gè)月和第3個(gè)月的兔

子對(duì)數(shù)之和為第4個(gè)月的兔子對(duì)數(shù)...,每個(gè)月的兔子對(duì)數(shù)是前兩個(gè)月的兔子對(duì)數(shù)之和,

又同時(shí)作為下一個(gè)月兔子對(duì)數(shù)的加數(shù)。這種重復(fù)反饋的過程稱為迭代。

迭代法也稱輾轉(zhuǎn)法,是用計(jì)算機(jī)解決問題的一種基本方法。迭代通常是為了接近并

到達(dá)所需的目標(biāo)或結(jié)果。每一次對(duì)過程的重復(fù)被稱為一次“迭代",而每一次迭代得到的

結(jié)果會(huì)被用來作為下一次迭代的初始值。

f1

圖4.2.6計(jì)算的迭代示意圖

由于在迭代系列中的每個(gè)月份兔子對(duì)數(shù)只跟前兩個(gè)月有關(guān),因此在編寫程序時(shí),只

需兩個(gè)變量fl和f2分別記錄上上月和上月的數(shù)據(jù)。

deffib(n):

#利用迭代求斐波那契數(shù)列的第n個(gè)數(shù)

f2=f1=1

foriinrange(3,n+l):

fl,f2=f2,fl+f2

returnf2

n=int(input「輸入需要:計(jì)算的月份數(shù):,))

print('兔子總對(duì)數(shù)為:',fib(n))

程序運(yùn)行結(jié)果如下:

輸入需要計(jì)算的月份數(shù):74

兔子總對(duì)數(shù)為:1304969544928657

"fl,f2=f2,fl+f2”中右邊的值全是這個(gè)式子計(jì)算以前的初始值,可折為下面代碼

deffib(n):

#迭代求Fibonacci數(shù)列

f3=f2=fl=l

foriinrange(3,n+1):

f3=fl+f2

fl=f2

f2=f3

returnf2

n=int(input('輸入需要計(jì)算的月份數(shù):‘))

print(兔子總討數(shù)為:*jfib(n))

工nputC運(yùn)行完畢,清按回車鍵退出???")

利用迭代算法解決問題,有三個(gè)關(guān)鍵步驟:(1)確定迭代變量,如上例中的的fl、

f2;(2)建立迭代關(guān)系式;(3)對(duì)迭代過程進(jìn)行控制,這是編寫迭代程序必須考慮的問

題,不能讓迭代過程無休止地重復(fù)執(zhí)行下去。

現(xiàn)代自然科學(xué)和工程電子技術(shù)的研究過程中,都離不開大規(guī)模的數(shù)學(xué)計(jì)算問題。例

如:數(shù)學(xué)類課程中的線性方程求解、微分方程求解、概率統(tǒng)計(jì)等,實(shí)用性和實(shí)驗(yàn)性技術(shù)

應(yīng)用中的模擬核試驗(yàn)、油田開發(fā)、飛機(jī)設(shè)計(jì)等。

4.3非數(shù)值計(jì)算

1、分治策略

分治的設(shè)計(jì)思想,是將一個(gè)難以直接解決的大問題,分割成一些較小的同類問題,

各個(gè)擊破,最終達(dá)到解決問題的目的。二分查找實(shí)際上就是分治策略的i種典型運(yùn)用。

2、二分查找.

二分查找又叫折半查找,該方法主要將數(shù)列有序排列,采用跳躍式的方式查找數(shù)據(jù)。

以遞增數(shù)列為例,先以中點(diǎn)位置的元素作為比較對(duì)象,如果要找的元素值小于該中點(diǎn)元

素,則將待查序列縮小為左半部分,否則為右半部分。每一次比較后都可以將查找區(qū)間

縮小一半。

二分查找是一種高效的查找方法。它可以明顯減少比較次數(shù),提高查找效率。在一

個(gè)有n個(gè)元素的有序序列中,利用二分查找大約需要kg/次。但是,二分法查找的前

提條件是被查找的數(shù)據(jù)必須是有序的。

例程:假設(shè)一本字典大約1000頁,目標(biāo)信息在第328頁。翻頁過程,看誰翻的次數(shù)

最少。

在翻頁過程中借助兩個(gè)書簽,劃定目標(biāo)所屬范圍,然后翻到兩個(gè)書簽的中間位置。

每次目標(biāo)區(qū)域都更新為原來的"二分之一",當(dāng)數(shù)據(jù)范圍縮小到只有1個(gè)數(shù)的時(shí)候肯定能

得到問題的解。1000以內(nèi)的頁碼,最多翻10次肯定能找到解。

(input(”請輸入要直技的1000以內(nèi)的整數(shù):

step=0#記錄查找次數(shù)

flag1=1#目標(biāo)區(qū)域左邊界

flag2=1000#目標(biāo)區(qū)域右邊界

while(flag1<=flag2):#區(qū)間數(shù)據(jù)范困小于1則結(jié)束循環(huán)

mid二(flagl+flag2)//2*中間值

step=step+1#查找次數(shù)加1

ifmid>x:

flag2=mid-l#右邊界前移

elifmid<x:

flagl=mid+l*左邊界后移

else:

break

print('查找次數(shù)為:\step)

input(“運(yùn)行完畢,清軟回車鍵退出??.")

2,遞歸

遞歸是計(jì)算科學(xué)領(lǐng)域中一種重要的計(jì)算思維模式。它既是一種抽象表達(dá)的手段,也

是一種問題求解的重要方法。

直接或間接地調(diào)用自身的方法稱為遞歸??梢詫⑦f歸簡單類比為具有自相似性重復(fù)

的事物。圖4.3.3所示就是遞歸的一種形象表示。

圖4.3.3遞歸圖像

在數(shù)學(xué)與計(jì)算機(jī)領(lǐng)域中,遞歸函數(shù)是指用函數(shù)自身來定義該函數(shù)的方法。如著名的

斐波那契數(shù)列"1,1,2,3,5,8,13,可以遞歸定義為

C("=1或"=2)

尸(〃)={

[尸(〃-1)+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論