1. 程式人生 > >實驗1 Python基礎

實驗1 Python基礎

1基礎知識

基於馮諾依曼模型建造的計算機包含四個子系統:儲存器、算術邏輯單元、控制單元和輸入/輸出單元,如下圖所示:

圖形使用者介面(Graphical User Interface)簡稱GUI,它是指採用圖形方式顯示計算機操作使用者介面。命令列介面(Command-Line Interface)是圖形介面普及之前使用最為廣泛的使用者介面,它通常不支援滑鼠,使用者通過鍵盤輸入指令,計算機接收指令後,予以執行。兩種圖形介面如下圖所示:

https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1531105802&di=b207c25f5150622ef644ce2d873d0033&imgtype=jpg&er=1&src=http%3A%2F%2Fwenwen.soso.com%2Fp%2F20110615%2F20110615085255-1123075529.jpg     https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1531105766&di=487cf483b8349d550423fb25d1c12172&imgtype=jpg&er=1&src=http%3A%2F%2Fwww.myexception.cn%2Fimg%2F2015%2F11%2F22%2F101840144.png

2.3 計算機程式的構成

程式是一系列定義計算機如何執行計算的指令。注意,這裡的計算可以是數學上的計算,例如求解方程;也可以是符號計算,例如在文件中搜索一併替換文字或者圖片。程式當中的基本指令包括:

輸入:從鍵盤、檔案、網路或者其他裝置獲取資料;

輸出:在螢幕上顯示資料,將資料儲存至檔案,通過網路傳送資料等;

數學:執行基本的數學運算,與加、減、乘、除;

有條件執行:檢查複合某個條件後,執行相應程式碼;

重複:重複執行某種動作,往往在重複中有一些變化;

程式的全部指令都來源於以上五種基本指令,程式設計的過程就是將龐大、複雜的任務分解為越來越小的子任務,直到這些子任務簡單到可以用這其中的一個基本指令執行。

2.4 程式語言的分類

程式語言可分為兩類:低階語言和高階語言。

低階語言是指機器語言和組合語言。計算機真正認識並能夠執行的程式碼,在我們看來是一串0和1組成的二進位制數字,這些數字代表指令和資料。它與機器硬體緊密相關,但是不符合人類的語言和思維習慣,要想把低階語言寫的程式移植到其他平臺,就必須重寫。

高階語言是讓程式按照人類的思維和語言習慣來書寫,機器無法讀懂。因此,高階語言必須要經過一個“翻譯”的過程,將其轉換成可執行的程式碼。

高階語言翻譯成機器程式碼有兩種方法:解釋和編譯。解釋是將原始碼逐條轉換成目的碼同時逐條執行目的碼的過程。執行解釋的計算機程式稱為直譯器(Interpreter)。編譯是將原始碼轉換成目的碼的過程,執行編譯的計算機程式稱為編譯器(Compiler)。兩者的執行方式如下圖所示:

2.5 Python語言

Python語言是一種解釋型的高階語言,主要特點如下:

(1)語法簡潔:實現相同功能,Python語言程式碼行數僅相當於其他語言的1/10~1/5;

(2)跨平臺:Python程式可以在任何安裝直譯器的計算機環境中執行。

(3)可擴充套件:Python可以整合C,Java等語言編寫的程式碼

(4)類庫豐富:Python直譯器提供了幾百個內建類和函式庫。此外,世界各地的程式設計師通過開源社群貢獻了十幾萬個第三方函式庫。

2.6 Python變數命名規則

在Python中使用變數時,命名規則如下:

(1)變數名只能包含字母、數字和下劃線。變數名可以用字母名或者下劃線開頭,但是不能以數字開頭;

(2)變數名是對大小寫敏感的。例如,myname和myName不是一個變數名;

(3)變數名不能含有空格;

(4)不要將Python關鍵字和函式名作為變數名,即不要使用Python保留的用於特殊用途的單詞。下表展示了Python3中常見的關鍵字。

一個變數被命名之後,可以使用賦值操作符(=)對變數進行賦值操作。變數就像計算機記憶體中的一個盒子,其中可以存放一個值,而賦值操作符的作用就相當於將值儲存在變數中。

