Python 练习10-13:验证用户

练习10-13:验证用户

最后一个remember_me.py版本假设用户要么已输入用户名,要么是首次运行该程序。我们应该修改这个程序,以防当前用户并非上次运行该程序的用户。
为此,在greet_user()中打印欢迎用户回来的消息前,询问他用户名是否正确。如果不对,就调用get_new_username()让用户输入正确的用户名。

 

import json


def get_stored_username():
    """获取存储的用户名——如果存储了。"""
    filename = 'username.json'
    try:
        with open(filename) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
        return username


def get_new_username():
    """提示用户输入用户名。"""
    username = input("What is your name? ")
    filename = 'username.json'
    with open(filename, 'w') as f_obj:
        json.dump(username, f_obj)
    return username


def check_username():
    pass


def greet_user():
    """基于用户名问候用户。"""
    username = get_stored_username()
    if username:
        correct = input(f"Are you {username}? (y/n) ")
        if correct == 'y':
            print(f"Welcome back, {username}!")
            return
        else:
            username = get_new_username()
            print(f"We'll remember you when you come back, {username}!")
            return
    else:
        username = get_new_username()
    print(f"We'll remember you when you come back, {username}!")


greet_user()

 

 

如上例子在greet_user() 中,不使用嵌套,再增加一个check_username()函数:

import json


def get_stored_username():
    """获取存储的用户名——如果存储了。"""
    filename = 'username.json'
    try:
        with open(filename) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
        return username


def get_new_username():
    """提示用户输入用户名。"""
    username = input("What is your name? ")
    filename = 'username.json'
    with open(filename, 'w') as f_obj:
        json.dump(username, f_obj)
    return username


def check_username(username):
    """"检查名字是否相符"""
    username = get_stored_username()

    if username:
        correct = input(f"Are you {username}? (y/n) ")
        if correct == 'y':
            return username
    else:
        return None


def greet_user():
    """基于用户名问候用户。"""
    username = get_stored_username()

    if check_username(username):
        print(f"Welcome back, {username}!")
    else:
        username = get_new_username()
        print(f"We'll remember you when you come back, {username}!")
    

greet_user()

 

posted @ 2021-09-24 17:47  茶叶蛋蛋  阅读(193)  评论(0)    收藏  举报