Python的简单登陆验证

基于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

这里的代码没有经过整合提取,看起来很长,但是理解起来还是比较容易的,好了写到这里,一个基本的注册登录功能就做好了,当然这里也可以通过数据库来对账号密码来进行操作,密码其实可以加上加密的功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值