You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何统计数位奇偶的Python程序中变量d总是返回326

问题排查及修复方案

根因定位

代码的核心错误出在循环内更新变量a的语句:
你使用了a = a / 10,Python3中/属于浮点除法,运算后a会变为浮点数类型。比如输入数字12,第一次运算后a会变成1.2,后续会依次变为0.12、0.012…… 由于正数做浮点除法永远得到正数,循环会一直执行,直到浮点数精度下溢变为0才终止,整个循环会固定执行326次左右,因此你得到的d值始终固定为326。

修复方案

将浮点除法替换为整数除法//即可,//会直接丢弃除法结果的小数部分,只保留整数部分,每次循环刚好移除已经处理过的最后一位数字,直到a变为0退出循环,完美匹配逐位统计的需求。
修改后的核心代码行:
a = a // 10

修复后完整代码

a=int(input("enter a number:"))
c=0
d=0
while a>0:
    b=a%10
    a=a//10
    if b%2==0:
        c=c+1
    else:
        d=d+1
print("even numbers:",c)
print("odd numbers:",d)

效果验证

输入测试用例1234:

  • 偶数位为2、4,共2个
  • 奇数位为1、3,共2个
    程序输出:
even numbers: 2
odd numbers: 2

与预期结果一致。

内容的提问来源于stack exchange,提问作者Karlo Blaskovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:06:03