鱼C论坛

 找回密码
 立即注册
查看: 1974|回复: 4

小白求助,密码调用的递归,不输入正确密码能一直输密码

[复制链接]
发表于 2020-2-11 20:53:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def xingming(name):
    if dict1.get(name) == None:
        mima = str(input("请输入密码:"))
        dict1.setdefault(name, mima)
        print("注册成功,赶紧试试登录吧")
    else:
        name = str(input("此用户名已经被使用,请重新输入:"))
        xingming(name)

def getname(name):
    if dict1.get(name) != None:
        mima = str(input("请输入密码:"))
        def core(mima):
            global number  #这边想用一个全局变量做计数器但是貌似没有效果
            number=3     #
            number -= 1  #
            if mima !=dict1.get(name):
                if number == 0:
                    print("机会已经用完24小时内此账户不能使用!!")
                else:
                    print("密码错误,请重新输入密码:(还有",number,"次机会)")#这边一直print还有两次机会,全局变量计数器貌似没有生效
                    mima =str(input())
                    core(mima)
            else:
                print("恭喜你登录成功!")

        core(mima)
    elif name == 'q' :
        return
    else:
        name=input("用户输入错误,请重新输入!!")
        getname(name)


def join():
    print("|---新建用户:n/N---|")
    print("|---登录账户:e/E---|")
    print("|---退出程序:q/Q---|")
    s=str(input("|---请输入指令代码:"))
    if s.casefold() =='n':
        name = str(input("请输入用户名:"))
        xingming(name)
        join()
    elif s.casefold() == 'e':
        name = str(input("请输入用户名:"))
        getname(name)
        join()
    elif s.casefold() == 'q':
        return 1
    else:
        print("请根据提示输入正确的指令代码!!")
        join()
dict1={}
join()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-11 21:31:58 | 显示全部楼层
本帖最后由 Handsome_zhou 于 2020-2-11 21:35 编辑

你看看这样行不行?
def xingming(name):
    while 1 :
        if dict1.get(name) == None:
            mima = str(input("请输入密码:"))
            dict1.setdefault(name, mima)
            print("注册成功,赶紧试试登录吧")
            break
        else:
            name = str(input("此用户名已经被使用,请重新输入:"))
            xingming(name)


逻辑是这样的,但是你定义的这个函数里面怎么会调用它自己呢?最后一行是不是写错了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 21:37:35 | 显示全部楼层
密码调用不可能用递归实现,就算可以那也是萨比的做法。
再想想屏你对递归的了解,你觉得现实吗?
老老实实用循环不好?循环本身很多时候都比递归效率高,递归只有在必不得已的情况下使用的方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 17:48:15 | 显示全部楼层
ba21 发表于 2020-2-11 21:37
密码调用不可能用递归实现,就算可以那也是萨比的做法。
再想想屏你对递归的了解,你觉得现实吗?
老老实 ...

刚学完递归,眼里就只剩递归了,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 17:49:52 | 显示全部楼层
Handsome_zhou 发表于 2020-2-11 21:31
你看看这样行不行?
def xingming(name):
    while 1 :

因为前面写的都在函数里面,最后一行必须调用总函数,不然没有输出的,我试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-22 10:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表