Python入門——簡單明瞭的實現:用戶註冊及登陸

    考慮到看這個代碼的人羣多是一些入門的新手同窗作一些練習,因此決定多加一些註釋python


    以前的代碼有bug,sry, 就是無論選擇哪一個都是:showmenu()—>newuser()—>olduser()    改了一點,邏輯順了數據庫

#coding:utf-8


'''
    @version:Python 2.7.14
    這個程序管理用於登陸系統的用戶信息:登陸名字和密碼。登陸用戶賬號創建後,已存在用戶
    能夠用登陸名字和密碼重返系統。新用戶不能用別人的登陸名創建用戶賬號。
'''

# 這裏建立的db字典就是爲了充當簡單的數據庫
db = {}


# 新用戶用於建立用戶名及密碼並保存到db
def newuser():
    prompt = 'login desired: '
    while True:
        # 輸入用戶名
        name = raw_input(prompt)
        # 校驗db中是否存在你輸入的用戶名
        if db.has_key(name):
            prompt = 'name taken, try another: '
            continue
        else:
            break
    # 輸入密碼
    pwd = raw_input('passwd: ')
    # 用戶名及密碼保存到db中
    db[name] = pwd


# 老用戶登陸
def olduser():
    name = raw_input('login: ')
    pwd = raw_input('passwd: ')
    # 取出你輸入的用戶名在db中的密碼
    passwd = db.get(name)
    # 對你輸入的密碼和db中對應存在的密碼進行對比
    if passwd == pwd:
        print 'welcome back', name
    else:
        print 'login incorrect, pls go login desired\n'
        newuser()


def showmenu():
    # 運行時出現,選擇‘n’‘e’‘q’其中一個選擇,不區分大小寫
    prompt = 
        """
        (N)ew User Login
        (E)xisting User Login
        (Q)uit
        Example 7.1 Dictionary Example (userpw.py) (continued)
        Enter choice: 
        """

    # ‘done’是個關鍵字,當爲真,循環中止
    done = False
    while not done:
        # ‘chosen’同‘done’
        chosen = False
        while not chosen:
            # 加try語句,是爲了不其餘錯誤的出現
            try:
                # 這裏就簡單了只判斷了輸入字母的第一個是否知足條件,形成了只要是以這三個字母開頭就能夠
                choice = raw_input(prompt).strip()[0].upper()
            except (EOFError, KeyboardInterrupt):
                choice = 'Q'
            print '\nYou picked: [%s]\n' % choice

            if choice not in 'NEQ':
                print 'invalid option, try again'
            elif choice == 'N':
                newuser()
                olduser()
                chosen = True
            # 這裏會由於,程序剛開始db無內容,而進入else
            elif choice == 'E':
                olduser()
            elif choice == 'Q':
                print 'bye'
                chosen = True
        if chosen:
            done = True


if __name__ == '__main__':
    showmenu()


代碼來源——《Python核心編程》

相關文章
相關標籤/搜索