线性查找表的应用:用户登录注册程序

news2024/12/22 18:32:13

线性查找表是很简单的数据结构和算法。网站的用户登录注册时是基本的功能。本文首先给出线性查找表的基本实现,然后给出在用户登录注册的程序流程图,并将线性查找表应用到用户查询这一具体任务,并基于 Python 语言在控制台实现用户注册、登录的模拟程序。

线性查找表

给定一个数组,比如 12,34,56,78, 查找给定的数字 34 是否在里面,如果在,那么返回索引, 否则返回 -1。

def linear_search(num_list: list, num: int) -> int:
    """
    Search given number in given list and return correspoinding index.

    Parameters
    ----------
    num_list : list
        The list of numbers to search through.
    num : int
        The number to search for in the list.
    """
    for i, n in enumerate(num_list):
        if n == num:
            return i
    return -1

测试代码:

if __name__ == '__main__':
    while True:
        print("欢迎使用线性查找".center(30, '~'))
        num_str = input('请输入数组:')
        num_list = num_str.split(',')
        num_list = [int(_) for _ in num_list]

        num = int(input('请输入查找的目标数:'))
        index = linear_search(num_list, num)
        print(''.center(38, '='))
        if index == -1:
            print('查找的数不存在')
            break
        else:
            print(f'查找的数存在,索引为{index}')

用户登录、注册程序

用户登录和注册这两个动作,都涉及线性查找:查找用户名是否存在。 可以应用上一节的代码,变量重命名即可, 思想是一致的。

流程图

在这里插入图片描述

技术点

获取用户输入,并且带提示信息:

name = input('请输入用户名')

判断用户名字是否存在:也就是线性表的查找

    def find_user(self, name):
        for index, user in enumerate(self.user_list):
            if user.name == name:
                return index
        return -1

代码实现

class User:
    def __init__(self, name, password):
        self.name = name
        self.password = password


class UserService:
    def __init__(self):
        self.user_list = []

    def find_user(self, name):
        for index, user in enumerate(self.user_list):
            if user.name == name:
                return index
        return -1

    def exists_user(self, name):
        return self.find_user(name) >= 0

    def register(self):
        # 获取数据
        name = input('账号: ')
        password = input('密码: ')

        # 存储数据
        if self.find_user(name) >= 0:
            print('用户已存在, 请重新输入')
        else:
            user = User(name, password)
            self.user_list.append(user)
            # 返回注册结果
            print('已注册成功')

    def login(self):
        # 获取数据
        name = input('账号: ')
        password = input('密码: ')

        # 校验数据
        user = User(name, password)
        index = self.find_user(name)
        if index == -1:
            print('账号不存在,请重新输入')
        elif self.user_list[index].password != password:
            print('密码错误, 请重新输入')
        else:
            # 返回登录结果
            print('登录成功')

    def run(self):
        while True:
            action = input('注册 or 登录: ')
            if action == '注册':
                self.register()
            elif action == '登录':
                self.login()
            else:
                print('命令输入错误,请重新输入')

if __name__ == '__main__':
    service = UserService()
    service.run()

References

  • https://blog.csdn.net/qq_42568323/article/details/113565739
  • https://www.bilibili.com/video/BV1bG4y127js

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2092240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ComfyUI使用Flux模型

ComfyUI是一个强大的用户界面,支持多种图像处理和生成模型,而Flux是一系列由Black Forest Labs开发的扩散模型。 准备工作 1. 下载所需文件 下载地址: comfyanonymous/flux_text_encoders at main (hf-mirror.com)https://hf-mirror.com/…

django企业开发实战-学习小结

写在前面 初次阅读此书是三年前,当时没经历过完整的项目 觉得这书就是扯淡 后来经历过项目加班与毒打 今天再翻开此书 觉得实乃不可多得之物 花些时间啃下来吧 需求 需求文档 写文档,列举需要实现的功能,详细列举,不考虑技术实…

Leetcode Hot 100刷题记录 -Day6(滑动窗口)

无重复字符的最长子串 问题描述: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s …

10:Logic软件原理图中添加电源与GND

Logic软件原理图中添加电源与GND

“品牌VS套路:华为、格行、中兴随身WiFi谁才是真良心?“

咱们打工人月末有三光,工资花光,流量用光,话费剩光光。 不过除了工资没办法解决,剩下两个还能抢救一下 提起这个事情的起因是我发现现在的互联网平台到处都是推销随身WiFi的,什么零月租、几百G流量不限速不限量啥的&…