2.7 Python書寫規則

(1)原則上是一行只有一條Python 語句。

(2)如果要在一行中寫入多條Python 語句,那麼需要使用分號(;)來特別地標明這種用法。分號表示一條語句的結束。例如:

一行一條Python 語句:

a=5

Print a

一行多條Python 語句:

a=5;print a

(3)縮排

  1. 空白在Python中是重要的。它稱為縮排。在命令列首的空白(空格和製表符)用來決定命令列的縮排層次,從而用來決定語句的分組。
  2. 這意味著同一層次的語句必須有相同的縮排。每一組這樣的語句稱為一個塊。
  3. 建議在每個縮排層次使用單個製表符或兩個或四個空格 。

(4)註釋語句

  1. 在#符後面寫的文字,一律認為是註釋語句,不參與執行。註釋語句對於閱讀程式很有幫助,命令列後加註釋語句是一個程式設計師的優良品質之一。 此外,程式設計師在測試程式碼時,也可以使用註釋來暫時禁用一行程式碼,來測試這段程式碼的功能。

2.8 Python輸入輸出語句

(1)字串的輸入函式——input()函式(需詳細編寫)

(2)字串的輸出函式——print()函式

2.9 Python基本資料型別

Python中的基本資料型別包括數字資料型別和字串資料型別。在數字資料型別中,包含整型和浮點型。如下圖所示,int就代表整型,float就代表浮點型,其區別在於數字是否帶有小數,帶有小數的就叫浮點型。

字串型別是Python中另一種基本的資料型別,屬於文字值,需要使用單引號或者雙引號包括,表示字串的開始和結束。可以使用[i]來訪問字串中的第i個字元。注意,字串中最左側的字元序號為0。

整數型別

與數學中的整數概念一致。整數型別有四種進製表示:十進位制、二進位制、八進位制和十六進位制。總結如下表:

進位制型別

引導符號

描述

十進位制

預設情況

二進位制

0b或0B

有字元0和1組成,如0b101

八進位制

0o和0O

由字元0到7組成,如,0o711

十六進位制

0x或0X

由字元0到9、a到f、A到F組成,例如0xABC

浮點數型別

與數學中的實數概念一致,表示帶有小數的數值。浮點數有兩種表示方法:十進位制表示和科學計數法。其中,科學計數法是以字母e或者E作為冪的符號,以10位基數,含義如下:

<a>e<b> = a*10b

數字型別的操作

以上7種操作符與數學習慣一致。注意,操作符運算結果可能改變數字型別,基本規則如下(注意,此部分就是Python中涉及到的資料型別強制轉換):

  1. 整數之間運算,若數學意義的結果是小數,結果為浮點數
  2. 整數之間運算,若數學意義的結果是整數,結果為整數
  3. 整數和浮點數混合運算,輸出結果為浮點數

字串型別

字串的五個基本操作如下表所示:

操作符

描述

x+y

連線字串x與y

x*n

複製n次字串x

str[i]

索引,返回第i個字元

str[N:M]

切片,返回索引第N到第M的子串,其中不包含M

轉義字元

控制字元

作用

\a

蜂鳴,響鈴

\’

單引號

\n

換行,游標移動到下行首行

\r

換行,游標移動到本行首行

\t

水平製表

\v

垂直製表

內建字串處理函式len()和str(),函式len(x)的作用是返回字串x的長度。函式str()的作用是返回任意型別x所對應的字串形式。

字串型別的格式化

字串的格式化是用於解決字串和變數同時輸出時的格式安排。Python中同時支援兩種字串格式化方法,一種是類似於C語言中printf()函式的格式化方法;另一種是採用str.format()格式化方法(str表示字串)。

str.format()方法的基本使用格式如下:

<模板字串>.format(<逗號分割的引數>)

模板字串由一系列槽組成,用來控制修改字串中嵌入值出現的位置,其基本思想是將format()方法中的逗號分割的引數按照序號關係替換到模板字串的槽中。槽用大括號({})表示,若大括號中沒有序號,則按照出現順序替換。如果大括號中制定了使用引數的序號,按照序號對應的引數替換,注意,引數是從0開始編號的。

