我创建了一个函数来检查数字是否有除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)
但不幸的是它不起作用!我能知道这个问题吗?
digit != 3
OR 总是如此digit != 5
.所以它总会返回False.
更改or
到and
.
或者,将其检查为
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)