跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 密码验证与元组排序编程练习

Python 密码验证程序需检查大小写字母、数字及特殊字符,长度限制在 6 到 12 位之间。提供三种实现方式:基础函数判断、正则表达式计数匹配、正则全模式匹配。元组排序任务要求按姓名、年龄、分数升序排列,使用 lambda 函数定义排序键值。示例输入包含逗号分隔的密码序列或多行元组数据,输出符合标准的密码列表或排序后的元组集合。代码涵盖输入处理、条件校验及结果格式化。

修罗发布于 2024/12/25更新于 2026/10/1886 浏览
Python 密码验证与元组排序编程练习

题目 18

一个网站需要用户输入用户名和密码注册。编写一个程序来检查用户输入的密码的有效性。 以下是检查密码的标准:

  • [a-z] 之间至少有 1 个字母
  • [0-9] 之间至少有 1 个数字
  • [A-Z] 之间至少有 1 个字母
  • [$#@] 中至少有 1 个字符
  • 交易密码最小长度:6
  • 交易密码最大长度:12

你的程序应该接受一个逗号分隔的密码序列,并将根据上述标准检查它们。将打印符合条件的密码,每个密码之间用逗号分隔。

示例 如果将以下密码作为程序的输入: ABd1234@1,a F1#,2w3E *,2We3345 然后,程序的输出应该是: ABd1234@1

方案一
def is_low(x):
    for i in x:
        if 'a' <= i and i <= 'z':
            return True
    return False

def is_up(x):
    for i in x:
        if 'A' <= i and i <= 'Z':
            return True
    return False

def is_num(x):
    for i in x:
        if '0' <= i and i <= '9':
            return True
    return False

def is_other(x):
    for i in x:
        if i == '$' or i == '#' or i == '@':
            return True
    return False

s = input().split(',')
lst = []
for i in s:
    length = len(i)
    if 6 <= length and length <= 12 and is_low(i) and is_up(i) and is_num(i) and is_other(i):
        lst.append(i)
print(",".join(lst))
方案二
import re

s = input().split(',')
lst = []
for i in s:
    cnt = 0
    cnt += (6 <= len(i) and len(i) <= 12)
    cnt += bool(re.search("[a-z]", i))
    cnt += bool(re.search("[A-Z]", i))
    cnt += bool(re.search("[0-9]", i))
    cnt += bool(re.search("[@#$]", i))
    if cnt == 5:
        lst.append(i)
print(",".join(lst))
方案三
import re

a = input('Enter passwords: ').split(',')
pass_pattern = re.compile(r"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[$#@]).{6,12}$")
for i in a:
    if pass_pattern.fullmatch(i):
        print(i)

题目 19

您需要编写一个程序来按升序对(name,age,score)元组进行排序,其中 name 是字符串,age 和 score 是数字。元组由控制台输入。排序条件为:

  1. 根据名称排序
  2. 然后根据年龄排序
  3. 然后按分数排序

优先级是姓名 > 年龄 > 分数。

示例 如果将以下元组作为程序的输入: Tom,19,80 John,20,90 Jony,17,91 Jony,17,93 Json,21,85

然后,程序的输出应该是: [('John', '20', '90'), ('Jony', '17', '91'), ('Jony', '17', '93'), ('Json', '21', '85'), ('Tom', '19', '80')]

方案一
lst = []
while True:
    s = input().split(',')
    if not s[0]:
        break
    lst.append(tuple(s))
lst.sort(key=lambda x: (x[0], int(x[1]), int(x[2])))
print(lst)

目录

  1. 题目 18
  2. 方案一
  3. 方案二
  4. 方案三
  5. 题目 19
  6. 方案一

更多推荐文章

查看全部
  • 设计支持万人并发的秒杀系统架构与实现方案
  • HarmonyOS RcList 组件缩略图、角标与图标系统设计
  • Whisper 语音识别技术突破:大型模型高速优化版解析
  • 使用本地大模型 Llama3 进行数据分类标记
  • Python 快速参考手册
  • 深度对比 vLLM、SGLang 与 llama.cpp 推理引擎
  • Claude Code vs GitHub Copilot CLI 深度评测与选型指南
  • WebMCP 详解:让网页成为 AI 智能体的工具库
  • 鸿蒙金融理财全栈项目:生态合作、用户运营与数据变现
  • APK 反编译基础与静态分析方法详解
  • 【AIGC】COT思维链:让AI学会拆解问题,像人一样思考
  • 基于 OpenClaw 整合 Qlib 与 RD-Agent 构建 AI 量化系统
  • FPGA AD7606 串行与并行驱动实现
  • C++ 测试与调试实战:保障代码质量与稳定性
  • voidImageViewer 支持 GIF WebP 动图的轻量级 Windows 看图工具
  • ComfyUI 节点式 AI 绘画工作流:架构、实战与优化
  • 在 Windows 上搭一套本地的 AI 生产力工具:Ollama + OpenClaw
  • Spring Boot Web 后端开发:核心注解实战指南
  • 深入理解 AI 编程中的 Skills:定义、用法与 Java 实战
  • Axum:Rust 生态中的高性能 Web 框架实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online