用户注册程序

目录

1.程序内容主要包括:

2.以下为程序内容:

3.总结


1.程序内容主要包括:

# 注册用户(限制用户名和密码长度)
# 正则表达式(检查用户名格式)import re
# 检查关键字(禁止敏感词汇)
# 读取文件(csv文件,储存用户名和密码,检查用户名是否重复)import csv
# 密码加密 import hashlib
# 保存文件(将用户名和加密密码写入csv文件)

2.以下为程序内容:

import re
import csv
import hashlib


def register(name, password):
    # 限制用户名和密码长度
    n = len(name)
    if n < 1 or n > 10:
        return '错误:' \
               '输入的用户名不符合规则,请输入正确的用户名!'
    n = len(password)
    if n < 6 or n > 20:
        return '错误:' \
               '输入的密码不符合规则,请输入正确的密码!'

    # 检查用户名格式
    isValidFormat = re.search('^\d| ', name)  # 正则表达式'^\d| '表示正则name中的数字或空格。
    if isValidFormat != None:
        return '错误:' \
               '用户名中不能含有数字或空格,请重新输入!'

    # 检查关键字
    keyword = ['fuck', 'shit', '你大爷']
    for key in keyword:
        check = name.find(key)
        if check != -1:
            return '错误:用户名中不能含有:' + key

    # 检查用户名是否重复
    f = open('D:\python教程\pythonProject2\注册用户数据库.csv', encoding='utf-8')
    reader = csv.DictReader(f)  # csv.DictReader()可以以字典格式读取,第一行为键,以下几行为对应的值
    rows = list(reader)
    # print(rows)
    for i in rows:
        # print(i)
        if i['name'] == name:
            return '错误:输入的用户名已存在!请尝试其他用户名!'

    # 加密密码
    # 1.创建md5加密对象(也可以使用强度更高的sha256)
    m = hashlib.md5()
    # 2.调用其update函数传入用户原始密码。
    m.update(password.encode('utf-8'))
    # 3.调用其hexdigest函数获取其摘要。
    pwd2 = m.hexdigest()
    print(password, pwd2)
    row1 = {'name': name, 'password': pwd2}
    rows.append(row1)

    # 保存文件
    # 1.打开csv文件并设置格式。
    f = open('D:\python教程\pythonProject2\注册用户数据库.csv', encoding='utf-8', mode='w', newline='')
    # 2.获取其文件写入器并指定表头。
    header = ['name', 'password']
    writer = csv.DictWriter(f, fieldnames=header)
    # 3.写入csv表头和表体。
    writer.writeheader()
    writer.writerows(rows)

    return '执行成功!'

# 主程序
a = input("请输入用户名:")
b = input("请输入密码:")
result = register(a, b)
print(result)

3.总结

1.正则表达式是一个很好的比较两个字符串内容的命令,它能很好地判断一个字符串中是否包含数字、空格、字母等特殊字符。

例如:

isValidFormat = re.search('^\d| ', name)  # 正则表达式'^\d| '表示正则name中的数字或空格。

2.csv文件对带有表头的数据的存储和处理是很有优势的,它可以以字典的形式写入和读取(csv.DictWriter()\csv.DictReader())

例如:

# csv.DictReader()可以以字典格式读取,第一行为键,以下几行为对应的值
reader = csv.DictReader(f)  

# 获取其文件写入器并指定表头。
header = ['name', 'password']
writer = csv.DictWriter(f, fieldnames=header)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值