運用 for 迴圈在字串


還記得我們之前所討論過的 for迴圈嗎?我們平常所熟知的 for 迴圈,是運用在列表或 range() 上,但是你知道嗎?for 迴圈也可以運用在字串上哦!


for ... in "":


讓我們先來複習一下 for 迴圈的概念。假設今天有一個列表叫做 fruits,而列表中有很多關於水果的字串,像是這樣:

fruits = ["apple", "banana", "cherry"]

那麼我們就可以使用 for 迴圈,將列表 fruits 中的所有水果全部印出來:

for fruit in fruits:
    print(fruit)

在執行程式之後,我們可以得到像是這樣的結果:

apple
banana
cherry

如果對於目前為止的程式有任何不懂的地方,歡迎先複習一下 for迴圈的概念後再回來閱讀這個章節。之前說過,字串(string)就好像是一個列表(list),列表中包含了一個個的文字,而 for 迴圈正是使用在列表上的,那麼 for 迴圈究竟能不能直接使用在字串上呢?

答案當然是可以的!我們先看看這個例子:

abc = "abcdefghi"

我們先是宣告一個變數 abc,並且賦予其「abcdefghi」這個字串。接著,我們便可以將這個字串「當作一個列表」,直接使用在 for 迴圈中:

for letter in abc:
    print(letter)

將會得到:

a
b
c
d
e
f
g
h
i

是不是很好理解呢?但是,如果我們今天想要每間隔兩個字元,才 print() 一次,這樣又該怎麼做呢?回想一下上一個章節中,我們所講到的字串選取,我們可以使用 [::2] 來完成這個任務:

for letter in abc[::2]:
    print(letter)

便會得到:

a
c
e
g
i


for ... in range():


有時候,我們會需要用到 range() 來執行 for 迴圈,達成一些本來無法達成的目標。例如我們想要使用 for 迴圈比較兩個字串的內容是否相等,就會需要用到 range()

但是在我們真的開始寫程式之前,讓我們先來思考一下要怎麼寫。首先,我們要先使用 if判斷式 比較字串的長度,如果長度不同,字串就不同,而如果長度相同,則需要進一步地檢查是否相同。我們可以使用一個 for 迴圈逐一地檢查字串中每個位置的文字是否相同。

string1 = "This"
string2 = "That"

if len(string1) == len(string2):
    for i in range(len(string1)):
        if string1[i] != string2[i]:
            print("不同")
            break
    else:
        print("相同")
else: 
    print("不同")

在執行後我們將會得到:

不同


結論


1. for 迴圈類似一個包含了很多
    字元的 Python 列表

2. for x in "string":
    讓我們從字串頭循環到字串尾

3. 善用 Python 的字串選取 []
    來簡化 for 迴圈中的程式

4. 有時候我們會需要 range()
    來執行稍微複雜的 for 迴圈
    善用 len() 和字串選取 []
上一章節
下一章節
使用者分享的影片來自 YouTube。瞭解更多
+1 
感謝內容貢獻者 此篇文章由 1 位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。點此查看編輯者名單。