Python练习04

目录

制作一个简易的注册登陆系统

实现过程

        声明需要用到的库

        构造一个判断用户文件是否存在的函数

        构造一个存储用户文件的函数

        制作UI

        制作系统主体

运行效果


制作一个简易的注册登陆系统

        通过所学知识制作一个简易的注册登陆系统,要求可以存储账户及密码,并且密码使用密文存储。

实现过程

        声明需要用到的库

import hashlib
import json
import os
import sys

        构造一个判断用户文件是否存在的函数

def load_account(path):if os.path.exists(path):        #判断文件是否存在return json.load(open(path, "rt", encoding="utf-8"))    #通过json模块读取账户、密码else:return {}       #若文件不存在返回一个字典

        构造一个存储用户文件的函数

def save_account(account_info, path):json.dump(account_info, open(path, "wt", encoding="utf-8"))     #将账户、密码存入文件

        制作UI

UI = """
1.注册
2.登陆
0.退出
"""

        制作系统主体

        使用while循环程序

while True:print(UI)select = int(input("请输入你的选择:"))if select == 1:# 注册account = input("请输入账户:")dc = load_account("account.txt")        #读取用户文件if dc.get(account):                     #判断用户是否存在print("该账户已存在,请重新注册")else:password = input("请输入密码:")confirm = input("请再次输入密码:")if password == confirm:hs_obj = hashlib.md5(password.encode())     #使用md5对密码进行哈希加密dc[account] = hs_obj.hexdigest()            #将账户与密码绑定save_account(dc, "account.txt")         # 将账户密码保存到文件print("注册成功!")else:print("密码输入不一致")elif select == 2:#登陆account = input("请输入账户:")dc = load_account("account.txt")        #调用文件if dc.get(account):                     #判断账户是否存在password = input("请输入密码:")hs_obj = hashlib.md5(password.encode())     #将密码进行hash运算hs_obj = hs_obj.hexdigest()if hs_obj == dc[account]:           #验证密码print("登录成功!")sys.exit()          #结束程序else:print("账户或密码输入错误!")else:print("该账户不存在!")elif select == 0:sys.exit()      #结束程序

运行效果

        注:该程序运行时会生成一个account.txt的文本文件,其中储存的是账户及密码

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疯狂为你省钱 - Al一键虚拟试衣整合包

在今天的数字时代,中小服装商家以及各种带货人,面临着各种挑战,其中之一就是模特拍摄的高成本。为此,一个名为OMS-Diffusion的新开源项目应运而生,旨在帮助大家通过虚拟试衣来降低成本。使用这个工具,只需要…

SSRF(服务器端请求伪造)的学习以及相关例题(上)

目录 一、SSRF的介绍 二、漏洞产生的原因 三、利用SSRF可以实现的效果(攻击方式) 四、SSRF的利用 五、SSRF中的函数 file_get_content() 、fsockopen() 、curl_exec() 1.file_get_content(): 2.fsockopen(): 3.curl_exec()&#xff1…

【C++】string类的使用④(字符串操作String operations || 常量成员Member constants)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🔥字符串操作(String operations)c_strdataget_allocatorcopyfindrfindfind_first_offind_last_offind_first_not_offind_last_not…

Android 老年模式功能 放大字体

1 配置属性 <attr name"text_size_16" format"dimension"/><attr name"text_size_18" format"dimension"/><attr name"text_size_14" format"dimension"/><attr name"text_size_12&quo…

LVGL移植到ARM开发板(GEC6818)

源码下载&#xff1a;点击跳转 下载好三个文件后&#xff0c;将其解压缩&#xff0c;并合到一个文件夹里面—— 1、修改 Makefile 删除 -Wshift-negative-value 2、修改 main.c 3、修改 lv_drv_conf.h 在lv_drv_conf.h文件屏幕驱动文件刚好与开发板LCD驱动文件一致&#xff0c…

基于 Spring Boot 博客系统开发(六)

基于 Spring Boot 博客系统开发&#xff08;六&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;五&#xff09;&#x1f…

区块链媒体发布推广7个的神奇方法助你脱颖而出-华媒舍

区块链技术的发展已经掀起了一场数字革命&#xff0c;引发了全球范围内的热议。在这个充满竞争的市场中&#xff0c;如何让自己的区块链项目脱颖而出&#xff0c;吸引更多的关注和参与呢&#xff1f;下面就为大家介绍7个神奇的区块链媒体发布推广方法&#xff0c;帮助你在激烈的…

实验名称:TCP 连接管理

目录 前言 TCP报文段格式 TCP建立连接 TCP释放连接 实验目的 实验原理 实验步骤 1. 启动WireShark&#xff0c;设置抓包状态 2. 访问指定服务器 &#xff0c;通过Wireshark抓取通信数据报文 3. 分析TCP连接建立的三次握手和连接释放的四次握手过程 原始数据记录 实验…

触摸OpenNJet,云原生世界触手可及

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 导言OpenNJet云原生引擎介绍云原生平台的介绍优化与创新 为什么选择OpenNJet云原生引擎如何在windo…

转移插槽笔记

4.3.4.转移插槽 我们要将num存储到7004节点&#xff0c;因此需要先看看num的插槽是多少&#xff1a; 如上图所示&#xff0c;num的插槽为2765. 我们可以将0~3000的插槽从7001转移到7004&#xff0c;命令格式如下&#xff1a; 具体命令如下&#xff1a; 建立连接&#xff1a;…

Office之Word应用(二)

一、页眉添加文件名称和页码 1、双击页眉&#xff0c;点击“页眉-空白&#xff08;三栏&#xff09;” 2、删掉第一处&#xff08;鼠标放在上面就会选中&#xff0c;Enter即可&#xff09;&#xff0c;第二处输入文档名称&#xff0c;第三处插入页码。 注&#xff1a;插入页码时…

鲁棒控制问题描述

复杂的合成问题成为一个具有特殊结构控制器的设计问题。 H无穷范数&#xff08;H∞ norm&#xff09;&#xff1a;对于线性时不变&#xff08;LTI&#xff09;系统&#xff0c;H∞范数通常定义为系统频率响应的最大幅值。换句话说&#xff0c;它是系统传递函数在复平面单位圆上…