模板字串中的槽除了包括引數序號,還可以包括格式控制資訊,此時,槽內部樣式如下:

{<引數序號>:<格式控制標記>}。

其中,格式控制標記用來控制引數顯示時的格式,其包括<填充>、<對齊>、<寬度>、<,><.精度>、<型別> 6個欄位。

<填充>:指寬度內除了引數以外的字符采用什麼方式表示,預設為空格。

<寬度>:當前槽設定輸出字串的最大寬度。若輸出字串的長度大於<寬度>設定值,則使用該字串的實際長度;反之,空餘位置被預設以空格字元補充。

<對齊>:指引數在寬度內輸出是的對齊方式,分別使用<、>和^三個符號表示左對齊、右對齊和居中對齊。

<,>:顯示數字型別的千位分隔符。

<.精度>:以.開頭,包括兩個含義。對於浮點數,精度表示小數部分輸出的有效位數。對於字串,精度表示輸出的最大長度。

<型別>:表示輸出整數和浮點數型別的格式規則。對於整數型別,輸出格式包括以下6種:

b:輸出整數的二進位制方式

c:輸出整數對應的Unicode字元

d:輸出整數的十進位制方式

o:輸出整數的八進位制方式

x:輸出整數的小寫十六進位制方式

X:輸出整數的大寫十六進位制方式

對於浮點數型別,輸出格式包括以下4種:

e:輸出浮點數對應的小寫字母e的指數形式

E:輸出浮點數對應的大寫字母E的指數形式

f:輸出浮點數的標準浮點形式

%:輸出浮點數的百分形式

2實驗步驟

2.1 命令列介面的簡單操作

點選開始—>執行,在輸入框中輸入cmd並敲擊回車。此時,可以看到以下介面,其中,C:\User\Administrator>表示當前的路徑資訊。

在命令列中輸入cd desktop並按下回車鍵,觀察輸出結果。

在命令列中輸入dir並按下回車鍵,觀察輸入結果。

在命令列中輸入md temp並按下回車鍵,繼續輸入dir並按下回車鍵,觀察輸出結果。

在命令列中輸入rd temp並按下回車鍵,繼續輸入dir並按下回車鍵,觀察輸出結果。

總結:以上五個步驟展示了在主目錄建立目錄並刪除的過程。所用命令及其對應功能如下表所示:

命令

功能

cd

更改目錄

md

建立目錄

dir

列出目錄內容

rd

刪除目錄

3.2 Python直譯器的下載與安裝(課下操作,該部分是針對只安裝Python的情況)

Python直譯器對應不同系統有三個版本:Windows, Linux和OS X,可以從http://python.org免費下載,下面我們將以Windows版本為例。登入http://python.org/download,根據計算機系統下載與之對應的Python(注:Python有兩個版本,分別是Python2和Python3。本課程將採用Python3。)雙擊所下載的程式安裝Python直譯器,如下圖所示,勾選圖中的Add Path 3.7 to PATH複選框。

圖1.4 安裝程式的啟動頁面

點選Install Now,安裝成功後顯示如下圖所示頁面。

開啟終端命令列,輸入Python,若出現Python版本號,則說明安裝成功。

3.3 Anaconda的下載與安裝

Anaconda是一個開源的Python發行版本,內部集成了常用的Python庫,例如NumPy等。與此同時,也包含了整合開發環境Spyder。安裝步驟如下:

Step 1:在https://www.anaconda.com/download/上下載Anaconda對應版本。例如我的作業系統是Windows10的64位版本,就下載64位的軟體。本實驗使用Python3.6,我們就下載Python 3.6對應的版本。

Step 2. 開始安裝後,單擊下一步。安裝路徑不能包含空格和中文,如下圖所示,這點非常重要!

Step 3:勾選兩個選框,單機Install,並等待至Anaconda開始結束。

Step 4:開啟Anaconda Prompt,並輸入Python,若看到以下輸出結果,則說明Anaconda安裝成功。

