字串與運算子

1.字串與「+」運算子

  1. 使用「+」運算子,可以將兩個字串合併成一個字串。在Python中,字串變數是屬於不可變動,所以使用「+」運算之後會產生新的字串。

    [例] 以「+」合併兩個字串。(檔名:string_2.py)

    s1 = '輕輕的我走了,正如我輕輕的來;'
    s2 = '我輕輕的招手,作別西天的雲彩。'
    s1 = s1 + s2
    print('再別康橋:' + s1)
  2. 字串不能用「+」運算子和其他型別資料合併,其他型別資料必須先用str()函式進行型別轉換。

    [例] 以「+」合併字串和整數資料。

    print('汽水:'+str(24)+'元')
  3. 要合併字串,也可以將要合併的字串放在同一行,字串間插入一個以上的空白字元。

    [例]以空白字元合併三個字串。

    s1 = 'The ghost said, "Stop! ' "That's " 'my candy!"'
    print (s1) # 輸出: The ghost said, "Stop! That's my candy!"

2.字串與「*」運算子

使用「*」運算子,可以複製字串。對字串型別的資料乘上某一正整數,就能讓字串重複該整數的次數。

[例] 以「*」運算子複製字串來製作分隔線。

s1 = '-'
print(s1 * 36) # 共有 36 個 - 字元,輸出: ------------------------------------  

3.字串與「in」、「not in」運算子

要知道某個字元是否存在於字串中,可以使用 in運算子,若存在則傳回值為True;否則傳回False。 如果是使用 not in運算子,就是反向查詢,傳回值是相反的,若存在傳回值為False;不存在則傳回 True`。

[例] 檢查字元是否存在字串中。

ok = input_word in 'YyNn'

通常用來檢查使用者輸入的字元是否符合要求,這裡檢查是否為 ‘Y’、‘y’、‘N’ 或 ‘n’。

4.字串與「[]」運算子

使用 「[]」運算子可以分割字串,來取得單一字元或部分字串。
[] 必需配合字串註標值來運作,註標值可以使用正數或逆數來表示。如果是採正數,是從左向右由第1個元素從0開始編註標。若是採逆數,是從右向左由最後1個元素從-1開始逆數編註標。中文字和英文字母一樣是以1個元素計算。

1. 取得單一字元

使用「[]」運算子配合註標值讀取字串指定的單一字元,要注意註標值如果超出字串長度會產生IndexError,語法如下:

字串變數名稱[註標值]

[例] 利用註標值讀取字串的單一字元。(檔名: index_1.py)

s1 = 'Python 基礎必修課'
print (s1[3])  # 輸出: h 
print (s1[-2]) # 輸出: 修
print(s1[16])  # 註標值超出字串長度,所以會產生 IndexError,中斷程式執行

2. 取得部分字元

使用「[]」運算子讀取部分字元。

語法:字串變數名稱[起始註標:結束註標:遞增值]

1. 起始註標、結束註標、遞增值皆可省略。
2. 起始註標是指定擷取的開始註標值,若省略代表從0開始。
3. 會擷取到結束註標的前一個字元,例如3 表取到註標值2 的字元,結束註標如果省略,此時若遞增值為正值,代表擷取到字串尾端;反之若是負值,代表擷取到字串開頭。
4. 遞增值若省略,內定值為1,代表連續擷取;如果是2,代表間隔1個元素,也就是間隔值等於遞增值減1。如果遞增值是正值,代表由左向右取出元素;反之是負值,則由右向左取出元素。
5. 註標值若超過字串範圍時,並不會產生IndexError
[例] 以s=Python 基礎必修課為例,練習擷取字串。(檔名:index_2.py)

01234567891011
Python
語法輸出結果說明
s[:]Python 基礎必修課字串元素從頭擷取到尾
s[7:]基礎必修課字串由註標值 7 擷取到字串結尾
s[:6]Python字串元素從頭擷取到註標值 5
s[5:8]n 基字串元素從註標值 5 擷取到 7
s[9:6:-1]必礎基字串元素從註標值 9 逆向擷取到 7
s[::2]Pto 礎修字串從頭間隔 1 個字元擷取
s[::-1]課修必礎基 nohtyP字串從尾到頭逆向擷取
s[::-2]課必基nhy字串間隔 1 個元素逆向擷取

5. input() 函式

print() 函式可以顯示資料,若要取得使用者輸入的資料,則可以使用input()函式,其常用的語法如下:

變數 = input([提示字串])
  1. 提示字串:作為使用者輸入資料的提示,雖然可以省略,但建議應有適當的提示。

  2. 變數:變數是用來儲存使用者輸入的資料,其資料型別為字串。如果希望要做數值運算時,就必須使用int()..等函式來轉型。

    input() 函式傳回的資料型別為字串,如果要轉型為數值時,可以使用下列的函式:

    字串轉整數: int(整數字串資料)
    字串轉浮點數: float(浮點數字資料)
    字串轉數值: eval(字串資料運算式字串)
  3. 如果使用int()函式要轉型浮點數資料成整數,執行時會產生錯誤。但是,eval()函式可以將整數或浮點數字串,自動轉型為對應的資料型別。另外,無論是int()float()eval()函式,企圖將非數值資料字串轉型為數值,都會產生錯誤,例如 eval('python')

  4. eval()函式的字串引數可以是可執行運算式字串,例如 eval('2*4')eval('x+y')eval('print(x/y)')。但是要注意運算式必須是字串,所以eval(2*4)執行時會產生錯誤。

[例] 練習各種函式來轉型數值字串:(檔名:str2num.py)

# -*- coding: utf-8 -*-
s1,s2='123', '12.34'
print(int(s1),type(int(s1))) # 123 <class 'int'>
print(float (s2),type(float(s2))) # 12.34 <class 'float'>
print(float(s1),type (float (s1))) # 123.0 <class 'float'>
# 123 <class 'int'> 12.34 <class 'float'>
print(eval(s1),type(eval(s1)),eval(s2),type(eval(s2)))
print(eval('s1+s2'),type(eval('s1+s2'))) # 12312.34 <class 'str'>
eval('print (s1+s2) ') # 12312.34
eval('print(2+3)')     # 5

[例]練習使用 input()函式讓使用者輸入各種資料: (檔名:input.py)

userName = input('請輸入姓名:') # 顯示「請輸入姓名:」提示,並儲存資料到userName
age = int(input('請輸入年齡:')) # 顯示「請輸入年齡:」提示,轉成整數後儲存到age
print('姓名:%s\t 年齡: %d 歲'%(userName,age))

相關主題與延伸閱讀