当前位置: 首页 > news >正文

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

线性查找表是很简单的数据结构和算法。网站的用户登录注册时是基本的功能。本文首先给出线性查找表的基本实现,然后给出在用户登录注册的程序流程图,并将线性查找表应用到用户查询这一具体任务,并基于 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 : listThe list of numbers to search through.num : intThe number to search for in the list."""for i, n in enumerate(num_list):if n == num:return ireturn -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('查找的数不存在')breakelse:print(f'查找的数存在,索引为{index}')

用户登录、注册程序

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

流程图

在这里插入图片描述

技术点

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

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

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

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

代码实现

class User:def __init__(self, name, password):self.name = nameself.password = passwordclass 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 indexreturn -1def exists_user(self, name):return self.find_user(name) >= 0def 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.mrgr.cn/news/16493.html

相关文章:

  • Scala之父Martin Odersky作序推荐的Scala速学版(第3版)出版
  • Java中的注解(Annotation)
  • ESM和CommonJS详解
  • vue3 element-plus 按下回车键搜索方法
  • 新160个crackme - 043-riijj_cm_20041121
  • jmeter响应断言、json断言、断言持续时间操作
  • mysql基础语法——个人笔记
  • Go 1.19.4 文件读写操作-Day 14
  • 100天带你精通Python——第8天面向对象编程
  • 【鬼灭之刃学英语 立志篇】2、义勇对炭治郎的怒斥
  • SAP LE学习笔记07 - MM与WM跨模块收货到仓库的流程中 如何实现 先上架再入库
  • 如何使用vcftools提取特定的染色体
  • JMeter 接口自动化测试:以搜索功能为例的实现思路详解
  • IT 行业的就业情况
  • 665.非递减数列
  • 2024年四款SD卡数据恢复工具使用体验推荐~
  • LabVIEW呼吸机测试系统开发
  • 实测数据处理(RD算法处理)——SAR成像算法系列(十)
  • 数据库课程设计mysql
  • 通过Dot1q终结子接口实现VPN接入