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

浙公网安备 33010602011771号