问题描述
我的侄女正试图从头开始做学校作业,并寻求帮助。她的任务是创建一个脚本,该脚本使用混合了数字和小写字母的密码,并且必须将字母从小写改为大写。我以前从未使用过刮擦。.我已尽力而为,但不确定在哪里出错。我将evengroup设置为包含密码的变量。我创建了一个新功能,该功能基于在网上找到的内容,并将其合并到左侧密码的迭代中。有什么想法吗?
解决方法
尝试一下:
当字符串中包含不停止的数字时出现了问题,因此我将其修复。
,我定义了两个自定义块:
位置
将变量position$
设置为character
中text
的位置。 0 表示在给定文本中找不到给定字符。我们将使用该块根据一组小写字母检查密码的每个字符。
大写
将密码的每个字符传递给 position
块。如果 position$
不是 0,则当前字符是小写字母,并在大写字母集中查找相应的字符。否则保留当前字符。 uppercase$
变量累积这些检查的结果。
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 中的样子,下面有一个片段:
<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>