python从入门到实践第三版练习题10-13

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 导致 程序本身被覆盖,导致无法输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值