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 - 写一个注册的程序,账号和密码都存在文件里面的更多相关文章

  1. python学习(10)字典学习,写一个三级菜单程序

    学习了字典的应用.按老师的要求写一个三级菜单程序. 三级菜单程序需求如下: 1.深圳市的区--街道--社区---小区4级 2.建立一个字典,把各级区域都装进字典里 3.用户可以从1级进入2级再进入3级 ...

  2. python 怎么启动一个外部命令程序, 并且不阻塞当前进程

    http://www.myexception.cn/perl-python/1278887.html http://blog.chinaunix.net/uid-25979788-id-3081912 ...

  3. 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度。 2)输出字符串中第一个出现字母a的位置。 3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。 4)将字符串“hello”替换为“me”,输出新字符串。 5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。 */

    namespace test4 {/* 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度. 2)输出字符串中第一个出现字母a的位置. 3)在字符串的第3个字符 ...

  4. python 3 - 写一个自动生成密码文件的程序

    1.你输入几,文件里面就给你产生多少条密码 2.密码必须包括,大写字母.小写字母.数字.特殊字符 3.密码不能重复 4.密码都是随机产生的 5.密码长度6-11 import string,rando ...

  5. 手把手教你写一个RN小程序!

    时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...

  6. 利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已 ...

  7. 用javaweb写一个注册界面,并将数据保存到后台数据库(全部完成)(课堂测试)

    一.题目:WEB界面链接数据库 1.考试要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母. ...

  8. [C#学习笔记1]用csc.exe和记事本写一个C#应用程序

    csc.exe是C#的命令行编译器(CSharpCompiler),可以编译C#源程序成可执行程序.它与Visual Studio等IDE(Integrated Development Environ ...

  9. 个人如何免费申请一个微信小程序账号进行开发尝鲜

    大家都知道微信小程序并没有开放个人申请注册账号,觉得很遗憾,作为一个开发者,居然不能一览究竟. 前段时间研究了一番,教大家如何个人申请注册一个小程序账号,不花300块钱,当然只能作为开发尝鲜,不能发布 ...

随机推荐

  1. 如何禁止同IP站点查询和同IP站点查询的原理分析 Robots.txt屏蔽BINGBOT

    很多站长工具中都有“同IP站点查询”.“IP反查域名”这种服务不少人都不知道是什么原理,其实这些服务几乎都是用BING(以前的LIVE)来实现 的,BING有个特别功能 BING抓取页面时会把站点的I ...

  2. VS2010编译OpenSSL(两个版本)

    第一个版本: 编译工具 VS2010 OpenSSL版本 openssl-1.0.0a 下载 OpenSSL http://www.openssl.org/ 下载 from http://www.ac ...

  3. Java 嵌套类和内部类演示样例<二>

    嵌套类(nested class)是一个在还有一个类或接口内部声明的类. 嵌套类分为两种:静态内部类(static inner class)和非静态嵌套类(non-static nested clas ...

  4. hdu1081 最大子矩阵

    最大子矩阵自然直在最大连续子序列的升级版  只是其原理都是用到了动态规划思想     仅仅是矩阵用到了枚举 +合并       把非常多列看成是一列的和 #include<stdio.h> ...

  5. 【7.1.1】ELK集群搭建 之 ES集群

    写在前边 昨天晚上就已经完成这篇博客了,就是在测试这块是否正常跑起来,晚上没搞完,上班前把电脑关机带着,结果没保存!基本上昨天写的东西都丢了,好在博客园的图片url还在. 为了让大家都轻松些,我轻松写 ...

  6. java中异或加密

    static String simple_xor(String base_data, String encrypt_key) throws UnsupportedEncodingException { ...

  7. SpringBoot学习——运行原理学习及自定义Starter pom

    例如:pom文件 导入redis jar包 springboot怎么识别和集成? https://blog.csdn.net/flygoa/article/details/68484439 https ...

  8. 目标检测之行人检测(Pedestrian Detection)基于hog(梯度方向直方图)--- 梯度直方图特征行人检测、人流检测2

    本文主要介绍下opencv中怎样使用hog算法,因为在opencv中已经集成了hog这个类.其实使用起来是很简单的,从后面的代码就可以看出来.本文参考的资料为opencv自带的sample. 关于op ...

  9. 基于Darwin实现的分布式流媒体直播服务器系统

    各位EasyDarwin开源项目的爱好者,您好,这篇博客的年限有点老了,目前EasyDarwin已经采用全新的云平台架构,详细可以参考博客:http://blog.csdn.net/xiejiashu ...

  10. mongo-connector导入数据到Es

    要求 基于mongo-connector同步数据,必须要求mongodb为复制集架构,原因是此插件是基于oplog操作记录进行数据同步的:而oplog可以说是Mongodb Replication的纽 ...