常值

所謂 「常值」(Literal,或稱字面值),是指資料本身的值不需要經過宣告,直接寫在敘述中電腦就可以處理的數值或字串資料。例如數字 3、字串 'three'(在Python中字串表示也可以用雙引號括住,例如 "three")…等。這些常值在Python語言中是以物件來處理,Python提供常用的常值有:

  1. 整數常值用來表示整數。
  2. 布林常值只有TrueFalse 兩種值,分別表示真和假。
  3. 浮點數常值是用來表示帶有小數點數字的資料。
  4. 字串常值是用來表示一連串的字元。

1. 整數常值

整數常值是指沒有帶小數位數的整數數值,例如 1234-56…。Python語言提供 十、二、八及十六進位制四種方式,來處理整數常值。

  1. 十進位制:程式中十進制數值的表示方式和一般習慣相同,程式中的數字會預設為十進制的int整數資料,例如123。
  2. 二進位制:以 0b開頭和數字 01所組成,例如 0b1011
  3. 八進位制:以0o開頭和數字 0 ~ 7 所組成,例如 0o173
  4. 十六進位制:以0x開頭和數字0 ~ 9和字母a ~ f所組成,例如0x7b
    【例】分別使用十、二、八和十六進制,來顯示整數常值 12:(檔名:int.py)
    print(12)    # 以十進制顯示 → 12
    print(0b1100)# 以二進制顯示 → 12
    print(0o14)  # 以八進制顯示 → 12
    print(0xC)   # 以十六進制顯示 → 12

2. 布林常值

布林常值只有 TrueFalse 兩種值,True代表真、False代表假。

3. 浮點數常值

  1. 浮點數常值又稱為實數常值,當需要用到帶小數點的數值時,就要使用浮點數常值。
  2. 浮點數有兩種表示方式,一種是常用的小數點表示法,例如3.14159
  3. 另一種是科學記號,例如 1.2345e2(即 123.45)。
    【例】使用小數點和科學記號顯示各種浮點數常值: (檔名: float.py)
    print(12.345)    # 顯示浮點數常值 12.345 的值     → 12.345
    print(1.2345e2)  # 顯示浮點數常值 1.2345e2 的值   → 123.45
    print(1.2345e8)  # 顯示浮點常值 1.2345e8 的值     → 123450000.0
    print(1.2345e-2) #顯示浮點數常值 1.2345e-2 的值   → 0.012345       

4. 複數常值

在程式語言(例如 Python)中,這裡的複數(Complex Number)就是我們在數學中所學的「複數」,用來表示包含**實部(Real Part)虛部(Imaginary Part)**的數值。

在數學上,我們通常將虛數單位記為 (滿足 ),複數記為

但在程式(如 Python、MATLAB 等)中,為了避免與變數 i 混淆,虛數單位一律使用 j(或大寫 J)來表示,格式寫作:實部 + 虛部j

【例】定義一個複數 3 + 4j

# 定義一個複數 3 + 4j
c = 3 + 4j
 
# 取得實部 (real)
print(c.real)  # 輸出: 3.0
 
# 取得虛部 (imag)
print(c.imag)  # 輸出: 4.0

5. 字串常值

  1. 字串常值是由一個或一個以上的字元所組成,頭尾使用單引號 「‘」或雙引號「“」括住。在 Python中字串常值是屬於str類別。
  2. 字串串接: 使用 + 串接兩個字串。
  3. 字串索引: 字串中每個字元都有一個位置,索引值從 0 開始

【例】顯示字串常值: (檔名:str.py)

print('Python') # 顯示字串常值 'Python' → Python
print("3.8")    # 顯示字串常值 "3.8"    → 3.8
print("This's a book.") # 字常值中有單引號時用"..."     → This's a book.
print('"Hi!" says Jack.') # 字串常值中有雙引號時用 '...' → "Hi!" says Jack.
a = "012345"
print(a[0]) # 輸出 0
 
  1. 字串切片(String Slicing): 指的是擷取字串中某個特定範圍的子字串。例如 flavor[0:3]
    Python中,字串切片的語法為 [start:end]

    • start(起點):包含該索引位置的字元(Inclusive)。
    • end(終點)不包含該索引位置的字元(Exclusive),切片會在前一個位置停止。

    【例】

    flavor = "fig pie"
    print(flavor[0:3])    #  輸出:  `fig`
    print(flavor[3:7])    #  輸出:  ` pie`
    print(flavor[3:])     #  輸出:  ` pie`  <=>  flavor[3:7]
    print(flavor[:])      #  輸出:  `fig pie`
    print(flavor[:14])    #  輸出:  `fig pie`  不會報錯
    print(flavor[13:15])  #  輸出:  ``  不會報錯
     
    print(flavor[-7:-4])  #  輸出:  `fig`
    print(flavor[-7:0])   #  輸出:  ``  # 等同於 flavor[0:0],`-7` 和 `0` 都只到同一個位置,自然傳回空字串
    print(flavor[-7:])    #  輸出:  `fig pie`
    print(flavor[-3:])    #  輸出:  `pie`

    字串 flavor = "fig pie" 的長度是 。當我們把負數索引轉換為正數索引時:

    • 起點 -7:加上字串長度 之後,,所以 -7 對應的就是正數索引 0(字元 'f')。
    • 終點 0:原本就是正數索引 0
  2. 字串字面值 (String Literal): 這個詞通常是英文 String Literal 的直譯(有時也譯作字串常值字串字面量字串直譯值)。它指的是在程式碼中直接用單引號或雙引號寫出來的「字串值本身」,是建立字串物件的一種語法,字串字面值是不可改變的

    【例】

    word = "goal"
    # word[0] = "f"  # 報錯,字串為不可變物件
    word = "f" + word[1:]
    print(word)    # 輸出 foal

    字串本身的值不能被改變,但可以將一個全新的值重新指派給變數。


相關主題與延伸閱讀