You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在Scratch中实现符合指定条件的密码验证器?

Scratch密码验证器实现方案

核心实现逻辑

放弃提前创建字符列表的思路,直接遍历密码的每个字符,通过字符范围判断归类,最后统一校验所有条件。这种方法比列表匹配更直观,也能解决你遇到的大小写区分问题。

步骤1:准备变量

创建以下变量(全部设为“适用于所有角色”):

  • 用户密码:存储用户输入的密码
  • 包含大写字母、包含小写字母、包含数字、包含特殊字符:布尔型,初始值设为假
  • 当前位置:数字型,初始值设为1,用来遍历密码字符

步骤2:获取用户输入

添加积木:

当绿旗被点击
将[用户密码 v]设为(询问[请输入密码:]并等待)

步骤3:遍历并判断字符类型

用循环遍历密码的每一个字符,逐个判断所属类型:

将[包含大写字母 v]设为[假]
将[包含小写字母 v]设为[假]
将[包含数字 v]设为[假]
将[包含特殊字符 v]设为[假]
将[当前位置 v]设为[1]
重复执行直到(当前位置 > (长度of(用户密码)))
    将[当前字符 v]设为(取第(当前位置)个字符of(用户密码))
    // 判断大写字母
    如果((当前字符) >= [A])且((当前字符) <= [Z])那么
        将[包含大写字母 v]设为[真]
    // 判断小写字母
    否则如果((当前字符) >= [a])且((当前字符) <= [z])那么
        将[包含小写字母 v]设为[真]
    // 判断数字
    否则如果((当前字符) >= [0])且((当前字符) <= [9])那么
        将[包含数字 v]设为[真]
    // 剩下的就是特殊字符
    否则
        将[包含特殊字符 v]设为[真]
    将[当前位置 v]增加(1)

注:Scratch的字符比较基于ASCII码,A-Z、a-z、0-9的范围是连续的,所以直接用大小比较就能准确区分大小写和数字,解决你之前的大小写识别问题。

步骤4:校验所有条件并输出结果

把所有验证条件整合,判断密码是否有效,同时给出具体的错误提示:

如果((长度of(用户密码)) >= 8)且((长度of(用户密码)) < 18)且(包含大写字母)且(包含小写字母)且(包含数字)且(包含特殊字符)那么
    说[密码有效!]
否则
    说[密码无效,请满足以下条件:]
    等待(1)秒
    如果(长度of(用户密码) < 8)那么
        说[· 至少8个字符]
        等待(1)秒
    如果(长度of(用户密码) >= 18)那么
        说[· 字符数少于18个]
        等待(1)秒
    如果(不包含大写字母)那么
        说[· 至少一个大写字母]
        等待(1)秒
    如果(不包含小写字母)那么
        说[· 至少一个小写字母]
        等待(1)秒
    如果(不包含数字)那么
        说[· 至少一个数字]
        等待(1)秒
    如果(不包含特殊字符)那么
        说[· 至少一个特殊字符]
        等待(1)秒

调试提示

如果还是出现判断错误,检查:

  1. 变量的初始值是否正确设为假
  2. 当前位置的循环是否从1开始,并且每次加1直到超过密码长度
  3. 字符比较时的引号是否是英文引号(Scratch里输入的字符要确保是英文半角)

内容的提问来源于stack exchange,提问作者Ayuuush69420

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:55:10