4.Python 串列(list)
串列是一串 Python 的資料,將想要使用的資料內容放在兩個方括號[],各個資料可以有不同的資料型態。
甲居工作室日期:2024/04/05
在 Python 中有東西都是物件 (object),
字串是由一個文字 (字元)一個文字串 (字元)接起來,將想要使用的文字內容放在兩個單引號''或兩個雙引號""裡。例如:
myString = 'Hello, World!'
本章會開始介紹字串相關的方法(method)、函式(function)與操作
name = input('請輸入名字:')print(name)
name = input('請輸入名字:'):此行程式碼使用 input() 函式提示用戶輸入名字,並將輸入的名字賦值給變數 name。print(name):此行程式碼使用 print() 函式將變數 name 的值打印出來,顯示在螢幕上。要注意下面兩個,輸出直接print()看起來是一樣的,實質上兩者資料形態不同,初學者請小心注意。
>>> type(13)<class 'int'>>>> type('13')<class 'str'>
於 3.1 的範例中我們直接顯示輸入之內容,我們來將其簡化方便測試,我們將 name 直接賦值。
name = 'Yuan'print('歡迎' + name + '回臺')# 歡迎Yuan回臺
使用+ 號可以使「變數」與「字串」進行組合,同型態才能相加喔。
name = 'Yuan'showWord = '歡迎' + name + '回臺'print(showWord * 3)# 歡迎Yuan回臺歡迎Yuan回臺歡迎Yuan回臺
使用* 號可以使內容重複,當然我們也可以使字串直接重複。
w = 'w' * 5print(w)# wwwww
%運算子來進行字串格式化,如 (%s字串)、%d (十進位整數)、 %f (浮點數)。
name = '王先生'total = 180message = '您好: %s ,今日一共消費 %d 元。' % (name, total)print(message)# 您好: 王先生 ,今日一共消費 180 元。
.format() 方法格式化字串。
name = '王先生'total = 180message = '您好: {} ,今日一共消費 {} 元。'.format(name, total)print(message)# 您好: 王先生 ,今日一共消費 180 元。
name = '王先生'total = 180message = f'您好: {name} ,今日一共消費 {total} 元。'print(message)# 您好: 王先生 ,今日一共消費 180 元。
看完三種方式後另外提及一下有趣的應用方式
name = '王先生'total = 1234message = f'您好: {name} ,今日一共消費 {total:,} 元。'print(message)# 您好: 王先生 ,今日一共消費 1,234 元。
沒錯多了:,,我們可以使用:來指定格式化的方式冒號後面可以跟隨格式化指示符,如:.2f,當然格式化的應用方式不止上述這邊僅列出一些,歡迎探索。
我們來聊聊 Python 獨特的地方,因字串為一個個字元組成我們可以依照他的編號也就是索引值 (index) 來尋找或是其他操作。
甚至是跑迴圈!這算是 Python 獨特之處 www
word = 'interesting'
字串可以透過正索引和負索引存取其字元。
而第0個元素是字串的第一個字符,而第-1個元素是字串的最後一個字符。
| i | n | t | e | r | e | s | t | i | n | g |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
好的我們來開始,使用[ ] 可以取得某個字元。
print(word[0]) # iprint(word[5]) # eprint(word[-3]) # i
字串內容是不可改變的只能重新賦值
word = 'interesting'word[0] = 'I'print(word)# TypeError: 'str' object does not support item assignment
word = 'interesting'word = 'I' + word[1:]print(word)# Interesting
切片的方式為使用[ ]其中包含三個參數
object[start:end:step],常見的規則如下:| 定義 | 說明 |
|---|---|
[ : ] | 全部字元 |
[ start: ] | 從 start 的位置一直到結束的字元 |
[ :end ] | 從開始一直到 end 的前一個字元 |
[ start:end ] | 從 start 位置到 end 的前一個字元 |
[start:end:step] | 範圍 start 到 end 的前一個字元,每次移動 step 步後取得下個字元 |
print(word[:]) # interestingprint(word[5:]) # estingprint(word[:6]) # intereprint(word[2:5]) # terprint(word[-4:-1]) # tinprint(word[2:9:3]) # tei
[start:end:step] 詳細說明,以[2:9:3]為範例:
思考步驟一: 2:9: 表示 index 2 到 index 8。
| t | e | r | e | s | t | i |
|---|---|---|---|---|---|---|
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
思考步驟二: :3: 相隔 3 步,2 + 3 = 5; 5 + 3 = 8。
| t | e | i |
|---|---|---|
| 2 | 5 | 8 |
| 函式 | 說明 |
|---|---|
len(str) | 返回字串的長度 |
>>> len('interesting')11
| 方法 | 說明 |
|---|---|
str.upper() | 返回字串的大寫版本 |
str.lower() | 返回字串的小寫版本 |
str.strip() | 返回刪除首尾空格的字串 |
str.replace(old, new) | 返回替換後的字串 |
str.split(delimiter) | 返回使用分隔符拆分的字串列表 |
str.startswith(prefix) | 返回字串是否以指定前綴開始 |
str.endswith(suffix) | 返回字串是否以指定後綴結束 |
str.find(sub) | 返回子字串在主字串中第一次出現的位置,若不存在返回 -1 |
str.rfind(sub) | 返回子字串在主字串中最後一次出現的位置,若不存在返回 -1 |
str.index(sub) | 返回子字串在主字串中第一次出現的位置,若不存在引發 ValueError |
str.count(sub) | 返回子字串在主字串中出現的次數 |
str.isalpha() | 返回字串是否全部為字母 |
str.isdigit() | 返回字串是否全部為數字 |
str.isalnum() | 返回字串是否全部為字母或數字 |
str.islower() | 返回字串是否全部為小寫字母 |
str.isupper() | 返回字串是否全部為大寫字母 |
請幫我撰寫一支程式,詢問用戶今天的西元日期並顯示民國日期。