python 3 - 写一个注册的程序,账号和密码都存在文件里面
choice = input('请输入你的选择:1,注册2、删除用户3、登录')
#注册
输入
账号
密码
密码确认
# #需要校验用户是否存在,两次输入的密码,是否一致,为空的情况
#账号和密码都存在文件里面
#删除
输入一个用户名
#需要校验用户是否存在
#登录
输入账号密码登录
choice = input("请输入您的选择:1.注册2.删除用户 3.登录").strip()
f = open("register.txt",'a+')
f.seek(0)
allUser = []
for user in f.readlines():
uname = str(user).split(',')[0] #从文件中取int("username:"+uname)
allUser.append(uname)
print("alluser:"+str(allUser))
if choice == '1':
username = input("please input username: ").strip()
if username in allUser:
print("该用户名已经被注册!")
else:
pwd = input("please input your password:")
pwd2 = input("please confirm your password:")
if pwd != pwd2 or pwd.strip()=="" or pwd2.strip()=="":
print("两次输入密码需保持一致且密码不能为空!")
else:
f.write(username+','+ pwd+'\n')
elif choice == '2':
deluser = input("please input the name you want to delete:")
if deluser in allUser:
print("==========")
#找到该用户所在的行数
lineNum=allUser.index(deluser)
print("Linenum:"+str(lineNum))
f.seek(0)
lines = f.readlines()
lines[lineNum] ="" #删除文件中该行内容
print(lines)
with open("register.txt","w") as f1:
for line in lines:
f1.write(line)
else:
print("该用户不存在!")
elif choice == '3':
user = input("please input your name:")
passwd = input("please input your password:")
print("登录成功")
else:
print("输入有误!")
总结:
1.
uname = str(user).split(',')[0] #从文件中取int("username:"+uname)
因为文件中每行读出的内容是个list,同时包含用户名和密码,所以首先需要把用户名单独取出来,放到一个list中,以备后面使用
2.
lineNum=allUser.index(deluser)
删除用户时,需要找到该用户所在的行数,从文件中删除该行。因为username存在一个list中,且是按照读取的顺序存下来的,所以找到usernam在allUser这个list中的位置,即是找到该username在文件中所在的行数
3.
f.seek(0)
lines = f.readlines()
lines[lineNum] ="" #删除文件中该行内容
print(lines)
with open("register.txt","w") as f1:
for line in lines:
f1.write(line)
删除改行,需要将改行的内容变为空,同时将删除该行内容后的lines重新写入文本中。若没有重新写入,显示的仍是原来的文本。
python 3 - 写一个注册的程序,账号和密码都存在文件里面的更多相关文章
- python学习(10)字典学习,写一个三级菜单程序
学习了字典的应用.按老师的要求写一个三级菜单程序. 三级菜单程序需求如下: 1.深圳市的区--街道--社区---小区4级 2.建立一个字典,把各级区域都装进字典里 3.用户可以从1级进入2级再进入3级 ...
- python 怎么启动一个外部命令程序, 并且不阻塞当前进程
http://www.myexception.cn/perl-python/1278887.html http://blog.chinaunix.net/uid-25979788-id-3081912 ...
- 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度。 2)输出字符串中第一个出现字母a的位置。 3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。 4)将字符串“hello”替换为“me”,输出新字符串。 5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。 */
namespace test4 {/* 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度. 2)输出字符串中第一个出现字母a的位置. 3)在字符串的第3个字符 ...
- python 3 - 写一个自动生成密码文件的程序
1.你输入几,文件里面就给你产生多少条密码 2.密码必须包括,大写字母.小写字母.数字.特殊字符 3.密码不能重复 4.密码都是随机产生的 5.密码长度6-11 import string,rando ...
- 手把手教你写一个RN小程序!
时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...
- 利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已 ...
- 用javaweb写一个注册界面,并将数据保存到后台数据库(全部完成)(课堂测试)
一.题目:WEB界面链接数据库 1.考试要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母. ...
- [C#学习笔记1]用csc.exe和记事本写一个C#应用程序
csc.exe是C#的命令行编译器(CSharpCompiler),可以编译C#源程序成可执行程序.它与Visual Studio等IDE(Integrated Development Environ ...
- 个人如何免费申请一个微信小程序账号进行开发尝鲜
大家都知道微信小程序并没有开放个人申请注册账号,觉得很遗憾,作为一个开发者,居然不能一览究竟. 前段时间研究了一番,教大家如何个人申请注册一个小程序账号,不花300块钱,当然只能作为开发尝鲜,不能发布 ...
随机推荐
- 日文符号“・”插入sql-server2005乱码问题
错误:日文符号"・"插入sql-server2005符号.出现乱码 原因:DB字段设为varchar.DB文字编码为"Chinese_PRC_CI_AS" 相应 ...
- ID3算法Java实现
ID3算法java实现 1 ID3算法概述 1.1 信息熵 熵是无序性(或不确定性)的度量指标.假如事件A的全概率划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,...,pn).那 ...
- Node.js学习笔记(6)——使用Express创建一个工程
前提是搭建好了环境,node,npm,express:(推荐全局安装) 开始用express创建一个基础工程: express –t ejs microblog 进入文件夹之后 npm-install ...
- template.js文档
参见GitHub:https://github.com/yanhaijing/template.js/ template.js简介: template.js 一款javascript模板引擎,简单,好 ...
- Leetcode Array 16 3Sum Closest
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...
- IOS 网络解析
网络解析同步异步 /*------------------------get同步-------------------------------------*/ - (IBAction)GET_TB:( ...
- TPM:dTPM(硬件)和fTPM(固件模拟的软件模块)
转:Bitlocker.TPM和系统安全 自从微软在Windows Vista首次引入Bitlocker以来,它已经越来越多的出现在我们的周围.尤其是企业用户,Bitlocker的保护已经变得不可缺少 ...
- sudo apt-get update 没有公钥,无法验证下列签名
在更新系统源后,输入sudo apt-get update之后出现提示: W: GPG 错误:http://archive.ubuntukylin.com:10006 xenial InRelease ...
- Angular 一些问题(跨域,后台接收不到参数)
1,跨域:跟前端没多大关系的,后台没设置头而已.这时候如果你们后端太菜你可以叫他加上每种语言 都不同,但是里面的呢荣是一样的.具体跨域可以跳转这里http://www.cnblogs.com/dojo ...
- iOS打包(ipa包)
1.打开XCode打开project文件.选择Product,再点击Archive. 2.鼠标右键点击Shoe In Finder 3.鼠标右键选择"显示包内容" 4.鼠标左键双击 ...