为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

宝慕林4294392 2023-06-20 14:44:07
要在给定整数(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
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

最后一个 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


查看完整回答
反对 回复 2023-06-20
?
FFIVE

TA贡献1797条经验 获得超6个赞

您必须取消缩进最后一个语句:return False,左边 4 个空格。那一定对你有帮助。

或者,您可以将输入转换为字符串,然后字符匹配就很容易了。


def double_digits(n: int, d: int)->bool:

    n = str(n)

    d = str(d)

    i = 0

    while i < len(n)-1:

        if n[i] == d and n[i+1] == d:

            return True

        i+=1

    return False

在这里,我使用了一些内置函数,例如lenand str,但是如果您明确

想避免使用它们,只需使用您原来的方法并只取消缩进 return 语句一次


查看完整回答
反对 回复 2023-06-20
  • 2 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信