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 @   茶叶蛋蛋  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示