检查数字是否只是2位数的组合

Moh*_*qui 1 python numbers

我创建了一个函数来检查数字是否有除3或5以外的任何其他数字,返回false.

def isDecent(n):
    digits = list(map(int, str(n)))
    for digit in digits:
        if digit != 3 or digit != 5: return False
    return True

print(isDecent(5553334))
Run Code Online (Sandbox Code Playgroud)

但不幸的是它不起作用!我能知道这个问题吗?

Rem*_*ich 6

digit != 3OR 总是如此digit != 5.所以它总会返回False.

更改orand.

或者,将其检查为

if digit not in (3, 5):
Run Code Online (Sandbox Code Playgroud)

实际上,我们不需要将字符转换为int来检查相等性,您可以这样做:

def isDecent(n):
    digits = str(n)
    return all(digit in ("3", "5") for digit in digits)
Run Code Online (Sandbox Code Playgroud)

甚至digit in "35"......但我认为这不太可读.

另一种选择是使用集合:

def isDecent(n):
    return set(str(n)).issubset('35')
Run Code Online (Sandbox Code Playgroud)

  • 并且`返回所有(str(n)中数字'35'中的数字)`将是*不错的*单线程(har-har). (2认同)