Cortex-A7支持的内存类型详解及配置举例

0 参考资料 Introduction to memory protection unit management on STM32 MCUs.pdf ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition.pdf 1 Cortex-A7支持的内存类型详解 1.1 内存类型 ARM架构处理器支持的内存类型分为三种,分别是Normal memory&…

airflow看不到任务日志解决方案

1. 基础信息 airflow 版本:2.5.3 2. 问题现象 airflow web-server 界面,看到某些任务的具体运行日志,只有少量日志,如下图所示: 具体日志内容如下: na-fudao-data-airflow-test-2-21.alibji.zybang.com…

某视频云平台存在未授权窃取用户凭据漏洞

我和你一样,历经破碎、痛苦的生活,却未垮掉,每一日都从承受的苦难中,再一次将额头浸入光明 漏洞详情: 某视频云平台存在未授权访问漏洞,攻击者可以直接访问平台的API接口文档,从而获取系统的A…

【大模型】Reflextion解读

前言:一种大模型强化学习技术,将传统的梯度更新时的参数信号替换成上下文的语言总结,过程和人类反思相似。区别与RLHF,Reflextion是agent自我反思,RLHF是人类反馈。 目录 1. 基础知识1.1 强化学习1.2 大模型Agent 2. 创…

Upload-LABS通关攻略【1-20关】

Pass-01 第一关是前端JS绕过 上传一个php文件显示只能上传特定后缀名的文件 这里将1.php改为1.jpg直接进行抓包,在数据包中将jpg改为php放行 文件上传成功,邮件图片新建页面打开 可以访问到1.php文件,则一句话密码上传成功 使用蚁剑 进行连接…

探秘DevSecOps黄金管道,安全与效率的完美融合

软件应用的安全性已成为企业和用户关注的焦点,DevSecOps作为一种将安全融入开发和运维全过程的理念和实践,旨在消除传统开发模式中安全被后置处理的弊端。DevSecOps黄金管道(Golden Pipeline)是实现这一理念的核心框架&#xff0c…

蜂鸣器奏乐

一、粗略了解简谱 拍号:如图,“2”表示一个小节有2拍,“4”表示4分音符为一拍 终止线表示歌曲结束 注意:以下音符都按以四分音符为一拍计算拍数 四分音符: 唱一拍 二分音符: 某一个音右边有一个小横线&…

OpenAI GPT3 Search API not working locally

题意:"OpenAI GPT-3 搜索 API 在本地无法工作" 问题背景: I am using the python client for GPT 3 search model on my own Jsonlines files. When I run the code on Google Colab Notebook for test purposes, it works fine and returns …

文件上传漏洞详解(持续更新…)

第一关 步骤一,打开第一关先点击浏览上传一个jpg格式的图片 步骤二,打开BP修改jpg为php然后放包 步骤三,右键打开图像 成功解析 步骤四,打开蚁剑 第一关还是蛮简单的 第二关 步骤一,打开第二关先点击浏览上传一个j…

leetcode637. 二叉树的层平均值,广度优先搜索BFS

leetcode637. 二叉树的层平均值 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。…

跑通llama-factory

1.在ubuntu下安装环境 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e “.[torch,metrics]” pip install --no-deps -e . 在本地windows,打开http://0.0.0.0:7863/,总是显示无法打开界面。 之后在…

!!学习整理知识模块——关于【如何本地搭建Whisper语音识别模型】/请按需收藏!!

成长路上不孤单😊【14后,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊!!!!&#xff…

经验风险最小化和极大似然估计的关系

一、经验风险定义 给定一个训练数据集 T { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T{(x1​,y1​),(x2​,y2​),...,(xN​,yN​)},模型f(X)关于训练数据集的平均损失称为经验风险(Empirical…

冻死你都觉得简单

小说大纲 标题:《学霸的豪门对决》 背景设定: 两个家族在商业界拥有举足轻重的地位,但因为历史原因,两家长期处于竞争状态。主角们在顶级私立学校就读,既是学霸也是家族的继承人。 主要人物: 男主角&a…

【前端开发必备小技巧】前端代码规范Vue篇

文章目录 🟢 前端代码规范🟢 一、前端代码规范Vue篇👉1、Vue编码基础👉1.1、组件规范👉1.2、模板中使用简单的表达式👉1.3、指令都使用缩写形式👉1.4、 标签顺序保持一致👉1.5、必须…