随老男孩学习python mark

作业要求及提示:编写登录接口

'''

练习程序:编写登录接口

1. 输入用户名和密码

2. 认证成功后显示欢迎信息

3. 输错三次后锁定

输入三次后退出,下次同样用户名再登陆就显示用户已经被锁定,用户锁定信息可以保存在硬盘文件里面,跟硬盘文件进行交互

不能用shell命令,只能用Python的自带的文件调用的接口(可以对文件增删改查),先学文件处理怎么弄

4.用户名和密码从文件里面读取,还有一个检查账户锁定的文件

'''

作业知识点:

模拟登陆系统主要练习文件的操作、条件语句、循环等

1.str.strip([chars]):

删除字符串前边和后边的所有空格,chars参数可以定制需要删除的字符,可选。

input().strip()可以去除用户输入时带入的空格,避免产生不必要的错误。

用法:

account = input('请输入账号:').strip()

2.str.upper()

转换字符串中的所有小写字母为大写字母

command = input('请输入指令:').strip()

if command.upper() == 'A':

add_user(database)

不管输入的指令给为A或a都会执行此项。

3.dict.get(key)

获取字典中的key对应的value,若key不存在则返回None,

if database.get(account) == None:

如果key不存在不会报错

流程图

代码示例1

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @Author : "David J"

##未利用文件,未实现持续锁定

import sys

users_list = {"jdw":"123","smz":"123"}

locked_count = 0

log_error_count = 0

#登录模块

while True:

username = input("please input your username:").strip()

password = input("please input your password:")

#判断用户名和密码是否相同

if username in users_list.keys():

if password == users_list[username]:

print("登录成功")

sys.exit()

else:

log_error_count += 1

if log_error_count < 3:

print("用户名或密码错误,请重试!")

else:

locked_count = 1

print("重试超过三次,已锁定!")

sys.exit()

else:

log_error_count += 1

if log_error_count < 3:

print("用户名错误,请重试!")

else:

locked_count = 1

print("重试超过三次,已锁定!")

sys.exit()

代码示例2

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @Author : "David J"

#登录数据文件UserPassword.txt,实现用户三次错误后锁定

# 字典和列表的区别:列表是有顺序的,使用索引访问;而字典中的条目是用键keys来访问的

# 初始化空字典

user_dict = {}

# 初始化空列表list,有了空的列表之后,程序就可以向这个列表中增加元素

user_list = []

# 用户密码错误的初始值为0

login_error_count = 0

# 使用while开始无限制的循环

while True:

# 交互式输入登录用户名和密码

logon_name = input("Pls input your username:")

pass_word = input("Pls input your password:")

# 读取用户登录数据文件UserPassword.txt

'''

UserPassword.txt示例

jdw,123456,0,0

smz,123456,0,0

root,123456,0,0

cslc,123456,0,0

'''

users_data = open('UserPassword.txt','r')

# 循环遍历打开的数据,对打开的数据进行格式化操作,然后把格式化以后的数据保存到创建好的user_dict字典当中

for user_data in users_data:

# 使用strip去除user_data数据行中的前后空格

user_list = user_data.strip()

# 将去除前后空格之后的数据行user_list使用逗号进行分割,并重新保存到user_datas中

user_datas = user_list.split(',')

# 将user_datas数据行中的第0个位置的数据(即用户名),去除前后空格后,赋给新的变量user_name

user_name = user_datas[0].strip()

# 将user_datas数据行中的第1个位置的数据(即密码),去除前后空格后,赋给新的变量user_passwd

user_passwd = user_datas[1].strip()

# 将user_datas数据行中的第2个位置的数据(即锁定状态,0代表未锁定,1代表锁定),去除前后空格后,赋给新的变量user_locked

user_locked = user_datas[2].strip()

# 将user_datas数据行中的第3个位置的数据(即密码输入错误次数),去除前后空格后,赋给新的变量user_error_count

# 将user_datas[3]的数据类型强制转换为int

user_error_count = int(user_datas[3].strip())

# 将前面定义好的变量信息,保存到字典中,为前面的值指定键名,即键:值对应的关系,键名可以随便起,建议考虑易读性

