【发布时间】:2018-08-05 10:44:50
【问题描述】:
我做了一个简单的练习,它会询问用户他们的姓名和最喜欢的号码并将它们存储在字典中。我使用 json 以便每次运行代码时都可以访问数据。该程序将询问用户的姓名并返回他们最喜欢的号码或询问他们最喜欢的号码。它还会询问返回的数字是否正确。
问题: 当我多次运行程序并添加或修改一些值时,之前的所有值都会被删除。
例如,我第一次运行后,.json 文件有
{'alice':'8', 'bob':'7'}在里面。然后我退出了这个程序。当我再次运行它时,我仍然可以访问 Alice 和 Bob 最喜欢的号码。但是,如果我尝试添加另一个人喜欢的号码,Alice 和 Bob 将被删除。如果我尝试更改 Bob 最喜欢的号码,Alice 将被删除。
之后的任何其他更改都不会导致更多不需要的更改。
感谢帮助我的人。
import json
fav_nums = {}
filename = 'fav_number.json'
def user_in_dict(n):
#check if the user had given a response before#
with open(filename, 'r') as f_obj:
fav_nums = json.load(f_obj)
if n in fav_nums:
return True
else:
return False
def return_fav_num():
#return their favourite number and ask if it's correct#
with open(filename, 'r') as f_obj:
fav_nums = json.load(f_obj)
print('Is your favourite number ' + fav_nums[username] + '?')
checker = input('(Y/N)\n')
if checker == 'Y':
return True
else:
return False
def add_fav_num():
#add the new key-value pair into the dictionary#
number = input("What's yout favourite number?\n")
fav_nums[username] = number
with open(filename, 'w') as f_obj:
json.dump(fav_nums, f_obj)
print('Thank you.\n')
while True:
username = input("What's your name? (enter 'q' to quit)\n").lower()
if username == 'q':
break
else:
if user_in_dict(username):
if return_fav_num():
print('')
pass
else:
add_fav_num()
else:
add_fav_num()
【问题讨论】:
标签: python json python-3.x