字串長度
L1|基礎STR01-001看題目內容
- 輸入
- 輸入一個字串 S。S 不包含空白。
- 輸出
- 輸出一個整數,代表字串長度。
輸入
hello
5
取得字串長度、依位置取字元、逐字元走訪
字串就是一串字元排在一起,和清單很像:每個字元都有位置,從 1 開始算。
| 你想做的事 | Blockly | Scratch |
|---|---|---|
| 字串有幾個字元 | (字串)的長度 | 字串( )的長度 |
| 取出第 P 個字元 | 在文字(字串)取得第 # 個字母 | 字串( )的第(P)字 |
| 把字元接起來 | 字串組合 | 字串組合 |
會用這兩個動作,再加上計數迴圈,就能一個字元一個字元處理整個字串:
i 從 1 數到 字串的長度:
處理 字串的第 i 個字元
「詢問的答案」如果收到全部是數字的內容(例如 12345),會自動變成數字,這時候「長度」「取得第 # 個字母」就不能正常使用。範例答案的做法是:用「字串組合」把一個空字串和答案接在一起,再存進變數,這樣變數裡一定是文字。Scratch 沒有這個問題。
先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。
coding
c g
第一個字元的位置是 1;最後一個字元的位置剛好等於字串的長度:
詢問並等待 → 字串 說出 (字串的第 1 個字元)、空白、(字串的第「字串長度」個字元)
「coding」的長度是 6:第 1 個字元是 c,第 6 個字元是 g,輸出「c g」。換成「hi」,長度 2,輸出「h i」。
按「載入範例」,Blockly 的範例答案直接用「取得第一個字母」「取得最後一個字母」的選項,效果和「第 1 個」「第(長度)個」一樣。
cat
c a t
Hi
H i
詢問並等待 → 字串
i 從 1 數到 字串的長度:
說出 字串的第 i 個字元| i | 第 i 個字元 |
|---|---|
| 1 | c |
| 2 | a |
| 3 | t |
迴圈的終點是字串長度 3,所以剛好跑 3 輪。
按「載入範例」,注意迴圈終點放的是「字串的長度」,不是固定數字。這個「逐字元走訪」的骨架,下一個知識點每一題都會用到。
照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。
hello
5
teacher 4
c
abcde
edcba
學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。