[英]Boolean True or False upon finding two consecutive digits in a given integer without using any built-in functions
要在不使用任何內置函數並返回 True 或 False 的情況下在給定的整數 (N) 中找到兩個連續的數字 (D),以下代碼在遇到一個 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
最后一個 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 語句取消縮進一次
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.