顯示具有 Python::資料型態 標籤的文章。 顯示所有文章
顯示具有 Python::資料型態 標籤的文章。 顯示所有文章

2021年3月6日 星期六

Python 變數用法

學習目標:
  • 了解 Python 變數名稱用法!
  • 了解變數名稱命名技巧!

使用變數練習:
  1. 變數(Variable):可變換的值!
  2. 變數名稱:代表可變換值的名稱!
  3. Python 變數名稱命名技巧:
    • 命名時,儘量可以讓人看出所代表值的意義為何,範例 1:
      >>> radius = 3
      >>> PI = 3.141592
      >>> print('圓面積:', radius * radius * PI)
      28.274328
      
  4. 因為 Python 為動態定型語言,在變數名稱之前,沒有宣告變數的資料型態
  5. 利用 id() 可以查出變數名稱所在的記憶體位置資訊!範例 2:
    >>> print(id(radius))
    
  6. 變數名稱一向是參考到記憶體久的變數值,是故,在運算過程中,也會有變動的情況,範例 3:
    >>> x = 10
    >>> print(id(x))
    >>> x = x + 1
    >>> print(id(x))
    >>> y = [1,2,3]
    >>> print(id(y))
    >>> z = y
    >>> print(id(z))
    >>> y[0] = 10
    >>> z
    
  7. 變數名稱的值,雖然相同,但可能不是同一個記憶體內容的值!範例 4:
    >>> x = [1,2,3]
    >>> y = [1,2,3]
    >>> x == y
    >>> x is y
    
  8. 刪除變數的方式, 範例 5:
    >>> del x
    

2021年2月20日 星期六

Python 的基本資料型態(二)

群集型態:
  • Python 支援多種資料結構,包含清單(list)、集合(set)、字典(dict)、Tuple !
  • 每一種資料結構有其使用方式,請注意其不同的使用條件!
清單(list):
  1. 清單(list):其使用特性為有序、具備索引值、內容長度可變動,使用 [] 符號,內容使用逗號區隔!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>> names = ['Peter', 'James', 'Mary']
      >>> names
      ['Peter', 'James', 'Mary']
      >>> print(names)
      ['Peter', 'James', 'Mary']
      >>> print(names[0])
      Peter
      
  2. 可使用 append()、extend()、pop()、remove()、reverse()、sort() 等方法,進行資料結構的調整!
    • 範例 2:
      >>> names = ['Peter', 'James', 'Mary']
      >>> names
      ['Peter', 'James', 'Mary', 'D', 'a', 'v', 'i', 'd']
      >>> names.remove('D')
      >>> names
      ['Peter', 'James', 'Mary', 'a', 'v', 'i', 'd']
      >>> names.remove(names[3])
      >>> names
      ['Peter', 'James', 'Mary', 'v', 'i', 'd']
      >>> names.remove(names[3-4])
      >>> names
      ['Peter', 'James', 'Mary', 'v', 'i']
       (註:因為 3-4 = -1,所以是由後往前數一個欄位)
      >>> names.pop(1)
      'James'
      >>> names
      ['Peter', 'Mary', 'v', 'i']
      (註:pop() 是指要提出哪一個欄位的值!提出後,不寫回原欄位!)
      >>> names.sort()
      >>> names
      ['Mary', 'Peter', 'i', 'v']
      >>> names.append('James')
      >>> names
      ['Mary', 'Peter', 'i', 'v', 'James']
      >>> names.reverse()
      >>> names
      ['James', 'v', 'i', 'Peter', 'Mary']
      >>> names.extend(['David','Poll'])
      >>> names
      ['James', 'v', 'i', 'Peter', 'Mary', 'David', 'Poll']
      
集合(set):
  1. 集合(set):其特色為內容是無序但不重複!使用{}符號包含元素,元素間使用逗號分隔!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>> names = set()
      >>> names
      set()
      >>> names.add('Peter')
      >>> names
      {'Peter'}
      >>> names = {'Peter','Mary'}
      >>> names
      {'Mary', 'Peter'}
      (註:集合會自動排序)
      >>> names.add('Peter')
      >>> names
      {'Mary', 'Peter'}
      >>> names.remove('Peter')
      >>> names
      {'Mary'}
      >>> 'Peter' in names
      False
      
