🔤 U4 字串・知識點 K12

字串存取與走訪

取得字串長度、依位置取字元、逐字元走訪

B4-01-StringAccess
練習平台
點標題可以展開或收合

1學習目標

  • 會取得字串的長度。
  • 會用位置取出字串的第幾個字元,並知道最後一個字元的位置等於長度。
  • 會用迴圈逐字元走訪字串。
  • 會倒著走訪字串,組出一個新字串。

2概念說明

字串就是一串字元排在一起,和清單很像:每個字元都有位置,從 1 開始算。

c
o
d
i
n
g
「coding」的長度是 6,最後一個字元就在第 6 個位置
你想做的事BlocklyScratch
字串有幾個字元(字串)的長度字串( )的長度
取出第 P 個字元在文字(字串)取得第 # 個字母字串( )的第(P)字
把字元接起來字串組合字串組合

會用這兩個動作,再加上計數迴圈,就能一個字元一個字元處理整個字串:

i 從 1 數到 字串的長度:
    處理 字串的第 i 個字元
⚠️ Blockly 使用者注意:先把答案變成文字

「詢問的答案」如果收到全部是數字的內容(例如 12345),會自動變成數字,這時候「長度」「取得第 # 個字母」就不能正常使用。範例答案的做法是:用「字串組合」把一個空字串和答案接在一起,再存進變數,這樣變數裡一定是文字。Scratch 沒有這個問題。

3示範題:跟著一步一步做(2 題)

先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。

示範題 1

第一個與最後一個字元

L1|基礎STR01-002
給定一個不含空白的字串,請輸出第一個字元與最後一個字元。
輸入
輸入一個字串 S。S 不包含空白,且長度至少為 1。
輸出
輸出兩個字元,依序為第一個字元與最後一個字元,中間以空白分隔。
範例1
輸入
coding
輸出
c g
第 1 步:讀題,找出輸入和輸出
  • 輸入:一個字串,例如「coding」。
  • 輸出:第一個字元和最後一個字元,中間用空白隔開。
第 2 步:把問題拆成步驟

第一個字元的位置是 1;最後一個字元的位置剛好等於字串的長度:

詢問並等待 → 字串
說出 (字串的第 1 個字元)、空白、(字串的第「字串長度」個字元)
第 3 步:用範例走一次

「coding」的長度是 6:第 1 個字元是 c,第 6 個字元是 g,輸出「c g」。換成「hi」,長度 2,輸出「h i」。

第 4 步:對照範例答案

按「載入範例」,Blockly 的範例答案直接用「取得第一個字母」「取得最後一個字母」的選項,效果和「第 1 個」「第(長度)個」一樣。

⚠️ 常見錯誤
  • 最後一個字元寫成固定位置:例如固定取第 6 個,換成長度不是 6 的字串就錯了。
示範題 2

逐字元輸出

L1|基礎JSS01-D03
輸入一個字串,請依序輸出每一個字元,每個字元各佔一行。本題用來示範用迴圈逐一處理字元
輸入
第一行:一個不含空白的字串 S。
輸出
依序輸出 S 的每一個字元,每個字元各佔一行。
範例1
輸入
cat
輸出
c
a
t
範例2
輸入
Hi
輸出
H
i
第 1 步:讀題,找出輸入和輸出
  • 輸入:一個字串,例如「cat」。
  • 輸出:每個字元各佔一行。
第 2 步:把問題拆成步驟
詢問並等待 → 字串
i 從 1 數到 字串的長度:
    說出 字串的第 i 個字元
第 3 步:用範例走一次
i第 i 個字元
1c
2a
3t

迴圈的終點是字串長度 3,所以剛好跑 3 輪。

第 4 步:對照範例答案

按「載入範例」,注意迴圈終點放的是「字串的長度」,不是固定數字。這個「逐字元走訪」的骨架,下一個知識點每一題都會用到。

4練習題(3 題)

照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。

字串長度

L1|基礎STR01-001
這題多了什麼:直接說出「字串的長度」就可以,是最簡單的一題。Blockly 使用者記得先把答案變成文字,否則輸入全是數字時會出錯。
看題目內容
給定一個不含空白的字串,請輸出它的長度。
輸入
輸入一個字串 S。S 不包含空白。
輸出
輸出一個整數,代表字串長度。
範例1
輸入
hello
輸出
5
💡 需要提示嗎?
用「字串長度」積木直接取得長度。

指定位置的字元

L1|基礎STR01-003
這題多了什麼:先讀入字串,再讀入位置 P,說出字串的第 P 個字元。位置從 1 開始,第 4 個就是第 4 個,不用減 1。
看題目內容
給定一個字串與位置 P,請輸出第 P 個字元。位置從 1 開始計算。
輸入
第一行輸入字串 S。第二行輸入整數 P。S 不包含空白,且 1 <= P <= 字串長度。
輸出
輸出一個字元,代表第 P 個字元。
範例1
輸入
teacher
4
輸出
c
💡 需要提示嗎?
直接取出字串的第 P 個字元,就像清單取第 P 項一樣。

反向輸出字串

L2|進階STR01-005
這題多了什麼:準備一個空字串「結果」,讓 i 從字串長度倒數到 1,每一輪把第 i 個字元接到結果的後面。例如「abc」:結果依序變成 c、cb、cba。
看題目內容
給定一個不含空白的字串,請將字串反向輸出。
輸入
輸入一個字串 S。S 不包含空白。
輸出
輸出反向後的字串。
範例1
輸入
abcde
輸出
edcba
💡 需要提示嗎?
準備一個空字串,從最後一個字元倒著取,一個一個接上去。

5自我檢核

學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。

  • 我會取得字串的長度,也知道最後一個字元的位置等於長度。
  • 我會用位置取出字串的第幾個字元。
  • 我會用迴圈從第 1 個字元走到最後一個字元。
  • 我會倒著走訪字串,並用字串組合接出新字串。