1. 程式人生 > >Python3程式設計指南:01 過程型程式設計快速入門

Python3程式設計指南:01 過程型程式設計快速入門

大家好,從本文開始將逐漸更新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 釋出!