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

  • 2019 年 10 月 16 日
  • 筆記

大家好,從本文開始將逐漸更新Python教程指南系列,為什麼叫指南呢?因為本系列是參考《Python3程序設計指南》,也是作者的學習筆記,希望與讀者共同學習。

.py文件中的每個估計都是順序執行的,從第一行開始,逐行執行的。    

Python的8個關鍵要素

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 發佈!