字典(dict):
  1. 字典(dict):成雙成對的 key-value 架構!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>> userpws = {'Peter':32123 , 'David':'abc123'}
      >>> userpws['David']
      'abc123'
      >>> userpws['Peter']
      32123
      >>> userpws['Mary'] = 987654
      >>> userpws
      {'Peter': 32123, 'David': 'abc123', 'Mary': 987654}
      >>> del userpws['David']
      >>> userpws
      {'Peter': 32123, 'Mary': 987654}
      >>> 'Mary' in userpws
      True
      >>> userpws['Mary'] = 12345
      >>> userpws
      {'Peter': 32123, 'Mary': 12345}
      >>> userpws.get('David')
      >>> userpws.get('David')  == None
      True
      >>> userpws.get('David', 'ABC123')
      'ABC123'
      >>> userpws
      {'Peter': 32123, 'Mary': 12345}
      (註:get 只是暫存資料!)
      >>> list(userpws.items())
      [('Peter', 32123), ('Mary', 12345)]
      >>> list(userpws.keys())
      ['Peter', 'Mary']
      >>> list(userpws.values())
      [32123, 12345]
      
      
Tuple(tuple):
  1. Tuple(tuple):有序的資料結構,使用[]指定索引元素!建立之後,就無法變動!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>> 10,
      (10,)
      >>> 10,20,30
      (10, 20, 30)
      >>> acct = 1, 'Peter', True
      >>> acct
      (1, 'Peter', True)
      >>> type(acct)
      <class 'tuple'>
      >>> print(acct[1])
      Peter
      >>> acct[1] = "Mary"
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: 'tuple' object does not support item assignment
      >>> id, names, access = acct
      >>> names
      'Peter'
      >>> access, names, id = id, names, access
      >>> access
      1
      (註:用來置換變數值內容)
      >>> a, *b, c = [1,2,3,4,5]
      >>> b
      [2, 3, 4]
      

2016年7月18日 星期一

Python 的字串與串列(二)

字串格式化:
  1. 善用 print() 函式 !!
    • 範例 1:
      #python38
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>> name = 'Peter'
      >>> print('Hello, ', name)
      Hello,  Peter
      
    • 範例 2:
      >>> name = 'Peter'
      >>> print('Hello', end = '')
      Hello>>> print(name)
      Peter
      (end = '' 表示不換行!)
      
    • 範例 3:
      >>> name = 'Peter'
      >>> print('Hello', name, sep = ', ')
      Hello, Peter
      (sep = ', ' 表示使用逗點作為分隔符號!)
      
  2. 善用 format() 字串格式化函式:
    • 範例 1:
      >>> '{} / {} = {}'.format(10,3,10/3)
      '10 / 3 = 3.3333333333333335'
      (按 {} 順序,一個蘿蔔一個坑地填入數字!)
      
    • 範例 2:
      >>> '{2} / {1} = {0}'.format(10/3,3,10)
      '10 / 3 = 3.3333333333333335'
      (在{}中,使用數字指定填入的資料!)
      
    • 範例 3:
      >>> '{a} / {b} = {results}'.format(results=10/3,b=3,a=10)
      '10 / 3 = 3.3333333333333335'
      (在{}中,使用變數名稱指定填入的資料!)
      
    • 範例 4:
      >>> '{a:5d} / {b:5d} = {results:.2f}'.format(results=10/3,b=3,a=10)
      '   10 /     3 = 3.33'
      (在{}中,指定填入資料的格式,5d 表示整個欄位有5個字元,沒有字元的地方,填入空白字元!)
      
    • 範例 5:
      >>> '{a:<5d} / {b:<5d} = {results:.2f}'.format(results=10/3,b=3,a=10)
      >>> '10    / 3     = 3.33'
      (在{}中,指定填入資料的格式,<5d 表示整個欄位有5個字元,並且靠左對齊!)
      
    • 範例 6:
      >>> '{a:>5d} / {b:>5d} = {results:.2f}'.format(results=10/3,b=3,a=10)
      >>> '   10 /     3 = 3.33'
      (在{}中,指定填入資料的格式,<5d 表示整個欄位有5個字元,並且靠右對齊!)
      
  3. 善用 f-string 進行字串運算:
    • 範例 1:
      >>> name = "Peter"
      >>> f'Hello, {name}'
      'Hello, Peter'
      
    • 範例 2:
      >>> name = "Peter"
      >>> f'Hello, {"Mac" if name == "Peter" else name}'
      'Hello, Mac'
      

Python 的基本資料型態(一)

