要在给定整数(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

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 语句一次
添加回答
举报
0/150
提交
取消