Python3程式設計指南:01 過程型程式設計快速入門
阿新 • • 發佈:2019-10-16
大家好,從本文開始將逐漸更新Python教程指南系列,為什麼叫指南呢?因為本系列是參考《Python3程式設計指南》,也是作者的學習筆記,希望與讀者共同學習。
.py檔案中的每個估計都是順序執行的,從第一行開始,逐行執行的。
Python的8個關鍵要素
1、資料型別
- int整數(正整數或負整數)
- Python所能表示的整數大小隻受限於機器記憶體
- 使用int()可以將字串轉換為整數,允許字串頭尾帶有空格,例如:int("68")
- str字串(Unicode字元序列)
- 使用方括號([])來存取字串序列中的某一項
- 使用str()幾乎可以將任何資料項轉換為字串
2、物件引用
- 定義:儲存某種資料型別的變數
- 語法:objectReference=value
不需要預先的宣告語句,也不需要指定資料型別
- 在Python中,"="的作用是將物件引用與記憶體中的某物件進行繫結,如果物件引用已經存在,就簡單的進行繫結,以便引用”=“操作符右面的物件;如果物件引用尚未存在,就由”=“操作符建立物件引用。
- 限制:不能與任何Python關鍵字相同
Python使用 “動態型別” 機制,也就是說,在任何時刻,只要需要,某個物件引用都可以重新引用一個不同的物件(可以是不同的資料型別)。
temp = 123 print(temp, type(temp)) temp = 'hello' print(temp, type(temp)) output: 123 <class 'int'> hello <class 'str'>
3、組合資料型別
- 元組和列表可以用於儲存任意數量、任意型別的資料項。元組是固定的,建立之後就不能改變;列表是可變的,在需要的時候,可以插入或者移除資料項。
- 實質上,列表與元組並不真正儲存資料項,而是存放物件引用,建立列表與元組時(以及在列表中插入資料項時),實際上是使用其給定的物件引用的副本,在字面意義項(比如整數或字串)的情況下,會在記憶體中建立適當資料型別的物件,而存放在列表或元組中的才是物件引用。
- 點(存取屬性)操作符用於存取某物件的屬性
4、邏輯操作符
4.1 身份操作符:is。
- 並不必須對進行比較的物件本身進行檢查,is操作符只需要對物件所在的記憶體地址進行比較——同樣的地址儲存的是同樣的物件。
a = [1, 'abc']
b = [1, 'abc']
print(a is b)
a = (1, 'abc')
b = (1, 'abc')
print(a is b)
a = b
print(a is b)
output:
False
False
True
4.2 比較操作符:==、!=、>、>=、<、<=
- 與身份運算子不同,比較運算子進行的是值比較,即比較兩個引用物件所指向的值。
a = [1, 'abc']
b = [1, 'abc']
print(a is b)
a = (1, 'abc')
b = (1, 'abc')
print(a is b)
a = b
print(a is b)
output:
True
True
True
- 結鏈比較
a = 9
print(0 <= a <= 10)
output:
True
4.3 成員操作符:in。
in來測試成員關係,用not in來測試非成員關係。
# in運算子
a = (3, 45, 'hello', {'name': 'lisi'})
print(45 in a)
string = 'zhangsan|wanger'
print('|' in string)
output:
True
True
4.4 邏輯運算子:and、or與not。
- and與or都使用short-circuit邏輯,並返回決定結果的運算元——而不是返回布林值(除非實際上就是布林運算元)。
- not返回布林型結果
5、控制流語句
在Python中,一塊程式碼,也就是說一條或者多條語句組成的序列,稱為suit。
5.1 if語句(if...elif...else...)
語法:
if boolean_expression1:
suite1
elif boolean_expression2:
suite2
else:
suite3
5.2 while語句
while語句用於0次或多次執行某個suite,迴圈執行的次數取決於while迴圈中布林表示式的狀態,其語法為:
while boolean_expression:
suite
5.3 for...in語句
for迴圈語句重用了關鍵字in,其語法為:
for variable in iterable:
suite
5.4 基本的異常處理
Python的很多函式與方法都會產生異常,並將其作為發生錯誤或重要事件的標誌。其語法為:
try:
try_suite
except exception1 as variable1:
exception_suite1
...
except exceptionN as variableN:
excetpion_suiteN
其中as variable部分是可選的。
6、算術操作符
int資料型別是固定的,一旦賦值就不能改變
- 除法操作符(/)產生一個浮點值
- 剝離操作符(//)產生一個整數值
- 增強賦值操作符
- 不可變資料型別:a+=8:a+8之後產生新的int物件,並與a重新繫結
- 可變資料型別:使用+=後,原始值改變,不會重新繫結
- a+=b與a=a+b區別:前者只查詢一次a的值,有更快的可能性
- 字串列表+=和append的區別
- li = ['aaa','bbb'] li += 'ccc' => li = ['aaa','bbb','c','c','c']
- li = ['aaa','bbb'] li.append( 'ccc') => li = ['aaa','bbb','ccc']
7、輸入/輸出
- 內建input()函式,用來接收使用者的輸入,輸入之後按Enter鍵結束輸入
- 內建print()函式可以輸出所有python資料型別
8、函式的建立與呼叫
建立函式語法:
def functionName(arguments):
suite
- arguments可選,如果為多個引數,用逗號隔開
- 每個函式有一個返回值,預設為None,可以使用return value來制定返回值,可以是一個值,也可以是一組值
- 執行def時會建立一個函式物件,同時建立一個帶有指定名的物件引用
例項
為了熟悉以上關鍵要素,我們用一個例項來練習一下:
建立一個生成隨機整陣列成的網格程式,使用者可以規定需要多少行、多少列,以及整數所在的區域。
- 首先引入random模組,該模組用於生成隨機數:
import random
構建獲取使用者輸入函式
該函式需要3個引數:msg為提示資訊,minimum為最小值,default為預設值。該函式的返回值有兩種情況:default(使用者沒有輸入直接按Enter鍵),或者一個有效的整數。
def get_int(msg, minimum, default):
while True:
try:
line = input(msg)
# 如果輸入值為空並且default不為None
if not line and default is not None:
return defalut
# 將輸入轉為整形
i = int(line)
# 如果輸入值小於最小值,提示使用者
if i < minimum:
print("must be >=", minimum)
else:
return i
# 異常處理
except ValueError as e:
print(e)
- 讓使用者輸入相關的值
# 使用者輸入行數
rows = get_int('rows:', 1, None)
# 使用者輸入列數
columns = get_int('columns', 1, None)
# 使用者輸入最小值
minimum = get_int('minimum(or Enter for 0):', -10000, 0)
default = 1000
# 如果最小值大於default,default設定為最小值的2倍
if default < minimum:
default = 2 * minimum
# 使用者輸入最大值
maximum = get_int('maximum (or Enter for' + str(default) + ')', minimum, default)
- 根據使用者輸入輸出隨機值:
row = 0
while row < rows:
line = ''
column = 0
while column < columns:
# 生成一個大於minimum,小於maximum的隨機整數
i = random.randint(minimum, maximum)
s = str(i)
# 讓每個數佔10個字元,為了輸出整齊
while len(s) < 10:
s = ' ' + s
line += s
column += 1
print(line)
row += 1
以下為輸出資訊:
rows:5
columns7
minimum(or Enter for 0):-1000
maximum (or Enter for1000)1000
-871 -205 426 820 986 369 238
-389 485 388 -907 243 346 -912
-885 528 50 -572 744 519 -128
785 -747 -565 -390 522 -357 933
-144 947 -949 -409 105 954 708
注:本文知識介紹Python的8個關鍵要素,但是並沒有完全介紹,比如資料型別不只包括整形和字串,後面的文章中還會詳細介紹。
本文由部落格一文多發平臺 OpenWrite 釋出!