一、首先了解需求:

1、支持多个用户登入

2、登入成功后显示欢迎,并退出程序

3、登入三次失败后,退出程序,并在下次程序启动尝试登入时,该用户名依然是锁定状态

二、文件代码如下:

f = open("C:\\Users\\Administrator\\Desktop\\lock_user.txt", "r")

f.seek(0)

data1 = f.readlines()

f.close() #读取文件中每一行的数据存为列表,以便判断是否是被锁定的用户名

username_dic = {"captain08":"123qwe","captain09":"124qwe","captain10":"125qwe","captain11":"126qwe",}

n = 0

while n < 3:

_username = input("请输入用户名:")

if _username not in username_dic:

print("输入的用户名不存在,请重新输入")

continue

elif _username in data1:

#判断输入的用户名是否是黑名单

print("此用户被锁定,请与管理员联系")

exit()

else:

_password = input("请输入密码 :")

if _password == username_dic[_username]:

print("welcome",_username)

break

else:

print("密码错误,请重新输入")

n += 1

else:

f = open("C:\\Users\\Administrator\\Desktop\\lock_user.txt","r+")

data = f.readlines()

#读取文件,是为了将光标停留在文件的最后一格

f.write("\n"+_username)

#将加入黑名单的用户名写入文件内

f.close()

三、代码还可优化处:

else: f = open("C:\\Users\\Administrator\\Desktop\\lock_user.txt","r+")

data = f.readlines() #读取文件,是为了将光标停留在文件的最后一格

f.write("\n"+_username) #将加入黑名单的用户名写入文件内

f.close()

更改为:

else: f = open("C:\\Users\\Administrator\\Desktop\\lock_user.txt","a")

f.write("\n"+_username)     #将加入黑名单的用户名写入文件内

f.close()

四、解题思路:

1、多个用户信息需存放,用字典的形式

2、重复三次需要用同样的代码,需用while语句

3、将输入的信息与字典内的用户名和密码进行条件判断,以此来判断登入成功与否

4、锁定用户名问题转化成通俗易懂的问题:输入的用户名信息与黑名单内容进行条件判断,若在内,用exit()退出程序。

5、运用文件的open语句建立黑名单内容

五、做题感受

①由于基础的不扎实,中途未掌握的知识点:

1、readlines后的list与文件内的内容无关,list是存在内存中的

2、writelines(list):list所有元素连在一起成一行str

3、list._str_()是将列表的所有字符全部转化成str,包括中括号,逗号

4、文件open方式:r,r+(读写),a(追加:会将光标直接移到文件末端),w

②解题思路优化

实际需求必须加深理解,并将需求转化成程序语言能解决的需求

python基础篇---实战---用户登入注册程序的更多相关文章

  1. python基础篇实战

    1. 判断下面的结果 # 1. 判断下面的结果 # 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 pri ...

  2. Struts2+AJAX+JQuery 实现用户登入与注册功能。

    要求 必备知识 JAVA/Struts2,JS/JQuery,HTML/CSS基础语法. 开发环境 MyEclipse 10 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 关于U ...

  3. Struts2+AJAX+JQuery 实现用户登入与注册功能

    要求:必备知识:JAVA/Struts2,JS/JQuery,HTML/CSS基础语法:开发环境:MyEclipse 10 关于UI部分请查看下列链接,有详细制作步骤: 利用:before和:afte ...

  4. python基础篇(一)

    PYTHON基础篇(一) 变量 赋值 输入,输出和导入 A:输入 B:输出 C:导入 运算符 A:算数运算符 B:比较运算符 C:赋值运算符 D:位运算符 E:逻辑运算符 F:成员运算符 G:身份运算 ...

  5. python基础篇-day1

    python基础篇 python是由C语言写的: pass 占位符: del,python中全局的功能,删除内存中的数据: 变量赋值的方法: user,pass = 'freddy','freddy1 ...

  6. python基础篇之进阶

    python基础篇之进阶 参考博客:http://www.cnblogs.com/wupeiqi/articles/5115190.html python种类 1. cpython  使用c解释器生产 ...

  7. python基础篇(六)

    PYTHON基础篇(六) 正则模块re A:正则表达式和re模块案例 B:re模块的内置方法 时间模块time A:时间模块的三种表示方式 B:时间模块的相互转换 随机数模块random A:随机数模 ...

  8. python基础篇(五)

    PYTHON基础篇(五) 算法初识 什么是算法 二分查找算法 ♣一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大 ...

  9. python基础篇(二)

    PYTHON基础篇(二) if:else,缩进 A:if的基础格式和缩进 B:循环判断 C:range()函数和len()函数 D:break,contiue和pass语句 for,while循环 函 ...

随机推荐

  1. 【最小生成树】【kruscal】hdu4786 Fibonacci Tree

    假设这张图能够形成具有k条白边的生成树, 则易证k一定形成一个连续的区间[a,b],中间一定不会断开.要是断开……tm怎么可能. 所以求出a,b就好啦,人家都给你把白边赋成1了,直接跑一下最小生成树, ...

  2. [洛谷P3809]【模板】后缀排序

    [洛谷P3809][模板]后缀排序 题目大意: 对于给定的长度为\(n(n\le10^6)\)的字符串求后缀数组\(sa[i]\). 思路: 倍增+快排构造后缀数组.代码参考<挑战程序设计竞赛& ...

  3. TCP连接 断开

     参考:http://blog.csdn.net/cyberhero/article/details/5827181 1.建立连接协议 (三次握手)      (1)客户端发送一个带SYN标志的TCP ...

  4. Ubuntu 16.04通过NetworkManager(GUI)配置网桥

    说明:配置好网桥之后一定要重启,不然不生效.这个是Desktop版GUI设置的问题.Server版不会. 配置: 参考: http://www.jb51.net/LINUXjishu/333778.h ...

  5. 使用webclient上传下载实例

    转载:http://blog.csdn.net/kevonz/article/details/5078432 using System; using System.Collections.Generi ...

  6. FIREMONEY手机虚拟键盘遮挡的解决

    FIREMONEY手机虚拟键盘遮挡的解决 尝遍了网上人们提供的N种方法之后,发现还是老猫的方法才是彻底解决问题的办法. 老猫“不看后悔XXX”--->RAD10.2.3 Flying Wang ...

  7. PHP版本切换

    前言 php是为了快速构建一个web页面而迅速被大家广为接受的开源语言,通过不断发展已经有了很多的php开源系统,满足了目前大部分用户的站点需求.1995年初php诞生到现在已经存在多个版本,并且每个 ...

  8. Xcode8从相册选图片

    使用Xcode8写自己的东西有一段时间了,在使用Xcode8编程时不得不说我特别喜欢改后的默认字体,哈哈,当然默认字体是可以调回去的,只不过默认的字体感觉看起来比以前舒服了,毕竟不会像之前那么”字正腔 ...

  9. __argc和__argv变量

    微软提供了全局变量__argc 和__argv.这两个变量由Windows在运行时自动赋值.其中__argv有ASCII和Unicode版本,分别为__argv和 __wargv.要使用这两个全局变量 ...

  10. JS的join方法

    join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. 例子 1 在本例中,我们将创建一个数组,然后把它的所有元素放入一个字符串: <script type ...