如何设置动态变量名?解决体重记录与7天均值计算的变量命名问题
动态体重变量命名与7天平均值计算方案
一、动态变量名的处理思路
直接创建形如NameOfVariable_[XdaysFromToday]的动态变量并不是最优方案——这类变量可读性差、调试困难,还容易引发命名冲突。更合理的做法是用字典或列表来存储体重数据,通过键值对/索引对应天数,既满足动态关联日期的需求,又便于维护和操作。
如果因特殊场景必须使用动态命名的变量,以下以Python为例说明实现方式:
- 利用
globals()或locals()全局/局部命名空间字典,动态添加变量。比如创建weight_0(今日)、weight_-1(昨日)这类变量:
# 动态生成变量 globals()["weight_0"] = 80 globals()["weight_-1"] = 79 globals()["weight_-2"] = 78.5 # ... 依次创建到weight_-6
但再次强调:这种方式不推荐,仅作为特殊场景的备选方案。
二、7天体重平均值计算实现
推荐方案:用字典存储数据
用字典的键对应天数(0代表今日,-1代表昨日,以此类推到-6),值存储对应体重,既清晰又便于每日更新:
# 初始化7天体重数据 weight_data = { 0: 80, # 今日 -1: 79, -2: 78.5, -3: 78.2, -4: 78.8, -5: 77.9, -6: 78 } # 计算最近7天平均值 total = sum(weight_data.values()) average_weight = total / len(weight_data) print(f"最近7天平均体重:{average_weight:.2f}kg")
每日更新数据的逻辑
次日更新时,只需将原有数据的天数标识统一减1,移除超过6天前的数据(原-6),再添加当日新体重:
# 生成新的体重记录字典 updated_weight = {} for day, weight in weight_data.items(): if day > -6: # 保留原0~-5,转为新的-1~-6 updated_weight[day - 1] = weight # 新增今日体重(示例值) today_new_weight = 79.5 updated_weight[0] = today_new_weight # 更新为最新数据 weight_data = updated_weight
备选方案:用列表存储数据
如果不需要明确的天数标识,也可以用列表按「今日→6天前」的顺序存储,索引0对应今日,索引6对应6天前:
# 初始化列表,顺序为今日、昨日...6天前 weight_list = [80, 79, 78.5, 78.2, 78.8, 77.9, 78] # 计算平均值 average_weight = sum(weight_list) / len(weight_list) # 每日更新:移除最旧的元素(6天前),在头部插入今日新体重 today_new_weight = 79.5 weight_list.pop() weight_list.insert(0, today_new_weight)
内容的提问来源于stack exchange,提问作者dm18
相关产品推荐
相关产品推荐

