首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Scratch中将文本转换为大写

在Scratch中将文本转换为大写
EN

Stack Overflow用户
提问于 2020-10-20 15:09:30
回答 2查看 650关注 0票数 1

我的侄女正在试着用scratch做作业,并请求一些帮助。她的任务是创建一个脚本,该脚本接受混合了数字和小写字母的密码,并且她必须将字母从小写更改为大写。我以前从来没有用过划痕..我尽了最大的努力,但我不确定我在哪里犯了错。我将evengroup设置为包含密码的变量。我创建了一个新函数,它基于我在网上找到的东西,并将其合并到左侧密码的迭代中。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2020-10-20 20:30:06

试试这个:

它有一个问题,当字符串包含一个数字时,它不会停止,所以我修复了它。

并查看discussion on scratch

票数 1
EN

Stack Overflow用户

发布于 2021-08-07 21:50:55

我已经定义了两个自定义块:

位置

将变量position$设置为charactertext中的位置。0表示在给定文本中找不到给定字符。我们将使用该块根据小写字母集检查密码的每个字符。

大写

将密码的每个字符传递给position块。如果position$不为0,则当前字符是小写字母,并在大写字母集中查找对应的字符。否则,保留当前字符。uppercase$变量累加这两种检查的结果。

代码语言:javascript
运行
复制
define position [character] [text]
    set [position$ v] to []
    set [pos_i v] to [0]
    repeat until <<(position$) > [0]> or <(pos_i) > (length of (text))>>
        if <(letter (pos_i) of (text)) = (character)> then
            set [position$ v] to (pos_i)
        end
        change [pos_i v] by [1]
    end
    
define uppercase [text]
    set [uppercase$ v] to []
    set [upp_i v] to [1]
    repeat (length of (text))
        position (letter (upp_i) of (text)) [abcdefghijklmnopqrstuvwxyz]
        if <(position$) > [0]> then
            set [uppercase$ v] to (join (uppercase$) (letter (position$) of [ABCDEFGHIJKLMNOPQRSTUVWXYZ])
        else
            set [uppercase$ v] to (join (uppercase$) (letter (upp_i) of (text))
        end
        change [upp_i v] by [1]
    end
    
when green flag clicked
ask [Enter your password] and wait
uppercase (answer)
say (uppercase$)

如果你想看看这在Scratch3中是什么样子,下面有一个片段:

代码语言:javascript
运行
复制
<script src="https://github.com/scratchblocks/scratchblocks/releases/download/v3.5.2/scratchblocks-v3.5.2-min.js"></script>
<pre class="blocks">
define position [character] [text]
    set [position$ v] to []
    set [pos_i v] to [0]
    repeat until <<(position$) > [0]> or <(pos_i) > (length of (text))>>
        if <(letter (pos_i) of (text)) = (character)> then
            set [position$ v] to (pos_i)
        end
        change [pos_i v] by [1]
    end
    
define uppercase [text]
    set [uppercase$ v] to []
    set [upp_i v] to [1]
    repeat (length of (text))
        position (letter (upp_i) of (text)) [abcdefghijklmnopqrstuvwxyz]
        if <(position$) > [0]> then
            set [uppercase$ v] to (join (uppercase$) (letter (position$) of [ABCDEFGHIJKLMNOPQRSTUVWXYZ])
        else
            set [uppercase$ v] to (join (uppercase$) (letter (upp_i) of (text))
        end
        change [upp_i v] by [1]
    end
    
when green flag clicked
ask [Enter your password] and wait
uppercase (answer)
say (uppercase$)
</pre>
<script>
scratchblocks.renderMatching('pre.blocks', {style: 'scratch3'});
</script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64440165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档