簡體   English   中英

在不使用任何內置函數的情況下在給定整數中找到兩個連續數字時的布爾值 True 或 False

[英]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

在這里,我使用了一些內置函數,例如lenstr ,但是如果您明確
想要避免使用它們,只需使用您原來的方法,只需將 return 語句取消縮進一次

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM