gpt4 book ai didi

python-3.x - 尽管以前的实现工作正常,但可多分计算器还是失败了

转载 作者:行者123 更新时间:2023-12-04 09:38:13 33 4
gpt4 key购买 nike

首先,定义:

A polydivisible number is an integer number where the first n digits of the number (from left to right) is perfectly divisible by n. For example, the integer 141 is polydivisible since:


  • 1 % 1 == 0
  • 14 % 2 == 0
  • 141 % 3 == 0

  • 我正在研究一个递归的多可整除检查器,给定一个数字,它将检查该数字是否是可多整的,如果不是,则递归检查每个其他数字,直到它达到一个可以被多整的数字。
    不幸的是,我的代码没有按照我想要的方式工作。有趣的是,当我输入一个已经可以被多整的数字时,它会完成它的工作并输出那个可以被多整的数字。当我输入一个不可多整的数时出现问题,例如13。下一个可多整的数应该是14,但程序却无法输出。相反,它会陷入无限循环,直到内存耗尽。
    这是我的代码:
    def next_polydiv(num):
    number = str(num)

    if num >= 0:

    i = 1
    print(i)
    while i <= len(number):

    if int(number[:i]) % i == 0:
    i += 1
    print(i)
    else:
    i = 1
    print(i)
    num += 1
    print(num)
    else:
    return num

    else:
    print("Number must be non-negative")
    return None

    我假设问题发生在 while 循环内的 else 语句中,如果数字不能被多整,程序会将 i 重置为 0,并将原始数字加 1,以便它可以开始检查新数字。然而,就像我解释的那样,它并没有像我想要的那样工作。
    知道代码可能有什么问题,以及如何确保它在达到 1(如 14)时停止并输出正确的多可除数?

    (另请注意,此检查器仅应接受非负数,因此初始 if 条件)

    最佳答案

    错误是你在增加num后没有更新数字。

    这是工作代码:

    def next_polydiv(num):
    number = str(num)

    if num >= 0:

    i = 1
    print(i)
    while i <= len(number):

    if int(number[:i]) % i == 0:
    i += 1
    print(i)
    else:
    i = 1
    print(i)
    num += 1
    print(num)
    number = str(num) # added line
    else:
    return num

    else:
    print("Number must be non-negative")
    return None

    关于python-3.x - 尽管以前的实现工作正常,但可多分计算器还是失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62452318/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com