初学者的python学习笔记1——作业篇

本文分享了Python中实现用户登录验证及错误处理的方法,并提供了一个简单的多级菜单导航示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  既然是学习,作业必不可少,其实在看后面讲思路之前还是感觉自己写的不错,但是和后面一对比,感觉实在是想的太片面太肤浅了,还需要太多太多改进的地方。

  首先放一下作业要求。

  最开始做的时候真的是完全按照字面的要求去做,再回来看看总有一种缺少思考的感觉,现在先把第一遍作业的代码放出来,之后会根据视频讲解进行改进,到时候再对比一下吧。

#作业一
#!/usr/bin/env python
import os   #加载模块
name1 = "n"   #正确的用户名
pd1 = "qqqqq"   #正确的密码
if os.path.exists("suoding.log"):   #判断锁定文件是否存在
    print("系统锁定")
    exit(1) #如果存在则退出
suoding=0   #锁定变量 0为非锁定,1为锁定
cishu = 0   #输入错误的次数
zuidacishu = 3  #错误次数上线
if suoding==0:
    for i in range(zuidacishu):  #错误次数上线的循环
        suoding=0
        name = input("请输入用户名:")
        pd = input("请输入密码:")
        if name == name1 and pd == pd1: #判断账号密码错误
            print("认证成功,欢迎进入系统")
            break
        else:
            cishu += 1  #错误次数加一
            cishujieguo=zuidacishu-cishu    #剩余次数
            print("认证失败,您还有%s次机会"%(cishujieguo))
else:
    print("系统已被锁定")
    exit(1)
if cishu == 3:      #判断如果已经错误3次
    f=open("suoding.log","w")   #创建锁定日志
    f.write("1")
    f.close()
    print("系统锁定")
    suoding=1
    exit(1)

  作业一只是单纯的判断变量的方式判断账号,仔细想想这种方法根本无法用在真实的环境下,真是环境下必然是通过账号文件和屏蔽名单来实现的。这也算是个教训吧,以后做作业的时候尽量考虑到真实环境,而不是单纯的为了作业而做。

  作业一改版,去掉了锁定变量,改为使用文件读取的方式控制账号正确和锁定,把之前的修改全部改作注释进行对比。事先存在两个文件,zhanghao和suoding,用于保存账号和锁定名单,没有在脚本中体现出来。

zhanghao:
aaa:111
bbb:222

suoding
bbb
#作业一改版
#!/usr/bin/env python
#使用两个文件保存用户信息和登录次数,判断是否可以登录
# import os   #加载模块
# name1 = "n"   #正确的用户名
# pd1 = "qqqqq"   #正确的密码
# if os.path.exists("suoding.log"):   #判断锁定文件是否存在
#     print("系统锁定")
#     exit(1) #如果存在则退出
suoding=0   #锁定变量 0为非锁定,1为锁定
cishu = 0   #输入错误的次数
zuidacishu = 3  #错误次数上线
a=open("zhanghao").readline()   #读取账号文件
b=open("suoding").readline()    #读取锁定账号
name = input("请输入用户名:") #把账号放在前面,避免三次输入不同账号所造成的锁定问题
# if suoding==0:
for i in range(zuidacishu):  #错误次数上线的循环
    # suoding=0
    # name = input("请输入用户名:")
    pd = input("请输入密码:")
    if "%s"%(name) in b:    #判断账号是否在锁定名单,在则退出
        print("账号被锁定")
        exit(1)
    else:
        # if name == name1 and pd == pd1: #判断账号密码错误
        if "%s:%s"%(name,pd) in a:    #判断账号密码是否正确
            print("认证成功,欢迎进入系统")
            break
        else:
            cishu += 1  #错误次数加一
            cishujieguo=zuidacishu-cishu    #剩余次数
            print("认证失败,您还有%s次机会"%(cishujieguo))
# else:
#     print("系统已被锁定")
#     exit(1)
if cishu == 3:      #判断如果已经错误3次
    if "%s"%(name) in b:    #判断账号在是否在锁定名单,在则直接退出
        print("系统锁定")
        exit(1)
    else:
        f=open("suoding","a")   #否则,讲账号加入到锁定名单中
        f.write("%s\n"%(name))
        f.close()
        print("系统锁定")
        # suoding=1
        exit(1)

 

作业二

#作业二
#!/usr/bin/env python
msg='输入下列序号进入相应的省份\n1:北京\n2:上海\n3:四川'
bj='输入下列序号进入相应的省份\n1:海淀\n2:大兴\n3:通州'
sh='输入下列序号进入相应的省份\n1:外滩\n2:鸿口\n3:闵行'
sc='输入下列序号进入相应的省份\n1:重庆\n2:渝北\n3:巴南'
hd='输入下列序号进入相应的省份\n1:海淀1\n2:海淀2\n3:海淀3'
tz='输入下列序号进入相应的省份\n1:通州1\n2:通州2\n3:通州3'
wt='输入下列序号进入相应的省份\n1:外滩1\n2:外滩2\n3:外滩3'
mh='输入下列序号进入相应的省份\n1:闵行1\n2:闵行2\n3:闵行3'
hk='输入下列序号进入相应的省份\n1:鸿口1\n2:鸿口2\n3:鸿口3'
bn='输入下列序号进入相应的省份\n1:巴南1\n2:巴南2\n3:通巴南3'
cq='输入下列序号进入相应的省份\n1:重庆1\n2:重庆2\n3:重庆3'
yb='输入下列序号进入相应的省份\n1:渝北1\n2:渝北2\n3:渝北3'
dx='''
输入下列序号进入相应的省份
1:大兴1
2:大兴2
3:大兴3
'''
print(msg)
nb1=int(input("输入序号:"))
if  nb1==1:
    print(bj)
    nb2=int(input("输入序号:"))
    if nb2==1:
        print(hd)
    elif nb2==2:
        print(dx)
    elif nb2==3:
        print(tz)
    else:
        print("输入错误")
elif nb1 == 2:
    print(sh)
    nb2=int(input("输入序号:"))
    if nb2==1:
        print(wt)
    elif nb2==2:
        print(hk)
    elif nb2==3:
        print(mh)
    else:
        print("输入错误")
elif nb1==3:
    print(sc)
    nb2=int(input("输入序号:"))
    if nb2==1:
        print(cq)
    elif nb2==2:
        print(yb)
    elif nb2==3:
        print(bn)
    else:
        print("输入错误")
else:
    print("输入错误")

  作业二使用的最简单的方式,比较繁琐,应该有更好的更简便的方法完成目标。作业二的解题思路还没有看,改进之后再进行更新。

转载于:https://www.cnblogs.com/Pseudocat/p/5750190.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值