基于python实现简单登陆验证功能
功能实现:登陆+注册+游戏
一、创建System的类
其中,end属性我用来判断多次登陆
class System():
def __init__(self,end):
self.end=end#避免多次使用,可以随时停止程序
二、定义主函数main方法
def main(self):
while 1:
if self.end>=3:
print("你非法操作,已经封停了你的使用,请明天再来!")
break
choice=input("请选择操作:1(注册)2(登陆)3(结束):")
得到了操作的方法为1、2、3,接下来就分别进行处理就可以了,首先完善注册的功能,才能接下来进行
if int(choice)==1:
#注册
username=input("请输入注册的用户名:")
password=input("请输入注册的密码:")
with open("info.txt",mode="a",encoding="utf-8") as f:
f.write("{}\n{}\n1000\n".format(username,password))
f.close()
print("恭喜你,注册成功!")
在while循环下面进行条件的判断,注册功能通过写入文件流来保存账号和密码
elif int(choice)==2:
#登陆
i=0
ls=[]
flag=False
money=0
j_move=0
elif int(choice==3:
print("谢谢你的使用")
break
else:
print("输入有误,请重新输入")
接下来就对2号操作进行细化,文件流操作不可少,开始把数据按行写入,那么就按照行来读出,1,2,行为账号密码,第三行为你的游戏分数,为零时不能进行游戏,循环操作对文件要根据倍数来确定位置
while i<3:
name=input("输入登陆用户名:")
paw=input("输入密码:")
with open("info.txt",mode="r",encoding="utf-8") as fd:
for line in fd:
ls.append(line)
fd.close()
for j in range(len(ls)):
if name==str(ls[j]).strip() and paw==str(ls[j+1]).strip():
flag=True
money=int(ls[j+2])
j_move=j+2
else:
j+=2
if flag:
print("登录成功!\n游戏开始了")
while 1:
choice2=input("请输入你的操作:1(猜拳)2(猜数字)3(退出):")
money=int(ls[j_move])
if int(choice2)==1:
if money>0:
money=self.finger_guess(money)
ls[j_move]=money
else:
print("你都没钱,玩个屁啊!")
elif int(choice2)==2:
if money>0:
money=self.digit_guess(money)
ls[j_move]=money
else:
print("你都没钱,玩个屁啊!")
elif int(choice2)==3:
with open("info.tap",mode="w",encoding="utf-8") as fd2:
for k in range(len(ls)):
fd2.write(str(ls[k]))
if (k+1)%3==0:
fd2.write("\n")
os.remove("info.txt")
os.rename("info.tap","info.txt")
break
else:
print("请重新输入操作,你要输入数字")
break
else:
if i==2:
print("三次机会用完了,输入结束")
self.end+=1
break
else:
print("账号或者密码错误,请重试!")
i+=1
现在只剩下游戏的方法没有定义了,在类里分别定义游戏的方法,传入参数money进行一系列操作后再返回参数,重新写入账号文件里
#猜拳的方法
def finger_guess(self,money):
ls=["石头","剪刀","布"]
while 1:
computer=random.choice(ls)
try:
stake=int(input("请输入你的赌注金额:"))
if stake>money:
print("你不能输入这么多,你没那么多钱!")
continue
user_game=int(input('''电脑已经准备好了。。。
请输入你要出的:1石头 2剪刀 3布:'''))
if ls[user_game-1]==computer:
print("你出的%s,电脑出的%s,平局!"%(ls[user_game-1],computer))
elif ls[user_game-1]=="石头":
if computer=="剪刀":
money+=stake
print("你出的是石头,电脑出的剪刀,你赢了!金币:%s"%(money))
else:
money-=stake
print("你出的是石头,电脑出的布,你输了!金币:%s"%(money))
if money<=0:
print("你已经输光了,充点钱再来吧")
break
elif ls[user_game-1]=="剪刀":
if computer=="石头":
money-=stake
print("你出的是剪刀,电脑出的石头,你输了!金币:%s"%(money))
if money<=0:
print("你已经输光了,充点钱再来吧")
break
else:
money+=stake
print("你出的是剪刀,电脑出的布,你赢了!金币:%s"%(money))
elif ls[user_game-1]=="布":
if computer=="石头":
money+=stake
print("你出的是布,电脑出的石头,你赢了!金币:%s"%(money))
else:
money-=stake
print("你出的是布,电脑出的剪刀,你输了!金币:%s"%(money))
if money<=0:
print("你已经输光了,充点钱再来吧")
break
sf=int(input("是否再来一次?y/n or 1/2:"))
if sf==1:
continue
elif sf==2:
break
else:
print("你的输入有误,默认重新来过")
except:
print("你的输入有误!")
return money
#猜数字的方法
def digit_guess(self,money):
while 1:
c_digit=random.randint(1,10)
try:
stake=int(input("请输入你的赌注金额:"))
if stake>money:
print("你不能输入这么多,你没那么多钱!")
continue
my_digit=int(input("请输入你要猜的数字(1——10):"))
if c_digit==my_digit:
print("哈哈,你真厉害,你猜对了,就是{},金币+{}".format(my_digit,stake*9))
money+=(stake*9)
else:
print("真可惜,你猜错了,真正的是{},金币-{}".format(c_digit,stake))
money-=stake
if money<=0:
print("你已经输光了,充点钱再来吧")
break
sf=int(input("是否再来一次?y/n or 1/2:"))
if sf==1:
continue
elif sf==2:
break
else:
print("你的输入有误,默认重新来过")
except:
print("你的输入有误!")
return money
这里的代码没有经过整合提取,看起来很长,但是理解起来还是比较容易的,好了写到这里,一个基本的注册登录功能就做好了,当然这里也可以通过数据库来对账号密码来进行操作,密码其实可以加上加密的功能。