要求编写登录接口:

1. 输入用户名和密码

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

3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序)

4.用户名正确,密码错误,提示密码错误,重新输入.(密码错误3次,锁定用户名并提示,退出程序)

readme

应用知识点:

一、文件的操作

基本操作

f = open('lyrics','r',) #打开文件

first_line = f.readline()

print('first line:',first_line) #读一行

data = f.read()# 读取剩下的所有内容,文件大时不要用

print(data) #打印文件

f.close() #关闭文件

打开文件的模式有:

r,只读模式(默认)。

w,只写模式。【不可读;不存在则创建;存在则删除内容;】

a,追加模式。【可读;不存在则创建;存在则只追加内容;】

with语句,同时打开多个文件,还可以避免打开文件后忘记关闭,语法:

with open('file1', 'r', encoding='utf-8') as f , \

open('file2', 'w', encoding='utf-8') as f_2 :

...

本例中有2个文件,一个存用户名和密码,另一个存黑名单.在读取文件后怎样转变成python对象,然后对对象进行操作,是我遇到的第一个难点!

然后查了下资料,发现字符串split方法,可以把字符串,从逗号分隔符的地方断开,得到一个子字符串列表.这样一来,就可以对黑名单进行查找等操作了.

...

user_lis_bak = f.readline().split(',')

...

Python 字典 setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。

dict.setdefault(key, default=None)

二、列表和字典

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

names = ['xiaoli',"xiaoming",'yuanlu']

通过下标访问列表中的元素,下标从0开始计数

>>> names[0]

'xiaoli'

>>> names[1]

'xiaoming'

>>> names[-1]

'yuanlu'

>>> names[-2] #还可以倒着取

'xiaoming'

字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

info = {

'xiaoli': "123456",

'xiaoming': "111111",

'yuanlu': "888888",

}

这里key是用户名,value是密码,一一对应,key是唯一的.

三、for loop 和 if...else

for i in range(10): print(i)

还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出

for i in range(10):

if i>5:

continue #不往下走了,直接进入下一次loop

print(i)

用户名和密码文件格式:

xiaoli 123456

xiaoming 888888

wangpeng 111111

luyuan 112222

qiling 556666

haiming 223333

黑名单文件格式:

xiaoli,xiaoming,wangpeng,

代码

with open('user_lis', 'r', encoding='utf-8') as f_user_lis,\

open('user_lis_bak', 'r', encoding='utf-8') as f_user_lis_bak: # 打开文件'user_lis'和'user_lis_bak'

user_lis_bak = f_user_lis_bak.read().split(',') # 读取f_user_lis_bak并转成列表赋值给 user_lis_bak

user_lis_dict = {} # 定义一个空字典

for i in f_user_lis:

user_lis_dict.setdefault(i.split()[0], i.split()[1]) # 读取f_user_lis并把值放入字典user_lis_dict中

count = 0

for i in range(5): # 设置错误次数上限为5次

name = input('请输入用户名>>')

password = input('请输入密码>>')

if name in user_lis_bak: # 第一步先查找黑名单

print('用户名已被锁定,请联系管理员!!!')

continue # 在黑名单中直接进入下一次循环,重新输入用户名和密码

elif name in user_lis_dict: # 第二步查找用户白名单

if password == user_lis_dict.get(name): # 密码正确,验证通过 退出

print('亲爱的会员', name, '欢迎回来')

break

else: # 密码错误,提示错误

if count == 2:

name_bak_write = open('user_lis_bak', 'a', encoding='utf-8')

name_bak_write.write(name+',')

name_bak_write.close() # 3次密码错误,就把用户名写进黑名单

print('用户名已锁定,请联系管理员!!!')

break

print('密码错误!!!')

count += 1 # 密码错一次,count就+1

else:

if i == 4: # 用户名错5次,直接退出

print('尝试次数过多,再见!!!')

continue

print('用户名不存在!!!') # 用户名错误,提示错误

以上这篇python初学之用户登录的实现过程(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python编写密码登录程序_python初学之用户登录的实现过程(实例讲解)相关推荐

  1. python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解)

    ①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...

  2. python爬取房源数据_python爬取安居客二手房网站数据(实例讲解)

    是小打小闹 哈哈,现在开始正式进行爬虫书写首先,需要分析一下要爬取的网站的结构:作为一名河南的学生,那就看看郑州的二手房信息吧! 在上面这个页面中,我们可以看到一条条的房源信息,从中我们发现了什么,发 ...

  3. python编写掷骰子程序_Python Tkinter实例——模拟掷骰子

    什么是tkinter? tkinter 是 python 的标准 gui 库.python 使用 tkinter 可以快速的创建 gui 应用程序. 由于 tkinter 是内置到 python 的安 ...

  4. 为了偷懒,我开始用Python编写Android应用程序

    为了偷懒,我开始用Python编写Android应用程序 说明 环境准备 开发环境准备(windows) 编译环境准备 自行配置制作编译环境 偷懒:直接下载配置好的虚拟机 编译 验证APK 总结 说明 ...

  5. 教你用Python 编写 Hadoop MapReduce 程序

    摘要:Hadoop Streaming 使用 MapReduce 框架,该框架可用于编写应用程序来处理海量数据. 本文分享自华为云社区<Hadoop Streaming:用 Python 编写 ...

  6. 使用Python编写网络扫描程序

    使用Python编写网络扫描程序 ​ 网络扫描程序通过向成百上千台计算机发送请求并分析其响应,扫描第2层和第3层网络中指定范围内的网络ID.利用某些扩展技术,网络扫描程序还可以获得通过Samba和Ne ...

  7. Python 编写的图形程序打包为安卓 APP、IOS

    如果想使用 Python 语言编写图形界面程序,那么有不少的框架可以提供支持,比如 Kivy.Tkinter.PyQt.WxPython.pyui4win等等. 这些框架都是只能创建桌面图形界面程序, ...

  8. python编写一计票程序,键盘输入候选人姓名(输入“#”结束),使用字典存储并统计出候选人得票数。python实现分段函数。

    一.编程题目         编程题目1:python编写一计票程序,键盘输入候选人姓名(输入"#"结束),使用字典存储并统计出候选人得票数.        编程题目2:pytho ...

  9. 微信授权绑定手机号 java_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPhoneNumber这个组件通过button来实现(别的标签无 ...

  10. php 微信小程序获取手机号_实例讲解微信小程序获取手机号授权用户登录功能...

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写.本文主要给大家分享微信小程序获取手机号授权用户登录功能,需要的朋友参考下吧, ...

最新文章

  1. 开发打开设置洁面_用华为手机,这4个功能一定要打开,不然你的手机只会越用越卡!...
  2. 阿里云产品搭建web应用梳理
  3. dwt去噪 matlab,用matlab进行小波去噪的程序
  4. 亿嘉和机器人上市了吗_亿嘉和上半年收入持续增长,拟7亿元定增加码主业研发...
  5. 一次失败的蛋疼的设计
  6. [转载] 纯函数和函数柯里化
  7. mysql企业监控_mysql企业监控
  8. 有人说中文编辑是解决中国程序员编程效率的秘密武器,请问他是一个银弹吗?...
  9. LINUX下FORK的运行机制详细解析
  10. 嵌入式操作系统内核原理和开发(改进型优先级调度)
  11. [译]其实闭包并不高深莫测
  12. java stack 实现_Swift Stack实现
  13. 计算机组成原理(白中英) 第一章课后题部分答案(知识点汇总及扩展)
  14. JAVA 正则表达式 练习 (简直深恶痛绝!!)
  15. Java期末考试试题及参考答案(01)
  16. 为什么mysql打开闪屏_MAC下的一些快捷键和实用软件
  17. 小功能⭐️Unity快捷键、路径及常用特性
  18. 数据分析师对年龄有限制吗?现在转行还来得及吗?
  19. hdl_localization试读
  20. C++实现字符串的反转

热门文章

  1. 服务器安全(防止被攻击)
  2. python 循环语句 教学设计_pythonwhile循环教案
  3. 自主安装IPA文件到iPhone上
  4. 虚拟机无法查询ip地址的解决方案
  5. php网页读取sql数据库数据模板,discuz模板中直接读取数据库中的插件数据
  6. 阿里云使用经验分享——小投入大收益
  7. JS简单的时间控件分享
  8. php qq邮箱验证码不显示图片,qq邮箱邮件图片不显示怎么解决-解决qq邮箱邮件图片不显示的方法 - 河东软件园...
  9. 快速幂计算x的n次幂,递归版本、迭代版本、python实现
  10. 与锤子手机HR的对话——创业没有联合创始人,CTO 等高管会把它当做自己的事业吗?...