Python字典价格求和:根据可选日期与用户输入计算总费用及可用日期
代码报错问题修复方案
错误原因
json.dumps是将Python对象序列化为JSON字符串的方法,你的需求是把输入的JSON格式字符串反序列化为Python字典,应该使用json.loads,两者用法完全搞反。- 函数内部错误使用了全局的原始输入字符串
a做成员判断和取值,输入的a是字符串类型,无法用字符串作为索引取值,因此触发suma += a[dia]的类型报错。 - 函数仅返回了可用日期列表,没有返回计算好的总费用,调用后也没有打印输出逻辑,无法得到预期结果。
修复后代码
import json # 读取输入的JSON格式价格映射,转成Python字典 a = input("") b = input().split(' ') # 用loads将字符串转为字典,替换原来错误的dumps dic = json.loads(a) def citas(dic, b): citas_disponibles = [] suma = 0 for dia in b: # 改为判断是否在传入的字典对象dic中,而非原始输入字符串a if dia in dic: suma += dic[dia] citas_disponibles.append(dia) # 同时返回总费用和可用日期列表 return suma, citas_disponibles # 接收返回结果并按预期格式打印 total, available_days = citas(dic, b) print(total) print(' '.join(available_days))
运行验证
输入第一行传入{"g": 109192, "e": 116374, "o": 183368, "s": 162719},第二行传入g n e k s,输出完全符合预期。
内容的提问来源于stack exchange,提问作者pasg24
相关产品推荐
相关产品推荐

