ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

一个简单的注册、登录程序

2020-08-07 10:02:20  阅读:238  来源: 互联网

标签:__ 登录 self 程序 item lst 注册 input 输入


#一个简单的注册。登录程序。已实现反射,用户只需要输入数字即可选择功能。可保留注册信息。定义了一个只有退出功能的函数。
class User:
def __init__(self, name, pwd):
self.name = name
self.pwd = pwd
class Authentic:
def __init__(self):
self.userFile = "user.txt"
def user_exist(self): #将保存用户名密码的文件打开,信息保存在生成器里,便于后面使用:
# 1.注册时验证是否有同名的。2.登录时验证用户名、密码。不需要传参。
with open(self.userFile,"r",encoding="utf-8") as f:
for line in f:
line = line.strip()
line_new = line.split("#")
yield line_new
def register(self): #注册功能
while True:
username=input('请输入用户名:')
for lst in list(self.user_exist()):
if lst[0]== username:
print('已有同名的,请重新输入!')
return #如果输入错误,就要退出重新选择。如何只返回到
#“username=input('请输入用户名:')”这一行呢?
password=input('请输入密码:')
password2=input('请确认密码:')
if password==password2:
user=User(username,password)
with open(self.userFile,"a",encoding="utf-8")as f:
temp = "\n" + username + "#" + password
#'\n'解决存入时不换行的问题。但有个缺点,txt文件的第一行总是空行。
f.write(temp)
print('注册成功,请转人登录界面。')
return False
else:
print('你两次输入的密码不一致,请重新输入!')
def login(self):
username=input('请输入用户名:')
pwd=input('请输入密码:')
for lst in list(self.user_exist()):
if lst[0]== username and lst[1]==pwd:
print('登录成功!')
break
else:
print('用户名或密码错误,请检查后重新输入!')
def ex(self): #定义了只有退出功能的函数,用户只需输入'3',即可退出。
exit() #函数名不能是exit。
def run(self):
opt_lst= [['登录','login'],['注册','register'],['退出','ex']]
#解决了中文字符串与对应的函数名称不一致的问题。
while True:
for index,item in enumerate(opt_lst,1):
#给列表设置索引,便于用户输入数字。
print(index,item[0],item[1])
num = int(input('请输入您要操作的序号 :').strip())
for index,item in enumerate(opt_lst,1):
if num==index:
if hasattr(obj,item[1]): #此处必须反射对象(obj)中的函数。
if getattr(obj,item[1]):
getattr(obj,item[1])()
if __name__ == '__main__':
obj = Authentic()
obj.run()

标签:__,登录,self,程序,item,lst,注册,input,输入
来源: https://www.cnblogs.com/qqq789001/p/13450917.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有