Python基于if-else条件根据平均值改变数字颜色问题求助
问题分析与修复:根据整体平均值设置数字颜色
你的代码有两个核心问题导致颜色“随机变化”:
- 实时计算临时平均值而非最终整体平均值:你在每生成一个数字后就立刻计算当前列表的平均值并判断颜色,这个平均值是逐步累加的临时值,不是10个数字的最终平均,每个数字的判断依据都不一样。
- 平均值计算逻辑错误:
max_student = max(1, i)的写法有问题,i从0开始,当i=1(第二个数字)时,max_student是1,此时sum是前两个数的和,除以1得到的是总和而非平均值,直接导致前几个数字的判断完全偏离预期。
修复后的代码
import random from termcolor import cprint my_list = [] # 先生成所有10个随机数字 for _ in range(10): numbers = random.randint(1, 10) my_list.append(numbers) # 计算10个数字的整体平均值 total_sum = sum(my_list) average = total_sum / len(my_list) # 根据整体平均值逐个设置数字颜色 for num in my_list: if num <= average: cprint(num, "green") else: cprint(num, "red") print("这是平均值:", round(average, 2))
关键改动说明
- 把数字生成、计算整体平均、颜色判断拆成三个独立步骤,确保所有数字都用同一个最终平均值作为判断标准。
- 用
len(my_list)代替错误的max_student,保证平均值计算准确(列表长度就是数字的总个数)。 - 简化循环变量为
_(不需要索引时用下划线表示占位),代码更简洁清晰。
内容的提问来源于stack exchange,提问作者ander san josé
相关产品推荐
相关产品推荐

