字串與運算子
1.字串與「+」運算子
-
使用「+」運算子,可以將兩個字串合併成一個字串。在
Python中,字串變數是屬於不可變動,所以使用「+」運算之後會產生新的字串。[例] 以「+」合併兩個字串。(檔名:
string_2.py)s1 = '輕輕的我走了,正如我輕輕的來;' s2 = '我輕輕的招手,作別西天的雲彩。' s1 = s1 + s2 print('再別康橋:' + s1) -
字串不能用「+」運算子和其他型別資料合併,其他型別資料必須先用str()函式進行型別轉換。
[例] 以「+」合併字串和整數資料。
print('汽水:'+str(24)+'元') -
要合併字串,也可以將要合併的字串放在同一行,字串間插入一個以上的空白字元。
[例]以空白字元合併三個字串。
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)
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| P | y | t | h | o | n | 基 | 礎 | 必 | 修 | 課 |
| 語法 | 輸出結果 | 說明 |
|---|---|---|
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([提示字串])-
提示字串:作為使用者輸入資料的提示,雖然可以省略,但建議應有適當的提示。
-
變數:變數是用來儲存使用者輸入的資料,其資料型別為字串。如果希望要做數值運算時,就必須使用
int()..等函式來轉型。input()函式傳回的資料型別為字串,如果要轉型為數值時,可以使用下列的函式:字串轉整數: int(整數字串資料) 字串轉浮點數: float(浮點數字資料) 字串轉數值: eval(字串資料運算式字串) -
如果使用
int()函式要轉型浮點數資料成整數,執行時會產生錯誤。但是,eval()函式可以將整數或浮點數字串,自動轉型為對應的資料型別。另外,無論是int()、float()或eval()函式,企圖將非數值資料字串轉型為數值,都會產生錯誤,例如eval('python')。 -
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))相關主題與延伸閱讀
- 1. 字串資料型別:本篇的基礎,介紹字串的建立方式與基本特性。
- 3. 格式化輸出:延伸學習字串的格式化輸出技巧。
- 6. print() 輸出函式:字串處理後常搭配
print()函式顯示結果。 - 4. 運算子:字串運算子(
+、*、in)是通用運算子概念在字串上的應用。