问题描述
要在给定的整数(N)中查找两个连续的数字(D)而不使用任何内置函数并返回True或False,则遇到一个D时,似乎退出了以下代码,但是如果存在两个DS。为什么它不能按原样工作以及如何解决?谢谢!
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
解决方法
最后一个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
,
您必须使最后一条语句缩进缩进:返回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
在这里,我使用了一些内置功能,例如len
和str
,但是如果您明确地
要避免使用它们,只需采用原始方法,并仅使return语句缩进一次