前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件操作案例2-模拟网站登录程序

文件操作案例2-模拟网站登录程序

作者头像
叶子陪你玩
发布2020-03-12 15:27:53
4540
发布2020-03-12 15:27:53
举报
前言

本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。

输入1进入登录模式

输入2进入注册模式,3进入管理员模式,进入后输入1可以查看信息

输入4直接退出操作

整体实现思路和上一篇 python记账本程序 很类似,不同的是中间加了很多的逻辑判断和for else的一个用法,之前可能没见过.

下面就具体讲一下程序的实现过程。

首先本地需要有一个保存账号密码的文件,这里新建了一个,接着往里面提前存了一个管理员账号。数据结构采用的是字典数据类型,因为账号和密码是成对一一对应的,所以字典就非常合适了,字典添加修改数据之前讲过了,这里就不细讲了。

接着创建一个提示信息常量和循环控制的条件变量,后面用于控制退出嵌套循环使用。

接着获取用户输入的操作选择,根据用户的选择进行对应的操作,首先是登录模式。先用两个变量username和userpassword获取用户输入的账号密码,接着和数据文件中的账号密码进行比对,这里用到一个for else语句,如果比对所有密码都没有匹配,就会执行到else语句,匹配就会进入到print语句,这里将LOOSTATUS赋值为0了,for 循环外侧还有一个while循环,用break无法退出,通过LOOPSTATUS就可以实现了,后面之所以还加了一个break是因为不加的话会执行到else语句。

注册操作和登录非常相似,需要先进行比对,看是否有注册过,没有就将账号密码写入到数据文件中。

3和4操作比较简单,将输入账号密码和管理员的账号进行对比,成功就让用户输入1查看所有账户信息;4的话就是直接退出整个循环。

完整代码:

代码语言:javascript
复制
import os
import json

# 创建账户文件,设置管理员账号密码
if not os.path.exists("record.json"):
    with open("record.json","w") as f:
        superuser="admin"
        superpassword="qwert"
        data={}
        data[superuser]=superpassword
        json.dump(data,f)

# 登录注册提示信息
info=(
        "=======登录网站========\n"
        "1.登录 输入数字 1\n"
        "2.注册账户 输入数字 2\n"
        "3.管理员登录 输入数字 3\n"
        "4.退出网站 输入数字 4\n"
        "=======登录网站========"
        )
# 循环控制的条件变量 因为有嵌套循环 内层break无法退出
LOOPSTATUS=1

while LOOPSTATUS:
    print(info)
    choice = input("请输入你的操作选择-->:")

    if choice=="1":
        username=input("请输入你的用户名-->:")
        userpassword = input("请输入你的密码-->:")

        with open("record.json") as f:
            data = json.load(f)
        # 循环比对账号密码
        for key in data:
            if username==key and userpassword==data[key]:
                print("恭喜登入成功")
                LOOPSTATUS=0
                break
        # 全部比较完都没有找到就打印提示信息
        else:
            print("用户名不存在或者密码错误,请注册或者重新输入")

    elif choice == "2":
        username=input("请输入你的用户名-->:")
        userpassword = input("请输入你的密码-->:")

        with open("record.json") as f:
            data = json.load(f)

        for key in data:
            if username==key:
                print("用户名已存在,请重新输入")
                break
        else:
            data[username]=userpassword
            with open("record.json", 'w') as f:
                json.dump(data,f)
            print("恭喜注册成功")

    elif choice=="3":
        username=input("请输入你的用户名-->:")
        userpassword = input("请输入你的密码-->:")
        with open("record.json") as f:
            data = json.load(f)

            if username=="admin" and userpassword==data["admin"]:
                print("恭喜登入成功")
                Input=input("输入1查看所有账户信息")
                if Input=="1":
                    print(data)
                    break
                else:
                    print("无效输入")
                    continue

            else:
                print("用户名不存在或者密码错误,请注册或者重新输入")
                continue        

    elif choice=="4":
        print("成功退出,欢迎下次光")

整个程序到这里就结束里,相信很多小伙伴还有很多其它想法,比如限制输入错误次数,增加修改密码功能等等,这些就留给大家自己探索了,下面提供一个简单的次数限制程序,可以自己修改放进去。

代码语言:javascript
复制
"""
##参考密码次数输入错误限制
"""
# 密码输入次数
count = 0
while count < 3:
    name = input("请输入你的账号:")
    password = input("请输入你的密码:")
    if password == "123456":
        print("你的账号是:", name, "你的密码是:", password)
        print("登入成功")
    else:
        count = count + 1
        print("密码错误,还有", 3-count, "次机会")
print(count, "次输入错误,密码已被锁定")</pre>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档