Python學習筆記之json.dump和json.load


10-11 喜歡的數字:編寫一個程序,提示用戶輸入他喜歡的數字,並使用json.dump()將這個數字存儲到文件中。再編寫一個程序,從文件中讀取這個值,並打印消息“I know your favorite number! It’s _____.”。

favorite_number.py

 1 import json
 2 
 3 def favorite_number():
 4     """提示用戶輸入喜歡的數字"""
 5     filename = 'favorite_number.json'
 6     number = input("請輸入你喜歡的數字:")
 7     with open(filename, 'w') as f_obj:
 8         json.dump(number, f_obj)
 9 
10 favorite_number()
get_favorite_number.py
 1 import json
 2 
 3 def get_favorite_number():
 4     """獲取文件內容"""
 5     filename = 'favorite_number.json'
 6     with open(filename) as f_obj:
 7         get_number = json.load(f_obj)
 8 
 9     print("I know your favorite number! It’s " + str(get_number) + ".")
10 
11 get_favorite_number()

 

10-12 記住喜歡的數字:將練習10-11 中的兩個程序合而為一。如果存儲了用戶喜歡的數字,就向用戶顯示它,否則提示用戶輸入他喜歡的數字並將其存儲到文件中。運行這個程序兩次,看看它是否像預期的那樣工作。

 1 import json
 2 
 3 def get_stored_number():
 4     filename = 'favorite_number.json'
 5     try:
 6         with open(filename) as f_obj:
 7             number = json.load(f_obj)
 8     except FileNotFoundError:
 9         return None
10     else:
11         return number
12 
13 def favorite_number():
14     """提示用戶輸入喜歡的數字"""
15     filename = 'favorite_number.json'
16     number = input("請輸入你喜歡的數字:")
17     with open(filename, 'w') as f_obj:
18         json.dump(number, f_obj)
19     return number
20 
21 
22 def get_favorite_number():
23     """獲取文件內容"""
24     # filename = 'favorite_number.json'
25     # with open(filename) as f_obj:
26     #     get_number = json.load(f_obj)
27     number = get_stored_number()
28     if number:
29         print("I know your favorite number! It’s " + str(number) + ".")
30     else:
31         number = favorite_number()
32         print("I know your favorite number! It’s " + str(number) + ".")
33 
34 get_favorite_number()

 

10-13 驗證用戶:最后一個remember_me.py 版本假設用戶要么已輸入其用戶名,要么是首次運行該程序。我們應修改這個程序,以應對這樣的情形:當前和最后一次運行該程序的用戶並非同一個人。

為此,在greet_user()中打印歡迎用戶回來的消息前,先詢問他用戶名是否是對的。如果不對,就調用get_new_username()讓用戶輸入正確的用戶名。

原remember_me.py代碼

 1 import json
 2 
 3 def get_stored_username():
 4     """如果存儲了用戶名,就獲取它"""
 5     filename = 'username.json'
 6     try:
 7         with open(filename) as f_obj:
 8             username = json.load(f_obj)
 9     except FileNotFoundError:
10         return None
11     else:
12         return username
13 
14 def get_new_username():
15     """提示用戶輸入用戶名"""
16     username = input("What is your name? ")
17     filename = 'username.json'
18     with open(filename, 'w') as f_obj:
19         json.dump(username, f_obj)
20     return username
21 
22 def greet_user():
23     """問候用戶,並指出其名字"""
24     username = get_stored_username()
25     if username:
26         print("Welcome come back, " + username + "!")
27     else:
28         username = get_new_username()
29         print("We will remember you when you come back, " + username + "!")
30 
31 greet_user()

修改之后remember_me.py代碼

 1 import json
 2 
 3 def get_stored_username():
 4     """如果存儲了用戶名,就獲取它"""
 5     filename = 'username.json'
 6     try:
 7         with open(filename) as f_obj:
 8             username = json.load(f_obj)
 9     except FileNotFoundError:
10         return None
11     else:
12         return username
13 
14 def get_new_username():
15     """提示用戶輸入用戶名"""
16     username = input("What is your name? ")
17     filename = 'username.json'
18     with open(filename, 'w') as f_obj:
19         json.dump(username, f_obj)
20     return username
21 
22 def greet_user():
23     """問候用戶,並指出其名字"""
24     username = get_stored_username()
25     if username:
26         msg = "Are you " + username + "? (y/n) " 27 correct = input(msg) 28 if correct == 'y': 29 print("Welcome come back, " + username + "!") 30 else: 31 username = get_new_username() 32 print("We will remember you when you come back, " + username + "!") 33 
34     else:
35         username = get_new_username()
36         print("We will remember you when you come back, " + username + "!")
37 
38 greet_user()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM