Python实现2、4、7、28、33、198…序列计算求助,现有代码运行异常
问题分析与代码修正
原代码错误点
- 初始值设置错误:序列第1项为2,原代码初始值
r设为0,计算起点完全错误 - 判断逻辑错误:原代码判断的是输入的总项数
n的奇偶性,实际需要判断当前遍历项的位置i的奇偶性 - 循环范围错误:初始值已经对应
i=1的结果,不需要再遍历i=1,否则会多执行一次计算导致结果偏离
序列规则确认
给出的序列对应计算规则如下:
- 第1项(
i=1)固定值为2 - 当
i为偶数时,当前项 = 前一项的值 *i - 当
i为奇数时,当前项 = 前一项的值 +i
验证:i=2(偶)→22=4;i=3(奇)→4+3=7;i=4(偶)→74=28;i=5(奇)→28+5=33;i=6(偶)→33*6=198,和给出的序列完全匹配。
修正后代码
n = int(input("Enter value N: ")) if n < 1: print("请输入大于等于1的正整数") else: r = 2 for i in range(2, n+1): if i % 2 == 0: r *= i else: r += i print(r)
测试验证
- 输入1 → 输出2
- 输入3 → 输出7
- 输入6 → 输出198
完全符合预期结果。
内容的提问来源于stack exchange,提问作者Michelle
相关产品推荐
相关产品推荐