# 如果下面的键名出线下划波浪线,并不代表有语法错误,而是编辑器认为拼写的英文不是正确的英文单词,不影响脚本执行

# 按照Python的编程规范,在逗号和冒号后面需要加一个空格

user_dict[user_name] = {'name': user_name, 'password': user_passwd,

'locked': user_locked, 'errorcount': user_error_count}

# 关闭打开的UserPassword.txt文件

users_data.close()

# 判断用户账户是否已经被锁定,将前面交互界面输入的用户名和字典里保存的用户名列进行匹配

# 将前面交互式输入的用户名和字典中的userlocked键进行匹配,如果用户名对应的键为1,就是被锁定了,退出登录

if logon_name in user_dict.keys():

if user_dict[logon_name]['locked'] == '1':

print("This user was locked,pls contact administrator!")

break

# 将前面输入的用户名、密码和字典中的用户名、密码进行匹配,如果成功,则输出登录系统,然后退出

if logon_name == user_dict[logon_name]['name'] and pass_word == user_dict[logon_name]['password']:

print("Welcome to System!")

break

else:

# 如果用户名在字典里,但是密码不对,将前面输入的用户名所对应字典中的错误次数进行自增

user_dict[logon_name]['errorcount'] += 1

# 如果用户名输入正确的情况下,密码输入错误的次数小于3次,给用户重新尝试的机会

if user_dict[logon_name]['errorcount'] < 3:

print("The password was wrong,pls try again,your have three chance!")

# 追加写入新的数据到UserPassword.txt,其中的errorcount会随着失败尝试次数的增加而增加,三次就是2,即0,1,2

write_data = open('UserPassword.txt', 'w+')

# 将字典里面的值取到_user_value中,进行循环遍历

for user_value in user_dict.values():

# 往脚本开头定义好的空列表里面逐行写入数据

user_list = [user_value['name'], user_value['password'], str(user_value['locked']),

str(user_value['errorcount'])]

# 将写入到user_list的数据再次进行格式化后赋给users_list

users_list = ','.join(user_list)

# 将users_list中的数据写入到UserPassword.txt中,并在每一行数据的结尾进行换行

write_data.write(users_list + '\n')

# 关闭UserPassword.txt文档

write_data.close()

else:

# 如果密码不正确的次数已经超过3次,就输出账户被锁定

print("You try three times,Account locked")

# 输出账户锁定的同时,将字典中locked键的值设置为1,这个地方改成1,前面判断Locked状态的IF才生效

user_dict[logon_name]['locked'] = 1

# 账户设置为锁定之后,将用户对应的错误密码次数清零,我理解的是锁定属性为1了,错误次数可以清零

user_dict[logon_name]['errorcount'] = 0

write_data = open('UserPassword.txt', 'w+')

for user_value in user_dict.values():

user_list = [user_value['name'], user_value['password'], str(user_value['locked']),

str(user_value['errorcount'])]

users_list = ','.join(user_list)

write_data.write(users_list + '\n')

write_data.close()

break

else:

# 如果用户名不存在,则输出信息

print("Pls ensure input currect account or password,you can try three times!")

# 程序开头设置了初始化不存在用户名的值为0,这里进行自增

login_error_count += 1

# 如果不存在的用户尝试次数超过3次,则中断程序

if login_error_count > 2:

break

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

