Django循环内计算值总和出错,请求技术协助
问题分析与解决方案
你的问题核心在于求和变量的初始化位置错误——你把getsum = 0放在了循环体内部,导致每次循环都会将getsum重置为0,自然只能得到当前循环的单个值,而非累计总和。
修正后的基础代码
把getsum = 0移到循环外部,让它仅初始化一次,再在循环内持续累加:
getsum = 0 # 初始化放在循环外,只执行一次 for index in range(len(json_objects)): bill_value = json_objects[index]['fields']['bill'] getsum += float(bill_value) print(getsum) # 循环结束后统一打印总和,而非每次循环都输出
更简洁的Pythonic写法(推荐)
利用Python内置的sum()函数结合生成器表达式,代码更简洁易读,还能避免索引遍历的冗余:
getsum = sum(float(item['fields']['bill']) for item in json_objects) print(getsum)
额外注意事项
- 避免用
sum作为变量名,它是Python内置函数,会覆盖原有功能,可能引发隐性bug; - 如果
bill字段存在非字符串、空值等异常情况,建议添加异常处理逻辑,比如:getsum = 0 for item in json_objects: try: getsum += float(item['fields']['bill']) except (KeyError, ValueError): # 处理字段不存在或无法转换为浮点数的情况 print(f"无效的账单数据: {item}") print(getsum)
内容的提问来源于stack exchange,提问作者Himani
相关产品推荐
相关产品推荐