3.4 第一個Python程式

在桌面上找到Spyder並開啟它。其介面如下所示,對於該軟體,目前我們只需要瞭解到如何輸入程式碼,執行,除錯等操作即可。

請在編輯區域中輸入以下程式碼。然後按ctrl+s儲存該程式碼,並將其命名為c1_ex1.py:

1

2

3

4

5

#input name

my_name = input("What is you name?")

#print name

print("Your name is:")

print(my_name)

然後點選介面上方的綠色三角,執行該程式。在console中,我們可以看到輸出結果。注意,程式碼的第1行和第3行為程式註釋,用於解釋下面程式碼的作用。

3.5 變數的操作

我們在Spyder右下角的console框中輸入a=40,這行程式碼完成了對變數a的初始化,意味著該變數被建立,之後我們可以使用該變數。例如,我們繼續在直譯器中輸入:a+1,我們可以觀察到輸出結果為:

輸入a+c,可以觀察到:

由此我們得出結論:

我們繼續輸入:a=a+2並檢視a的值,我們可以看到a的值變成了42,這被稱為變數的複寫,分別輸入:type(10),type(40.0)和type(“Hello World!”),通過觀察結果,可以得出函式type()的作用為:

3.6 數字型別的操作

在console中輸入100/3和100//3,所得結果分別為:在直譯器中輸入124+4.0所得結果為:解釋原因為:

7種二元數學操作符(+、-、*、/、//、%、**)都有與之對應的增強賦值操作符(+=、-=、*=、/=、//=、%=、**=),通過實驗,探索增強賦值操作符+=的作用,並延伸到其他增強賦值操作符中:                                                   

思考下列各個操作符的優先順序,並計算表示式的值:

30-3**2+8//3**2*10

3*4**2/8%5

2**2**3

在console中寫出下列數學表示式,並計算結果

x=(24+7-3×4)5

x=(1+32)×(16mod7)/7

執行結果為:

3.5 轉義字元操作

新建一個名為c1_ex2.py的檔案,請輸入以下程式碼,體會各個轉義操作符的用法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

stu1 = "\t李小明"

stu2 = "歐陽\nn小明"

stu3 = "\\狐小\\"

stu_to = '''

做一個列表

\t* 李小明

\t* 歐陽小明

\t* 令狐小明

'''

print(stu1)

print(stu2)

print(stu3)

print(stu_to)

3.5 字串型別的操作

在Anaconda Prompt中輸入以下程式碼,體會字串的用法:

1

2

3

4

5

6

'Hello world!'[1]

'Hello world!'[0:6]

'Hello world!'[:7]

'Hello world'[2:]

'Hello'+'Python'+' '+'!'

'Python'*3

3隨堂練習

3.1 通過命令列在桌面建立一個名為test的目錄,之後在test目錄下分別建立example1和example2目錄,然後刪除example1目錄。

3.2 新建一個hw1_1.py的檔案,編寫一個銀行叫號系統,要求程式執行時列印顯示以下介面:

1. 存款

2. 貸款

3. 開卡

4. 掛失

請輸入您要辦理的業務:

當輸入一個數字1-4時,列印一句歡迎語並展示你選擇要辦理的業務號碼。

3.3 月球上的物體的體重是地球上的16.5%,假如你在地球上每年增長0.5kg,計算未來十年你在地球和月球上的體重狀況。

3.4 請查閱資料,新建一個hw1_2.py檔案,編寫程式,將下列字串轉換成大寫並列印輸出(提示使用upper()方法)。

how old are you?

what color do you like?

what about this one?

3.5 思考題:試著使用input函式接收一個整數輸入,你會發現什麼?請解釋原因並思考如何才能接收一個整數輸入。

3.6 新建一個hw1_3.py檔案,並編寫一個程式。要求在程式中讀入一個表示星期幾的數字(1~7),輸出對應的星期字串名稱。例如,輸入3,返回“星期三”。(提示:使用一個字串變數儲存字串“星期一星期二星期三星期四星期五星期六星期日”並使用字串切片)