學習Scratch字符串操作——「說反話」與「成語大全」

2020-12-13 冉爸學堂

(我每天都會寫一些和孩子學習、教育有關的內容,但是因為排版複雜、時間不夠等原因,並不是每一篇都會發布到百家號。大家應該知道在哪裡找到我的主號吧!謝謝關注!)

上周給小朋友們講「運算符」中的字符串操作。在計算機編程中,字符算操作有著很廣泛的應用,有很多函數庫幫助我們輕鬆地完成各種字符串運算。而在Scratch2.0中,只有以下三個基本的積木塊,從字面上很容易理解它們的含義。看似簡單,可是小朋友們千萬別忽視字符串操作的作用哦。為了幫助小朋友們從零基礎學習字符串操作,冉爸準備了「說反話」和「成語大全」兩個例子。

讓我們從簡單的例子入手,先使用「連接」積木塊。我們和角色對話,告知姓氏以後,角色以「您好,(某)同學」來和我們打招呼。這裡將兩個「連接」積木塊疊加在一起,達到連接多個字符串的目的。

接下來,角色從我們所說的話中,找到最後一個字。通過這個練習,我們學會使用「第()個字符:()」,和「()的長度」這兩個積木塊。

這兩個練習不難,小朋友們反覆嘗試幾次,就可以熟悉這三個積木塊了,接下來我們開始「說反話」的例子。

一. 「說反話」

我們要編寫一段代碼,設計一隻聰明的鳥兒,它可以把主人的話反過來說一遍。我們在這段代碼中,要用到上面的三個積木塊。

在下面的代碼中,變量 i 代表當前指向的字符的位置,給小朋友們稍稍引入一點「指針」的概念。通過循環,改變變量 i 的值,從而指向不同的字符。由於是從最後一個字符倒序指向第一個字符,因此連接所有的字符後,聰敏的鳥兒就可以把主人的話反過來說一遍啦。

冉爸在上課的時候,從最簡單的找最後一個字符開始,進而找不同位置的字符;從五言古詩,到七言古詩,再到隨機長度的字符串,讓孩子由淺入深,完全理解這一段代碼。

在這一段代碼中,我們先設定一個變量的初始值,在循環中不斷改變該變量的值,直到臨界條件滿足,停止循環。實際上,類似這樣的結構在編程中是經常遇見的,冉爸提醒小朋友們先熟悉這樣的「套路」,在更多的例子中識別它,進而在將來的作品中熟練地運用這樣的結構。

二. 「成語大全」

接下來,我們要挑戰新的難度啦。首先收集小學~中學階段語文課本中出現的所有成語,接下來導入Scratch作品中,輸入任意一個漢字,搜索包含這個字的所有成語。

第一步收集成語的工作並不是通過Scratch完成的。冉爸利用Python,從網絡上抓取語文課本中出現的所有成語,一共有2025個,保存在txt文件中,然後利用Scratch列表的導入功能,將這些成語分「小學」,「初中」,「高中」,「全部」保存在不同的列表中,下圖是列表「全部」中的成語:

接下來就是從列表中依次取出成語,判斷其中是否包含要搜索的漢字。如果有,我們的機器人會讀出該成語。整個代碼稍微有些長,如果小朋友們掌握了循環、判斷、變量、字符串操作等知識,是可以理解編程思路的。冉爸建議學有餘力的小朋友,通過閱讀與改編,來加深對代碼的理解,直至實現自己的創作。

對啦,這段代碼中還有「成語接龍」,思路也還算簡單,留給小朋友們探索吧。

後記:Scratch2.0中缺少判斷字符串中是否包含子字符串的功能,比如說,如果要查找成語「煥然一新」中是否含有「新」,我們需要取出成語中每一個字符,再和「新」做比較,這樣很不方便。在Scratch3.0中就不存在這個困擾啦,因為有了下面這個新的積木塊,是不是很方便啊?

