zoukankan      html  css  js  c++  java
  • Python中如何将数据存储为json格式的文件(续)

    将上一篇中的例子,修改一下,将两个程序合二为一,如果存储了用户喜欢的水果就显示它,否则提示用户输入他喜欢的水果并将其存储到文件中。

    favorite.py

     1 import json
     2 
     3 filename = "favorite_fruit.json"
     4 
     5 def greet_user():
     6     """问候用户,并指出他喜欢的水果"""
     7     fruit = get_saved_fruit()
     8     if fruit:
     9         print("I know your favorite fruit !  It's " + fruit)
    10     else:
    11         fruit = save_user_new_fruit()
    12         print("I know your favorite fruit !  It's " + fruit)
    13 
    14 
    15     
    16 
    17 def save_user_new_fruit():
    18     """提示用户输入喜欢的水果"""
    19     fruit = input(" What is your favorite fruit ? ")
    20     with open(filename,'w') as  file_obj:
    21         json.dump(file_obj,fruit)
    22     return fruit
    23 
    24 def get_saved_fruit():
    25     """如果存储了用户喜欢的水果,就获取它"""
    26     try :
    27         with open(filename) as  file_obj:
    28             fruit = json.load(file_obj)
    29     except FileNotFoundError:
    30         return None
    31     else:
    32         return fruit
    33         
    34 greet_user()

    解释:在优化代码过后,每个函数只需要执行单一任务,这更符合程序的设计

    第一次运行程序后的控制台如下:

    如果我们是第一次运行,如下图

    会让用户先输入最喜欢的水果然后回应用户他最喜欢的水果。

    而之后的运行,则如图:

    因为程序在第一次运行之后已经将用户喜欢的水果存入了json文件。

    所以不会提示用户输入。

  • 相关阅读:
    [leetcode] 18. 四数之和
    [leetcode] 17. 电话号码的字母组合
    [leetcode] 16. 最接近的三数之和
    [leetcode] 15. 三数之和
    [leetcode] 14. 最长公共前缀
    [leetcode] 13. 罗马数字转整数
    [leetcode] 12. 整数转罗马数字
    [leetcode] 11.盛最多水的容器
    分布式系统中的缓存——笔记整理
    图解HTTP
  • 原文地址:https://www.cnblogs.com/tizer/p/11070173.html
Copyright © 2011-2022 走看看