from pathlib import Path
import json
def get_stored_username(path):
'''如果储存了用户名,就获取他'''
if path.exists(): # 检查文件是否存在
contents = path.read_text() # 读取文件内容
user = json.loads(contents) # 把JSON格式的内容转换成字典
return user # 返回字典
else:
return None # 如果文件不存在,返回None
def get_new_username(path, user):
'''提供名字'''
username = input("what is your name?") # 获取用户输入的名字
user['name'] = username # 把用户名作为键值对存储在字典中
contents = json.dumps(user) # 把字典转换成JSON格式
path.write_text(contents) # 把JSON格式的内容写入文件
return user # 返回字典
def get_new_shengri(path, user):
'''提供生日'''
shengri = input("what is your shengri?") # 获取用户输入的生日
user['shengri'] = shengri # 把生日作为键值对存储在字典中
contents = json.dumps(user) # 把字典转换成JSON格式
path.write_text(contents) # 把JSON格式的内容写入文件
return user # 返回字典
def get_new_didian(path, user):
'''提供地点'''
didian = input("what is your didian?") # 获取用户输入的地点
user['didian'] = didian # 把地点作为键值对存储在字典中
contents = json.dumps(user) # 把字典转换成JSON格式
path.write_text(contents) # 把JSON格式的内容写入文件
return user # 返回字典
def greeet_user():
"""主程序,问候用户"""
path = Path('username3.json') # 定义路径
user = get_stored_username(path) # 把路径作为参数传递给函数
if user: # 如果获取到了用户信息
print(f"你好啊,{user['name']}") # 打印问候语和用户名
print(f"你的生日是{user['shengri']}") # 打印生日信息
print(f"你的地点在{user['didian']}") # 打印地点信息
else: # 如果没有获取到用户信息
user={} # 创建一个空字典
user = get_new_username(path, user) # 把路径和字典作为参数传递给函数,并获取用户名
user = get_new_shengri(path, user) # 把路径和字典作为参数传递给函数,并获取生日
user = get_new_didian(path, user) # 把路径和字典作为参数传递给函数,并获取地点
print(f"你回来时,我还记得你,{user['name']}") # 打印欢迎语和用户名
greeet_user() # 调用主程序函数
自己写了很久都还是没法运行,于是去请教了bing,发现问题出在,返回字典上,
之前因为没写return user 导致 程序本身被覆盖,导致无法输出。