Python学習心得:辞書インデックスの適用+入力エラー値再入力サイクル最適化+終了関数のreturnとexit()の違いについて

2679 ワード

今日はこんなに長いコードを書くのは初めて(自分にとっては・・・)、多くの問題が反映されていますが、収益もたくさんあります.
注意すべき点
干すのは自分の向上のためであり、縁鳥(縁のある同鳥(同じ菜鳥の大触たち))のためでもある.

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()