Python学习心得: 关于字典索引的应用 + 输入错误值重新输入循环优化 + 退出函数之return和exit()的区别

今天第一次写这么长的代码(对于自己来说。。。),反映出很多问题,但又有很多收益。

应该注意的地方

晒出来为了自己的提高,也为了缘鸟(有缘分的同鸟鸟(同为菜鸟的大触们))。


userDATA = {'曲曲': '123123'}

def new2build():
    name = input('请输入新建用户姓名: ')
    if name in userDATA:
        while 1:
            name2 = input('您所输入用户名已经被注册了,请重新输入: ')
            if name2 in userDATA:
                continue
            else:
                key2 = input('请输入密码: ')
                userDATA[name2] = key2
                print('注册成功!')
                break
    else:
        key = input('请输入密码: ')
        userDATA[name] = key
        print('注册成功!')

def reg2sys():
    regname = input('请输入用户名: ')
    if regname in userDATA:
        regkey = input('请输入密码: ')
        if regkey == userDATA.get(regname):  #注意这里要用.get 而不是.values
            print('登陆成功!')

        else:
            while 1:
                regkey4 = input('您输入的密码有误,请重新输入: ')
                if regkey4 == userDATA.get(regname):
                    print('登录成功!')
                    exit() #这里不能用return, 因为return只能退出当前函数, 又会重新执行sysmenu()函数!!!
                else:
                    continue
    else:
        regname2 = input('您输入的用户名不存在请重新输入: ')
        while 1:
            if regname2 in userDATA:
                regkey2 = input('请输入密码: ')
                if regkey2 == userDATA.get(regname2):
                    print('登录成功!')
                    exit()
                else:
                    while 1:
                        regkey3 = input('您输入的密码有误,请重新输入: ')
                        if regkey3 == userDATA.get(regname2):
                            print('登录成功!')
                            exit()
                        else:
                            continue


            else:
                regname2 = input('您输入的用户名不存在请重新输入: ')
                continue

def sysmenu():   #前两次搞复杂了,不用输入错误后,重新输入并赋值,直接打印然后重新执行该函数就行!!!!!!!
    prompt = (
'''--- 新建用户: N/n ---
--- 登录账号: E/e ---
--- 退出程序: Q/q ---
--- 请输入指令代码: ''')
    while True:
        chosen = False
        while not chosen:
            choice = input(prompt)
            if choice not in 'NnEeQq':
                print('您所输入的代码有误,请重新输入: ')
            else:
                chosen = True

        if choice == 'q' or choice == 'Q':
            return #也可以用 exit() 直接退出程序
        if choice == 'n' or choice == 'N':
            new2build()
        if choice == 'e' or choice == 'E':
            reg2sys()

sysmenu()


 

你可能感兴趣的:(python)