【Python】入门练习——学校网页登陆

import hashlib
def get_int():#获取用户指令
    print("##欢迎来到xxxx大学##")
    print("=====================")
    print("1、注册")
    print("2、登录")
    print("3、退出")
    yao = input("请输入密钥:")
    while not (yao == '1' or yao == '2' or yao == '3'):
        yao= input("错误!请输入正确的指令:")
    print("=====================")
    return yao
def register():#注册
    username = input("请输入用户名")
    while shujuku.get(username):
        username = input("用户名重复,请重新输入")
    password = input("请输入密码")
    password = encrypt(password)

    shujuku[username] = password
    print("注册成功")
def login():#登录
    username = input("请输入用户名")
    while not(shujuku.get(username)):
        username = input("用户不存在,请重新输入")
    password = input("请输入密码")
    while shujuku.get(username) != encrypt(password):
        password = input("密码错误请重新输入")
    print("登陆成功")

def encrypt(plaintext):#MD5加密
    bstr = bytes(plaintext, "utf-8")
    ciphertext = hashlib.md5(bstr).hexdigest().upper()
    return ciphertext
shujuku = {}
yao = get_int()
while yao !='3':
    if yao == '1':
        register()
    if yao == '2':
        login()
    yao = get_int()

简介

本代码是符合登录的简单代码,适合刚学完函数的同学来尝试练习。代码主要应用了四个自定义函数,分别实现获取用户指令,注册,加密,登录。

获取用户指令

def get_int():#获取用户指令
    print("##欢迎来到xxxx大学##")
    print("=====================")
    print("1、注册")
    print("2、登录")
    print("3、退出")
    yao = input("请输入密钥:")
    while not (yao == '1' or yao == '2' or yao == '3'):
        yao= input("错误!请输入正确的指令:")
    print("=====================")
    return yao

用一二三来转入代替转入这三个函数里,并判断是否这三个数

注册

def register():#注册
    username = input("请输入用户名")
    while shujuku.get(username):
        username = input("用户名重复,请重新输入")
    password = input("请输入密码")
    password = encrypt(password)

    shujuku[username] = password
    print("注册成功")
  1. 获取用户名

    username = input("请输入用户名:")

    使用 input 函数提示用户输入用户名,并将输入的内容存储在变量 username 中。

  2. 检查用户名是否已存在

    while shujuku.get(username):
    print("该用户名已存在。")
    username = input("请重新输入用户名:")

    这里使用了一个 while 循环来检查 数据库(一个数据库)是否已经包含了用户输入的用户名。如果shujuku.get(username) 返回的不是 None(即用户名已存在),则打印一条消息并再次提示用户输入用户名。循环会继续执行,直到用户输入一个不存在的用户名。

  3. 获取并加密密码

    password = input("请输入密码:")
    password = encrypt(password)

    首先,使用 input 函数提示用户输入密码,并将输入的内容存储在变量 passworfd 中。然后,调用一个名为 encrypt 的函数(加密函数)来加密密码,并将加密后的密码重新赋值给 password 变量。

  4. 将用户名和密码存储到数据库中

    shujuku[username] = password

    使用用户提供的用户名(username)作为键,将加密后的密码(password)存储在 shujuku中。

 登录

def login():#登录
    username = input("请输入用户名")
    while not(shujuku.get(username)):
        username = input("用户不存在,请重新输入")
    password = input("请输入密码")
    while shujuku.get(username) != encrypt(password):
        password = input("密码错误请重新输入")
    print("登陆成功")
  1. username = input("请输入用户名")

    使用 input 函数提示用户输入用户名,并将输入的用户名存储在变量 username 中。
  2. while not(shujuku.get(username)):

    shujuku.get(username) 尝试从 shujuku 中获取与 username 关联的值。如果 username 不存在,则返回 None(对于字典)或相应的默认值(取决于 shujuku 的实现)。
  3. username = input("用户不存在,请重新输入")

    如果上面的循环条件为真(即用户名不存在),则再次提示用户输入用户名,并重新赋值给 username
  4. password = input("请输入密码")

    当用户名验证通过后,提示用户输入密码,并将输入的密码存储在变量 password 中。
  5. while shujuku.get(username) != encrypt(password):

    shujuku.get(username) 获取与用户名 username 关联的值,这个值是用户存储在 shujuku 中的密码的某种形式(是密码的哈希值)。
  6. password = input("密码错误请重新输入")

    如果密码验证失败(即上面的循环条件为真),则提示用户重新输入密码,并重新赋值给 password

 加密

def encrypt(plaintext):#MD5加密
    bstr = bytes(plaintext, "utf-8")
    ciphertext = hashlib.md5(bstr).hexdigest().upper()
    return ciphertext
  1. 将明文转换为字节串

    bstr = bytes(plaintext, "utf-8")

    这行代码将传入的明文字符串 plaintext 转换为 UTF-8 编码的字节串 bstr。在 Python 3 中,字符串是 Unicode 类型的,但在进行哈希运算时,通常需要将其转换为字节类型。

  2. 计算 MD5 哈希值

    ciphertext = hashlib.md5(bstr).hexdigest().upper()

    这行代码做了三件事:

    • 使用 Python 的 hashlib 模块中的 md5 函数来计算字节串 bstr 的 MD5 哈希值。这会返回一个哈希对象。
    • 调用哈希对象的 hexdigest 方法来获取哈希值的十六进制表示。这个十六进制字符串被赋值给 ciphertext 变量。注意这里虽然变量名为 ciphertext,但实际上它存储的是哈希值,而不是加密后的密文。
    • supper将哈希值大写
  3. 返回哈希值

    return ciphertext

 代码主题

shujuku = {}
yao = get_int()
while yao !='3':
    if yao == '1':
        register()
    if yao == '2':
        login()
    yao = get_int()

本人太菜,主要为笔记,如对你能有帮助就好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值