python用户登陆程序 要求用户名和密码_python开发基础作业01:模拟登陆系统相关推荐

  1. python字典保存用户名和密码_Python开发之用户密码存储

    在各种线上应用中,用户名密码是用户身份认证的关键,它的重要性不言而喻.一方面,作为保护用户敏感数据的钥匙来说,一旦被破解,系统将敞开大门完全不设防.另一方面,密码这把钥匙本身就是非常敏感的数据:大多数 ...

  2. 编写一个用户类(Sysuser),属性包括用户名、真实姓名、年龄、出生日期、密码,类方法中包含单独修改用户年龄、判断用户名和密码、显示用户信息功能,在用户测试类中(TestSysuser),根据用户输

    #本关任务: 编写一个用户类(Sysuser),属性包括用户名.真实姓名.年龄.出生日期.密码,类方法中包含单独修改用户年龄.判断用户名和密码.显示用户信息功能,在用户测试类中(TestSysuser ...

  3. Python爬虫你需要积累这些基本知识_Python学习基础路线

    Python爬虫你需要积累这些基本知识_Python学习基础路线 爬虫定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则, ...

  4. linux中添加一个用户名和密码,uClinux中添加Telnetd登陆时的用户名和密码

    方法1: 编译Kernel的时,make menuconfig,打开Tinglogin,选择adduser(主要用于创建用户的password),addgroup(否则编译会报错,adduser程序中 ...

  5. 用户姓名保护python_Python操作LDAP,对用户进行认证(验证用户名以及密码)

    Python操作LDAP,对用户进行认证 1.环境 Python版本: 3.7.1 操作系统:windows 7 x64 第三方包:python-ldap 2.LDAP LDAP,它是基于X.500标 ...

  6. python用户登录程序_「Python」每日一练:函数的应用之注册登录程序

    编程题 函数的应用之注册登录程序 任务内容:要求模拟系统注册及登录的情境,注册密码要求:密码是6位或以上,必须包涵大写字母.小写字母.数字.程序若未退出前,则一直循环运行. 程序编写要求:按要求完善各 ...

  7. Linux中ftp密码输错无响应,psftp登陆输入正确用户名和密码后无响应解决办法

    psftp介绍:psftp是一个sftp的客户端,和一般的文件传输不同的是他是安全的,并且其登陆无需对ftp服务器进行用户密码设置,它使用的是linux本地账号密码登陆(有别于FTP用户名密码). 之 ...

  8. python连接数据库必须要提供用户名和密码_5.9---python连接数据库实现登录注册

    import pymysql # MySQL语句 插入数据行,即注册行为 register_sql = 'insert into user(name,password) values(%s,%s)' ...

  9. 登陆共享服务器的用户名和密码怎么修改

    1 一般在第一次登陆共享服务器的时候,可能会点击[记住我凭据].这样,以后再登陆时就自动登陆了,不用输入用户名和密码. 2 如果想改变用户名和密码怎么办呢?首先,打开控制面板,如下图所示,选择[用户账 ...

最新文章

  1. 数据结构 -- 双向循环链表
  2. Python练习题:如何将多个小字符串拼接成一个大的字符串
  3. ubuntu 允许root用户登陆ssh
  4. 给自己的Blog 上添加定制的搜索引擎
  5. html答题赚钱源码,WTS在线答题系统 v1.0.0
  6. JDBC连接Oracle数据库的参数配置
  7. n个节点的二叉树n+1_使用C ++程序删除链接列表的M个节点后的N个节点
  8. java 数据字典 spring_springboot+redis+切面实现数据字典功能
  9. echart vue 图表大小_cesium+vue,性能优化
  10. JQuery中Ajax的Post提交中文乱码的解决方案
  11. UIButton 上的标题添加下划线效果
  12. 95-40-025-java.util.concurrent-并发容器
  13. mysql 存储过程代码_mysql存储过程语法与实例
  14. 如何在 iOS 15 和 macOS Monterey 的 Safari 中隐藏 IP 地址?
  15. php如何触发html,html想触发php函数可以吗?
  16. 盘点那些不为大众所知,却暗地里很“牛逼”的软件
  17. jenkins 安装maven 插件
  18. webpack5 入门学习笔记(四)性能优化
  19. 《墨菲定律》读书笔记之第一章——成功学的秘密
  20. COIL:结合稠密检索和词汇匹配的更高效检索模型

热门文章

  1. EasyUI-draggable
  2. 匕首线切割图纸下载_匕首2-利用范围和子组件
  3. 马化腾:我就是一个工程师 测试公司产品是最大爱好
  4. app android安装测试,【和小强学移动app测试1】android移动开发环境搭建与配置
  5. 龙之谷冰龙linux手工服务端,【龙之谷手游服务端】3D手游冰龙商业版VM虚拟机一键安装即玩游戏客户端...
  6. openstreetmap_OpenStreetMap在尼泊尔回应
  7. BIOS 和 EC的关系
  8. 计算机辅助管理 实践,计算机辅助管理实验指书.doc
  9. 三格电子带你了解RS485转光纤_光猫
  10. IE8 + JQuery1.12.4 兼容之旅