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

求助:编写nondec函数判断正整数数字是否为非递减序列

问题修复方案

你的代码核心问题在于使用了浮点除法n = n/10,导致后续循环中n变为浮点数,n%10无法正确提取整数位的最后一位,进而引发错误的比较判断。比如输入222时,第二次循环会得到lastdigit=22.2%10=2.2,这个值大于前一次的prev=2,错误返回False。

修复方法很简单,将浮点除法替换为整数除法n = n // 10,确保每次循环都能正确去掉n的最后一位整数:

def nondec(n):
    '''
    >>> nondec(113355779)
    True
    >>> nondec(44569)
    True
    >>> nondec(346234)
    False
    >>> nondec(222)
    True
    >>> nondec(789)
    True
    >>> nondec(55555)
    True
    >>> nondec(1234123)
    False
    >>> nondec(98765)
    False
    '''
    prev = 9
    while n > 0 :
        lastdigit = n % 10
        if lastdigit > prev:
            return False
        prev = lastdigit
        n = n // 10  # 替换为整数除法
    return True

if __name__ == "__main__":
    import doctest
    doctest.testmod(verbose=True)

验证说明

修改后所有测试用例均可通过:

  • 重复数字案例(如222、55555):每次提取的最后一位数字都等于prev,不会触发return False,最终返回True。
  • 非递减序列(如113355779、789):后续数字均不大于前一位,循环正常结束返回True。
  • 递减/无序序列(如98765、346234):会在某次循环中检测到当前数字大于前一位,返回False。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:45:42