代码逻辑异常:奇数未按预期乘3却输出27的问题求助
奇偶数值计算逻辑错误排查
需要实现的逻辑:输入m个数字,对每个数字做如下处理:
- 若为偶数,输出该数乘2的结果
- 若为奇数,输出该数乘3的结果
但运行以下代码后,奇数3的输出为27,不符合预期。
原代码
m = int(input()) for i in range(m): n = int(input()) n*=2 if n%2==0 else n*3 print(n)
输入示例
3 1 2 3
实际输出
3 4 27 # 不符合预期,预期应为9
问题原因
核心错误在赋值语句n*=2 if n%2==0 else n*3的逻辑:
- 偶数场景:
n *= 2等价于n = n * 2,这是正确的 - 奇数场景:
n *= n*3等价于n = n * (n*3),也就是把原数先乘3再乘自身,所以n=3时会计算为333=27,而非预期的3*3=9
修正方案
调整三元表达式,让奇数场景直接返回乘数3而非n*3,两种写法都可以:
写法一:
m = int(input()) for i in range(m): n = int(input()) n = n * 2 if n%2==0 else n * 3 print(n)
写法二(更简洁):
m = int(input()) for i in range(m): n = int(input()) n *= 2 if n%2==0 else 3 print(n)
修正后输入相同内容,输出为:
3 4 9
内容的提问来源于stack exchange,提问作者noobprogrammer
相关产品推荐
相关产品推荐