內建數值型態:
  • 整數:int 不分整數或長整數
  • 浮點數:float
  • 字串:" " 與 ' ' 內的字元串
  • 布林:True 與 False
    • None、False、0、0.0、0j、''、()、{}、[] 以上均被 bool() 視為 False,其餘均為 True
  • 複數:使用 a+bj 的形式使用
  • Python 是一種「強類型」語言,物件的類型無法變更!

  • Python 的四則運算:
    運算子說明範例結果
    +加法3 + 58
    -減法3 - 5-2
    *乘法3 * 515
    /有小數點的除法3 / 50.6
    //沒有小數點的除法3 // 50
    %取餘數3 % 53
    **算次方3 ** 5243
  • 運算順序:先乘除,後加減!有括號,先算括號內部!

  • Python 常用四則運算的縮寫:
    運算子範例展開說明
    += a += 3 a = a + 3
    -= a -= 3 a = a - 3
    *= a *= 3 a = a * 3
    /= a /= 3 a = a / 3
    //= a //= 3 a = a // 3
    %= a %= 3 a = a % 3
    **= a **= 3a = a ** 3

  • Python 基數:
    • 二進位:0b 或 0B
    • 八進位:0o 或 0O
    • 十六進位:0x 或 0X

快速測試:
  1. 使用互動式指令(REPL):
    #python3
    Python 3.4.3 (default, Jan 26 2016, 02:25:35)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
  2. 四則運算:
    >>> 3 - 5
    -2
    >>> 3 / 5
    0.6
    >>> 3 // 5
    0
    >>> 3 % 5
    3
    >>> 3 ** 5
    243
    >>> 3 + 5
    8
    >>> 3 * 5
    15
    >>> 2 + 3 * 5
    17
    >>> ( 2 + 3 ) * 5
    25
    >>> a = 3 + 2j
    >>> b = 2 + 3j
    >>> a + b
    (5+5j)
    
  3. 四則運算縮寫的使用方式:
    >>> a = 3
    >>> a %= 3
    >>> print(a)
    0
    >>> a = 2
    >>> a **= 3
    >>> print(a)
    8
    
  4. 基數展現方式:
    >>> 0b101011
    43
    >>> 0o732641
    243105
    >>> 0xFABC5D
    16432221
    

Python 的字串與串列(一)

字串基本認知:
  • Python3 支援 Unicode 標準,可容納任何語言文字!
  • Python 的字元是不可變的!
  • 字串:字元一個一個串起來的結果!
  • Python 處理字串常用函數:
    函數名稱說明
    str()將資料類型轉換成字串
    print()在螢幕上列出內容
    len()計算字元長度
    split()利用特定分隔符號來分解字串
    join()結合字串
    strip()修剪兩端的字元
    capitalize()第一個字母改成大寫
    title()每個字的第一個字元改成大寫
    upper()所有字元改成大寫
    lower()所有字元改成小寫
    swapcase()大小寫互換
    center()置中字串
    ljust()靠左對齊
    rjust()靠右對齊
    replace()置換字串
    \跳脫字元設定
    \n換行
    \t空出一個間隔來對齊文字
    +結合字串
    *複製字串
    []擷取字元
    [開始:結束:間隔]擷取字串中的某一段字元組

快速測試:
  1. 使用互動式指令:
    #python3
    Python 3.4.3 (default, Jan 26 2016, 02:25:35)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
  2. 字串練習:
    >>> str(123)
    '123'
    >>> abc = "Hello,\n This is a book!,\n"
    >>> print(abc)
    Hello,
     This is a book!,
    
    >>> deg = "He is a boy,\t and She is a girl!\t"
    >>> print(abc+deg)
    Hello,
     This is a book!,
    He is a boy,     and She is a girl!
    >>> abc[5]
    ','
    >>> abc[15]
    ' '
    >>> abc[8]
    'T'
    >>> abc[3:15:2]
    'l, hsi'
    >>> abc[-3]
    '!'
    >>> len(abc)
    25
    >>> abc.title()
    'Hello,\n This Is A Book!,\n'
    >>> abc.upper()
    'HELLO,\n THIS IS A BOOK!,\n'
    >>> abc.lower().capitalize()
    'Hello,\n this is a book!,\n'
    >>> abc.swapcase()
    'hELLO,\n tHIS IS A BOOK!,\n'
    >>> abc.center(50)
    '            Hello,\n This is a book!,\n             '
    >>> abc.ljust(50)
    'Hello,\n This is a book!,\n                         '
    >>> abc.rjust(50)
    '                         Hello,\n This is a book!,\n'
    >>> abc.replace('book','pen')
    'Hello,\n This is a pen!,\n'