猿问

布尔值 True 或 False 在不使用任何内置函数的情况下在给定整数中找到两个连续数字

要在给定整数(N)中找到两个连续的数字(D)而不使用任何内置函数并返回 True 或 False,以下代码似乎在遇到一个 D 时退出,但是如果有两个 D 则它可以工作。为什么它不能正常工作以及如何解决?谢谢!


def double_digits(n, d):

    """Return True if N has two Ds in a row otherwise return False.


    int, int -> Boolean


    >>> double_digits(91019, 1)

    False

    >>> double_digits(88, 8)

    True

    >>> double_digits(2772, 7)

    True

    >>> double_digits(88108, 0)

    False

    >>> double_digits(12345, 4)

    False

    >>> double_digits(81811081, 1)

    True

    """

    while n > 0:

        remainder = n % 10

        n = n // 10

        if remainder == d:

            if n % 10 == d:

                return True

            else:

                remainder, n = n % 10, n // 10

    return False


宝慕林4294392
浏览 130回答 2
2回答

神不在的星期二

最后一个 return 语句应该在循环之外。下面是正确的代码:   def double_digits(n, d):     while n > 0:        remainder = n % 10        n = n // 10        if remainder == d:            if n % 10 == d:                return True            else:                remainder, n = n % 10, n // 10    return False

FFIVE

您必须取消缩进最后一个语句:return False,左边 4 个空格。那一定对你有帮助。或者,您可以将输入转换为字符串,然后字符匹配就很容易了。def double_digits(n: int, d: int)->bool:&nbsp; &nbsp; n = str(n)&nbsp; &nbsp; d = str(d)&nbsp; &nbsp; i = 0&nbsp; &nbsp; while i < len(n)-1:&nbsp; &nbsp; &nbsp; &nbsp; if n[i] == d and n[i+1] == d:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return True&nbsp; &nbsp; &nbsp; &nbsp; i+=1&nbsp; &nbsp; return False在这里,我使用了一些内置函数,例如lenand str,但是如果您明确想避免使用它们,只需使用您原来的方法并只取消缩进 return 语句一次
随时随地看视频慕课网APP

相关分类

Python
我要回答