将上一篇中的例子, 修改一下, 将两个程序合二为一, 如果存储了用户喜欢的水果就显示它, 否则提示用户输入他喜欢的水果并将其存储到文件中.
favorite.py
- import JSON
- filename = "favorite_fruit.json"
- def greet_user():
- """问候用户, 并指出他喜欢的水果"""
- fruit = get_saved_fruit()
- if fruit:
- print("I know your favorite fruit ! It's " + fruit)
- else:
- fruit = save_user_new_fruit()
- print("I know your favorite fruit ! It's " + fruit)
- def save_user_new_fruit():
- """提示用户输入喜欢的水果"""
- fruit = input("What is your favorite fruit ?")
- with open(filename,'w') as file_obj:
- JSON.dump(file_obj,fruit)
- return fruit
- def get_saved_fruit():
- """如果存储了用户喜欢的水果, 就获取它"""
- try :
- with open(filename) as file_obj:
- fruit = JSON.load(file_obj)
- except FileNotFoundError:
- return None
- else:
- return fruit
- greet_user()
解释: 在优化代码过后, 每个函数只需要执行单一任务, 这更符合程序的设计
第一次运行程序后的控制台如下:
如果我们是第一次运行, 如下图
会让用户先输入最喜欢的水果然后回应用户他最喜欢的水果.
而之后的运行, 则如图:
因为程序在第一次运行之后已经将用户喜欢的水果存入了 JSON 文件.
所以不会提示用户输入.
来源: http://www.bubuko.com/infodetail-3100720.html