(学习记录)《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():
	"""提示用户输入新的用户名,将其储存在文件中,并返回该名字"""
	filename = 'username.json'
	username = input("Please enter your name: ")
	with open(filename,'w') as f_obj:
		json.dump(username,f_obj)
	return username
	
def check_username():
	"""打印一条消息,让用户确认是否为自己的用户名,并返回答案"""
	username = get_stored_username()
	print("Is this your name? " + username)
	anwser = input("(yes/no) ")
	return anwser
	
def greet_user():
	"""传递一条消息,和用户打招呼"""
	username = get_stored_username()
	if username:
		anwser = check_username()
		if anwser == 'yes':
			print("Welcome back, " + username + '!')
		elif anwser == 'no':
			username = get_new_username()
			print("I'll remember you when you come back, " + 
				username + '!')
	else:
		username = get_new_username()
		print("I'll remember you when you come back, " + 
			username + '!')
		

greet_user()

思考:能否将首次运行用户和新用户合并到同一处理方式中?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值