開始
命令行運行 Python 腳本的步驟:
a、 打開 Command(CMD)
b、 cd 到腳本所在目錄下
c、 python script.py
- 這樣操作的前提是,你已經配置好環境變量。
計算機基礎部分
-
計算機定義:
計算機是根據指令操作數據的設備,計算機具有功能性和可編程性兩大特點
。 -
編譯和解釋的區別
:編譯是一次編譯後,在源代碼無改變的情況下,以後執行無需再次編譯便可以直接執行,符合批處理系統;解釋是按行解釋執行,一次一行代碼,每次執行都需要重新解釋,符合交互式系統。編譯的好處就是目標代碼執行速度快,在同系列操作系統上使用靈活,不足之處就是可移植性較差;解釋程序的好處就是保留源代碼,程序糾錯方便,可移植性強,腳本可以在任何一臺裝有相應解釋器的設備上運行。 -
機器語言和彙編語言是CPU所能夠直接執行的語言,其餘語言都需要編譯或解釋成彙編語言或機器語言後才能被 CPU 執行
。 -
IPO 程序編寫方法
:
Input:每個程序都有數據輸入功能。
Process:每個程序都有相應的事事務處理邏輯。
Output:每個程序都有將處理結果進行輸出的功能。
Python 適應部分
-
Python 作爲交互式編程語言,即解釋性編程語言,沒有所謂的腳本結構
,而同樣是面向對象編程語言的 C/C++、Java 都有一個基本腳本框架。理論上 Python 腳本可以按行與縮進規則任意編輯代碼,但實際上爲了適應 Project 的開發,Python 腳本應當做一些結構規範: -
a、
在 Project 裏面的啓動程序腳本里,應當設置由如下標識的程序入口: if __name__ == “__main__”:
-
b、
函數式編程:編輯 Python 腳本應當模塊化,也就是相應功能封裝在一個 def 裏面,而不是由着性子隨便編輯。
-
c、
縮進一致:由於 Python 不再使用花括號來劃分代碼域,而是靠縮進來確定代碼域,因此不能隨便縮進。
-
Python 使用井號
“#”
和“’’’註釋’’’”
兩種分別進行行註釋和塊註釋。引號都必須是英文輸入法下的。 -
Python 腳本中的變量名、函數或方法名、屬性名等涉及到命名的
應當由大小字母、數字和下畫線、漢字(不推薦)等組成
,並且不得以數字開頭
,下畫線或雙下畫線開頭命名的標識符具有特殊含義故而也不得隨便使用
。
保留字:
- Python 中保留字如下:
- 變量名不得直接使用上述保留字
字符串:
由於 Python 中的字符型數據只有字符串一種
,不像 C/C++ 和 Java 有單字符和字符串兩種,因此單引號和雙引號都可以用來擴起一個字符串,通常以雙引號爲主
。實際使用靈活變化,例如字符串裏的值中有雙引號,則字符串可以採用單引號括起來,反之則反。另外,由於反斜槓在 Python 中同樣具有轉義作用,因此字符串中的反斜槓都應當寫成雙反斜槓。此外,字符串還可以三引號表示,三引號通常用於表示帶換行的文本
。
賦值
- Python 採用“=”進行賦值,可以單個賦值,也可以多個賦值:a,b=1,2
輸入與輸出:
- python 只有一對控制檯輸入輸出函數,分別是:input 和 print,使用格式如下:
variable = input(“prompt”)
print(attribute)
- input 函數的返回值爲字符串,參數是提示字符。print 函數的參數可以是任何數據對象。
控制結構:
- Python 中同樣具有順序執行、選擇執行和循環執行三種結構,選擇執行由
if…elif…else
三個關鍵字靈活組成;循環執行由for
和while
標識,while 用法和其他編程語言一樣
,for 循環稍有不同
,for 使用形式如下:
for a in range(start, end, step) 或 for a in object(序列型數據對象,如array、list 等)
eavl() 函數:
該函數可以將字符串中的數字、運算式等轉換爲 Python 語句並執行
,通常用於將input 函數的返回值轉換爲非字符型數據。
類與函數
- 函數用 def 標識,如無特別需求,Python 定義函數時並不會顯示的規定函數的參數類型和返回值。
- python 同樣用 class 作爲類的標識,一個簡單的類如下:
class Car:
def __init__(self):
print("你調用的Car 類")
self.__speed = 20
self.__color = "black"
self.__price = 123.456
def setColor(self, color):
self.__color = color
def setSpeed(self, speed):
self.__speed = speed
def setPrice(self, price):
self.__price = price
def Display(self):
print("The color, speed and price of this car is " + self.__color + ",speed: {:d}".format(
self.__speed) + ", price:{:.2f}".format(self.__price))
if __name__ == "__main__":
car = Car()
car.Display()
car1 = Car()
car1.setColor("white")
car1.setSpeed(200)
car1.setPrice(45800.425)
car1.Display()
程序輸出:
- 其中
def __init__(self)
函數就是類體的初始化函數,也可以理解爲構造函數,那些以雙下畫線開頭的變量就是類的私有屬性
,外部是無法訪問到的,只能通過類的公開方法進行間接訪問。
異常處理
- Python 使用 try-except 語句進行異常處理,使用格式如下:
try:
expression sentence 1
except ExceptionType1:
expression sentence 2
…
expect ExceptionType N:
expression sentence 3
# try-except 語句還可以跟 else 和 finally 結合使用:
try:
expression sentence 1
except ExceptionType 1:
expression sentence 2
else:
expression 3
finally:
expression 4
Turtle 庫
即所謂的海龜庫,是 Python 提供的一個用於繪製簡單圖像的圖形繪製庫
。
座標體系
海龜的座標體系有兩套,分別是用戶視界和海龜視界
,前者以屏幕的縱橫爲x 軸和 y 軸,方向向右和向上;後者以海龜爲中心的前後左右四個方向,注意海龜的初始朝向是朝屏幕右方的,因此可以如此將兩個座標體系聯繫起來,默認狀態下:
海龜前方就是屏幕右方,海龜左方就是屏幕上方,海龜後方就是屏幕左方,海龜右方就是屏幕下方。
.setup(width, height, startx, starty)
width:窗口寬度,整數值表示像素值,小數值表示窗口與屏幕的比例
height:窗口高度,值得設置同 width
startx:窗口左側距屏幕左側的像素距離,默認水平居中。
starty:窗口頂部距屏幕頂部的像素距離,默認垂直居中。
畫筆控制函數
.penup() 函數:筆拿起,該函數之後的任何操作不會在畫布上留下痕跡。別名:.pu(), .up()
.pendown() 函數:筆落下,功能與 penup 函數相反。別名:.pd(), .down()
.pensize() 函數:設置畫筆尺寸,即筆畫寬度。別名:.width()
.pencolor() 函數:設置畫筆顏色,參數值可以是顏色名字符串,也可以是(r, g, b)元組。
形狀繪製函數
.fd(distance) 函數:朝當前方向前進 distance 距離,距離爲正值則表示前進,距離爲負值則表示後退。別名:.forward(distance)
.seth(to_angle) 函數:用於改變畫筆繪製方向,即將畫筆設置爲to_angle,角度爲絕對方向角度值。別名:.setheading(to_angle)
.circle(radius, extent=None)函數:用於以 radius 爲半徑畫角度爲 extent的弧,當第二個參數不指定時,則默認畫圓
Python 數據類型
一、 數字類型
- 數字類型主要有
整型和浮點型、複數類型
。
整數類型:
浮點類型
對應數學中實數,浮點型必須有小數值,可以爲 0,但不能不帶,否則無法與整型區分開來
。- 浮點型主要有十進制小數和科學計數法兩種表示方法,科學計數法形式如下:
<a>e<b>=a*10^b.
複數類型
- Python 支持複數類型,複數的虛部用後綴“j”或“J”來標識,而實部和虛部之間用“+”連接,例如:
12.3+4j,1.23e-4+5.67e+89j
。對一個複數 z,可以用 z.real 和 z。image 來獲取實部和虛部的值。
三種數據類型存在一種逐漸擴展關係:
- 整數——>浮點數——>複數
1) 整數之間運算,如果結果是數學意義上的小數,則結果爲浮點型
2) 整數間運算結果爲整數的,結果數據類型爲整型
3) 整數和浮點數運算,結果爲浮點型
4) 整數或浮點型與複數運算,結果爲複數。
運算符
運算函數
轉換函數
二、 字符類型
- Python 中的字符類型只有字符串,字符串的表示前文已說過。
操作符
處理函數
處理方法
字符串格式化
-
Python 使用字符串對象的 format 方法對字符串進行格式化,該方法使用方法如下:
“{<參數序號>:<格式控制標記>}”.format(att1,att2….)
-
其中的格式控制標記,自“:”開始從左向右依次如下:
Math 庫
數字常數
數值表示函數
冪對數函數
三角函數
高等特殊函數
random 庫
常用函數
函數
函數調用過程
- 1) 調用程序在調用處暫停執行
- 2) 在調用時將參數複製給函數的形參
- 3) 執行函數體語句
- 4) 函數調用結束給出返回值,程序回到調用前的暫停處繼續執行
lambda 函數
- 即
匿名函數
,用於完成簡單的功能,類似於C/C++中的宏定義,使用形式如下:
<函數名> = lambda <參數列表> : <表達式>
可選參數
可選參數即帶有默認值的參數
,即函數在聲明時便爲參數賦值,因此可以在使用該函數時可以使用默認賦值。可選參數的位置應當位於參數列表的最右邊,即位於非可選參數的右邊
。例如:defexample(a, b=12).
可變數量參數
- Python 通過在參數列表的最右邊的參數帶上
星號“*”表示可變數量參數
,聲明形式如下:
def example(a, *b)
,同樣的可變數量參數也只能在參數列表的最後
。
參數傳遞方式
- Python 中的函數的參數傳遞有按位置傳遞和按名稱傳遞兩種方式,
按位置則實參必須與形參列表一一對應
,否則函數結果將出錯;按名稱傳遞
,即用“形參名=實參”的形式進行傳參,此時參數位置可以不必一一對應。
函數變量域
- 與 C/C++ 和 Java 一樣,Python 中
函數體內部的變量也是局部變量
,只能作用於函數體內部,同樣的形參的變化不會影響到實參。如果想函數體內的某個變量作用到函數體外,則可以用global
關鍵字聲明爲全局變量。
遞歸調用
- 遞歸調用,就是
函數自身調用自身
,經典例子就是斐波那契數列的求法。
python 內置函數
- 上表部分函數說明如下:
1) all() 函數:針對組合類型數據
,若其中每個元素都是 True和非空元素、非 0,則返回True,否則返回 False。
2) any() 函數:只要組合類型數據中的元素有一個非False,就返回True。
3) hash() 函數:對於能夠計算哈希的類型返回哈希值
。
4) id() 函數:對每一個數據返回唯一編號,即數據的內存地址
,常用於比較兩個數據是否一致。
5) reversed() 函數:返回輸入組合數據類型的逆序形式。
6) sorted() 函數:對一個序列進行排序,默認從小到大。
7) type() 函數:返回參數對應的數據類型名稱
。
datetime 庫
1) datetime.date:日期類,可以表示年月日
2) datetime.time:時間類,可以表示小時、分鐘、秒、毫秒等
3) datetime.datetime:日期和時間的表示類,功能覆蓋date和time
4) datetime.timedelta:與時間間隔有關的類
5) datetime.tzinfo:與時區有關的信息表示類
所有計算機都能輸出從格林威治標準時間1970年1月1日00:00:00 開始到當下的時間計數,精確到秒。
datetime 類
-
datetime.now()
函數:返回當前日期和時間,精確到秒,2020-06-20 14:54:01.396110。 -
datettime.utcnow()
函數:返回當前日期和時間的 UTC 表示,精確到微秒2020-06-20 06:58:14.231605 -
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0)
方法:返回一個指定時間日期的 datetime 類型,可以精確到微秒。其中年份指定必須大於 1970,小於 2^39 (64位系統),微秒則不能大於1 000 000 -
以下屬性或方法的調用都要用datetime對象的“對象名.method()”形式調用
1) 常用屬性
2)常用格式化方法
3)strftime格式化控制符
組合數據類型
- 組合數據類型分爲
序列類型、集合類型和映射類型
。
一、 序列類型
- Python的序列類型主要有字符串、元組和列表。
序列類型有12個通用操作符或函數
,如下表:
1、元組
元組使用圓括號括起來,元素之間用英文逗號分隔
,聲明時也可以不需要用圓括號
- 元組裏的元素也可以是元組。
元組一旦聲明就不能修改
,元組通過“[]”來取指定元素,如下:
- 由上也可以看出,元組裏的元素的數據類型可以是不同數據類型的。
元組還可以用tuple() 函數將其他序列型數據轉換而得到
。
2、列表
列表使用中括號“[]”括起來
,可以由聲明得到,也可用list() 函數轉換其他序列型數據而得到。同樣的列表中的元素的數據類型可以不一致,元素也可以是一個列表,元素之間用英文逗號分隔。列表也是可以用“列表名[i]”的形式取指定元素的值。列表是幾維,就可以有幾個中括號,如下
列表操作
二、 集合類型
-
Python 中的集合類型就是集合(set),與數學中的集合一樣,是一種無序集,元素類型只能是固定數據類型
,Python編譯器界定固定數據類型與否主要考察類型是否能夠進行哈希運算,能進行哈希運算都能作爲集合元素。 -
能作爲集合元素的有整數、浮點數、字符串、元組
-
不能作爲集合元素的有列表、字典和集合類型本身
。 -
集合用花括號“{}”括起來,集合可以由用花括號進行聲明也可以用set() 函數轉換而來
操作符
操作函數或方法
三、 映射類型
映射類型是“鍵-值”數據項的組合
,元素都是鍵值對,元素之間無序。通常稱鍵爲屬性,值爲屬性值。- Python 中爲映射類型的數據就是字典(map)。字典的形式如下:
dict = {<key1>:<value1>, …, <keyN>:<valueN>}
- 例如:
- 字典中的鍵值對的訪問模式如下:
<值> = <字典變量名>[<鍵>]
函數和方法
四、 遍歷元素
- 所有的組合類型都可以用 for語句進行元素遍歷,如下: