作业一:编写登陆接口

  1、输入用户名密码

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

  3、输错三次后锁定

分析:

1、流程控制图

2、readme文件

需求:
1、用户登录
2、错误三次锁定
分析:
1、建立user_data.txt文件,含3个字段:name,password,lock(>3表示正常,3=<表示锁定)
2、用json模块把三个字段存成字典dict_data

3、代码

import json

def login(user_data):
'''
:param user_data: 用户信息字典
:return: True 成功, False 不成功
'''
name = input("请输入用户名:")
if user_data.get(name): #用户名存在
num = user_data[name][1]
if num >= 3: #用户已被锁定
print("用户已被锁定!")
return False
else: #用户未被锁定
flag_pass = True
while flag:
password = input("请输入密码:")
if password == user_data[name][0]: #密码正确
flag_pass = False
return True
else: #密码错误
num += 1
if num >= 3: #密码错误3次
print("用户已被锁定!")
user_data[name][1] = num
with open("user_data.txt","w") as f:
json.dump(dict_data,f)
return False
else: #用户名不存在
print("用户名不存在,请重新输入!")
return False if __name__ == "__main__":
dict_data = {}
flag = True
with open("user_data.txt", "r") as f:
dict_data = json.load(f)
while flag:
if login(dict_data):
flag = False
print("welcome back!")
import os
import json if os.path.exists(r'C:\Users\huang\PycharmProjects\day1\sql.txt'):
# 存储账户密码文件存在
while True: # 用户输入名字和密码并去前后空格
user_name = input('input name:').strip()
user_pwd = input('input pwd:').strip() # 以读的方式打开文件并把读取到的数据转化为dict对象
with open('sql.txt', 'r') as f:
d = json.loads(f.read()) if d.get(user_name) and d[user_name][1] < 3:
# 用户名存在并错误次数小于3次(3次锁定)
if d[user_name][0] == user_pwd:
# 用户密码正确
print('welcome back!')
else:
# 用户密码不正确,错误次数+1并写入文件
print('user or pwd is worry!')
d[user_name][1] += 1
with open('sql.txt', 'w') as file:
df = json.dumps(d)
print(df)
file.write(df)
else:
# 用户名不存在或错误次数大等于3次(3次锁定)
if d.get(user_name):
# 用户名存在且错误次数大等于3次(3次锁定)
print('worry to many!')
else:
# 用户名不存在
print('user_name is not exists!')
else:
# 存储账户密码文件不存在
print('soft is error!')

5、python第一天作业的更多相关文章

  1. python第一天作业

    作业需求 OK 开始动手了 作业要用到的知识点: python的文件操作 ####################################################3 开始了 1.先写一 ...

  2. 小甲鱼 python——第一课作业!

    0:  python是脚本语言把?虽然不是很清楚什么是脚本语言就是了.复制一下: 脚本语言(英语:Scripting language)是为了缩短传统的"编写.编译.链接.运行"( ...

  3. Python第一周作业

    import turtle turtle.color('black','red') turtle.pensize(10) turtle.begin_fill() for i in range(5): ...

  4. python课程第一天作业1-模拟登录

    第一周作业: 作业1:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 流程图: 代码:后来修改过一次: #!/usr/bin/env python # -*-conding:ut ...

  5. python第一周总结

    这一周将开启学习python第一周,开始之前学过python但是没有学精,到现在基本快忘记了,只能记住大概什么样子了emmm 作业计算bmi 这周作业为计算bmi,小明身高1.75,体重80.5.请根 ...

  6. python基础 实战作业 ---Excel基本读写与数据处理

    代码地址如下:http://www.demodashi.com/demo/11650.html 看完本篇需要: 10min 作业练习需要: 0.5h~3h(依练习者对python熟悉程度而定) 看完本 ...

  7. 【作业1.0】OO第一单元作业总结

    OO第一单元作业已全部完成,为了使这一单元的作业能够收获更多一点,我回忆起我曾经在计算机组成课设中,经常我们会写一些实验报告,经常以此对实验内容反思总结.在我们开始下一单元的作业之前,我在此对OO第一 ...

  8. OO第一单元作业总结——表达式求导

    OO第一单元作业总结 第一次作业 基于度量分析代码结构 基本算法 第一次作业是简单多项式导函数求解,不需要对输入数据的合法性进行判定, 基本思想是用 (coeff, expo)表示二元组 coeff* ...

  9. python第一站

    python 第一站,豆瓣-美国末日评论小爬虫 最近学习python,但是光是看书看视频学习,总是觉得掌握的不够扎实.所以就决定自己去写写爬虫,当带着目的性去学,也许更容易发现自己需要什么.这是酝酿多 ...

随机推荐

  1. WPF PlacementTarget技巧

    <Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winf ...

  2. Sharing A Powerful Tool For Calculate Code Lines

    最近正好需要统计下某项目代码行数,然后就找代码行数统计工具.以前找到过一个正则表达式,但是只有在VS2010下有用,VS2012和VS2013下的统计就不好使了. 接着搜索了一下代码行数统计绿色工具免 ...

  3. TODO:Golang UDP连接简单测试慎用Deadline

    TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interco ...

  4. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  5. PHP制作查询租房表

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. EL

  7. Eos开发——ajax请求

    function saveData(){ form.validate(); if(form.isValid()==false) return; var persons = grid.getChange ...

  8. iOS-几大框架的介绍

    1.Objective-C之Foundation框架 概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objectiv ...

  9. angularjs中的directive scope配置

    angularjs中的directive scope配置 定义directive其中重要的一环就是定义scope,scope有三种形式: 默认的scope,DOM元素上原有的scope scope: ...

  10. 【hadoop摸索系列】记录使用libhdfs访问hdfs的关键问题

    hadoop官方的二进制发布版本一直是32位平台编译的,对于java来说跨平台不影响使用,但是为了在c/c++程序中操作hdfs就做不到了,因为libhdfs.so是二进制不兼容的. 我使用的是sta ...