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

CS50P个性车牌校验is_valid如何确保字符串首个数字不为0

CS50P 车牌校验函数补全

你现在写的is_valid已经覆盖了大部分规则,只差第一个出现的数字不能是0这一条,直接在原来遍历找数字的循环里加判断就行,不用重构整体逻辑。

补全思路

原有循环是从左到右遍历字符串,第一次碰到数字的位置就是整个字符串里首个数字的位置,刚好在这里加判断:

  • 如果这个首个数字是字符'0',直接返回False判定无效
  • 原有「数字出现后后面必须全是数字」的逻辑保留
  • 处理完首个数字直接break循环就行,不用继续往后扫,减少不必要的遍历

补全后的完整代码

def main():
    plate = input("Plate: ")
    if is_valid(plate):
        print("Valid")
    else:
        print("Invalid")

def is_valid(s):
    if len(s) < 2 or len(s) > 6: 
        return False

    if s[0].isdigit() or s[1].isdigit(): 
        return False

    for i in range(len(s)):
        if s[i].isdigit():
            # 新增:首个数字不能为0
            if s[i] == '0':
                return False
            if not s[i:].isdigit():
                return False
            # 找到第一个数字处理完就退出循环
            break

    if not s.isalnum():
        return False

    return True
main()

校验效果验证

  • 输入CS50、AB1234、HI这类合法号牌,会正常返回Valid
  • 输入CS05、AB012这类首个数字为0的号牌,会正确返回Invalid
  • 之前能拦截的非法场景(长度不符、前两位是数字、数字夹在字母中间、带特殊符号)依然可以正常拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:39:21