相關焦點

  • 對比python字符串函數,學習pandas的str矢量化字符串函數
    我們不僅要學會怎麼處理單個字符串,這個就需要學習「python字符串函數」,我們還要學會怎麼處理二維表格中每一列每一格的字符串,這個就需要學習「pandas的str矢量化字符串函數」。今天我們採用對比的方式,帶大家總結常用的字符串函數,希望這篇文章能夠對大家起到很好的作用。
  • 對比python字符串函數,輕鬆學習pandas的 str 矢量化字符串函數
    我們不僅要學會怎麼處理單個字符串,這個就需要學習「python字符串函數」,我們還要學會怎麼處理二維表格中每一列每一格的字符串,這個就需要學習「pandas的str矢量化字符串函數」。今天我們採用對比的方式,帶大家總結常用的字符串函數,希望這篇文章能夠對大家起到很好的作用。
  • 淺談Java中字符串的初始化及字符串操作類
    在深入學習字符串類之前, 我們先搞懂JVM是怎樣處理新生字符串的.
  • Python中字符串的操作處理
    學習了字符串的基本用法和簡單格式化,我們再來看一下常用字符串類型的操作。對字符串,Python提供了3個基本的操作符,如下表:演示如下:>>> x = '一個'>>> y = '字符串'>>> x+y'一個字符串'>>> x*3'一個一個一個'>>> s = '某個字符串'>>>
  • Pandas向量化字符串操作
    那麼,有沒有辦法,不用循環就能同時處理多個字符串呢,pandas的向量化操作就提供了這樣的方法。向量化的操作使我們不必擔心數組的長度和維度,只需要關係操作功能,尤為強大的是,除了支持常用的字符串操作方法,還集成了正則表達式的大部分功能,這使得pandas在處理字符串列時,具有非常大的魔力。
  • (基礎篇)PHP字符串操作
    想要從學習課堂獲取學習視頻的,可以加 QQ:296637612    備註:學習
  • JavaScript字符串操作方法大全,包含ES6方法
    也就是說,-1 指字符串的最後一個字符,-2 指倒數第二個字符,以此類推。end:緊接著要抽取的片段的結尾的下標。若未指定此參數,則要提取的子串包括 start 到原字符串結尾的字符串。如果該參數是負數,那麼它規定的是從字符串的尾部開始算起的位置。
  • 盤點Python中字符串的常用操作
    字符串的相加操作,也可以理解為拼接操作。例如:a = 'Hello' + ' World'print(a) # Hello World# 也可以寫成a = 'Hello' ' World'print(a) # Hello World字符串的乘法操作, 可以理解為克隆操作,字符串只能與整數(n)想乘,代表克隆n個字符串。
  • python中字符串的基本操作匯總
    字符串是文本操作的核心,在python中字符串是string類的實例,在string模塊中,定義了很多的常量>>> import string>>> string.ascii_letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  • 【Python基礎】Pandas向量化字符串操作
    那麼,有沒有辦法,不用循環就能同時處理多個字符串呢,pandas的向量化操作就提供了這樣的方法。向量化的操作使我們不必擔心數組的長度和維度,只需要關係操作功能,尤為強大的是,除了支持常用的字符串操作方法,還集成了正則表達式的大部分功能,這使得pandas在處理字符串列時,具有非常大的魔力。
  • 一文看懂Python列表、元組和字符串操作
    列表被創建將後,可以執行添加、刪除、修改操作。列表中可包含任意的Python數據信息,如字符串、數字、列表、元組等。1.1 列表介紹列表是有序集合,沒有固定大小,能夠保存任意數量任意類型的 Python 對象,語法為 [元素1, 元素2, ..., 元素n]。
  • 小白學Python-13(字符串基礎與簡單操作)
    這兩天主要學習了Python語言中與字符串有關的內容。今天簡單總結一下字符串的基礎與簡單操作部分的內容。字符串是字符的有序序列,可以對其中的字符進行索引2、字符串的表示方法(考慮到字符串中間可能出現單引號或雙引號,故Python提供了4種字符串的表示方式)(1)由一對單引號表示,僅表示單行字符串
  • Golang語言之字符串操作
    %o八進位整數%b二進位整數%f,%g,%e浮點數%t布爾值%c字符%s字符串%q帶雙引號的字符串%v內置格式內容%T類型%p內存地址%%字符%\n換行\t縮進文章內容主要以代碼注釋講解相關知識點字符串與數值相互轉換package mainimport ( "fmt" "strconv")
  • SplitC函數,對於字符串拆分的增強操作
    大家好,我們今日講解「VBA信息獲取與處理」教程中第十四個專題「Split函數提取數據信息的深入講解」的第四節「對於字符串拆分的增強操作」,這個專題是非常實用的知識點
  • 處理PHP中字符串的常用操作及函數
    PHP提供了大量的字符串操作,各種函數可以處理字符串的分割、截取、查找等。PHP處理字符串的能力是非常強大的,提供的方法也是多種多樣的,但有的時候你需要選擇出一種最簡單且最理想的方法。在本文中,列舉了10個PHP中常見的字符串處理任務,並給出相應的理想解決方案。
  • STATA中的字符串變量如何操作?
    在STATA中,我們經常見到有些變量的格式是字符串(string)的形式,也就是一團紅色的字體,比如下面這個圖。
  • Swift字符串和字符
    創建和操作字符串的語法與 C的操作方式相似,輕量並且易讀。字符串連接操作只需要簡單地通過 + 號將兩個字符串相連即可。與 Swift 中其他值一樣,能否更改字符串的值,取決於其被定義為常量還是變量。儘管語法簡易,但 String 類型是一種快速、現代化的字符串實現。每一個字符串都是由獨立編碼的 Unicode 字符組成,並提供了用於訪問這些字符在不同的Unicode表示的支持。
  • Hive函數大全(含例子)之字符串函數(String Functions)
    字符串函數 String Functionsascii(string str)返回結果: 返回字符串str首字母的十進位ascii碼返回類型: intstr的左邊,使其長度變為len;如果字符串str的長度大於len,則str將被截斷;如果pad為空字符或者NULL,則返回NULL返回類型: stringselect lpad('123', 5, '0'); -- 結果為 00123select
  • MySQL的字符串替換更新操作
    本文介紹MySQL的字符串替換更新操作。在貼吧裡看到吧友提出問題,還提供紅包,看到這些摩拳擦掌,需要解決,就決定在資料庫操作一通。就在我以為問題解決了時,又看到吧友的回覆吧友回復如下嗯,頓時感覺自己太年輕了[苦笑]怎麼辦,不能楞著,按吧友的規則,創建一些隨機字符第一步:建庫、表、插入語句
  • Tcl學習:string compare命令對字符串的比較
    打開APP Tcl學習:string compare命令對字符串的比較 工程師李察 發表於 2018-09-23 10:10:00