如何实现随机数求和?并修正给定Python代码的奇偶求和逻辑问题
修正随机数奇偶求和代码
嘿,我帮你梳理下这段代码里的问题,然后给你一个能正常运行的版本:
原代码的几个问题
- 模块导入位置不合理:
import random放在for循环内部,每次循环都重复导入模块,完全没必要,既浪费资源也不符合代码规范,应该把导入语句放在代码最开头。 - 变量名冲突踩坑:你用
random作为存储随机数的变量名,直接覆盖了导入的random模块!第二次循环再调用random.randint()时,Python会误以为你要调用整数的randint方法,直接触发报错。 - 求和逻辑未生效:
even_numbers和odd_numbers没有初始化,而且每次赋值都是number_checker + random,但number_checker始终是0,最后输出的只是最后一个奇/偶数,根本不是所有对应数字的总和。 - 存在无用变量:
number_checker从头到尾没起到任何作用,直接删掉就行。
修正后的可运行代码
# 先导入random模块,只需要导入一次 import random # 初始化奇偶总和变量,从0开始累加 even_total = 0 odd_total = 0 # 循环10次生成随机数 for _ in range(10): # 用不会和模块冲突的变量名存储随机数 current_number = random.randint(1, 25) print(current_number) if current_number % 2 == 0: print("该数字为偶数") even_total += current_number # 偶数累加 else: print("该数字为奇数") odd_total += current_number # 奇数累加 print("\n这是偶数的总和。") print(even_total) print("\n这是奇数的总和。") print(odd_total)
简单说明
- 把
import random移到代码最顶部,这是Python导入模块的标准做法。 - 改用
current_number作为随机数的变量名,彻底避免和random模块名冲突。 - 初始化
even_total和odd_total为0,每次遇到对应奇偶的数字就用+=完成累加,这样最后得到的就是所有偶数/奇数的总和。 - 循环里用
_作为变量名,因为我们不需要用到这个循环变量的具体值,只是用来控制循环次数,这是Python里的常用小技巧。
内容的提问来源于stack exchange,提问作者Brian Mason
相关产品推荐
相关产品推荐

