对于python 3.4.1,如何查找字符串中是否有某些字符?我试着这样做:
def isItBinary(myString):
for ele in myString:
if ele == '1' or if ele == '0':
return True
else:
return False
此代码的问题是如果我输入isItBinary('102'),它将返回True。我只是希望它返回True,当且仅当它包含'1'或'0'。
答案 0 :(得分:3)
我只想使用all
函数。
def isItBinary(myString):
return all(x in ('0', '1') for x in myString)
x in ('0', '1')
检查x
中的字符是' 0'或者' 1'。
答案 1 :(得分:0)
您希望对多个字符应用isitBinary
,因为按照您编写它的方式,它会在检查完第一个字符后立即返回。
做一个你想做的事的简单方法是:
def binaryChar(myCharacter):
return myCharacter == '1' or myCharacter == '0'
然后将其应用于字符串中的所有字符,如下所示:
def isItBinary(myString):
return all(binaryChar(c) for c in myString)
当然,这些可以通过更易读的方式简化:
def isItBinary(myString):
return all(c in '01' for c in myString)
或通过lambda函数:
isItBinary = lambda myString: all(c in '01' for c in myString)
答案 2 :(得分:0)
您的程序在遇到第一个字符后立即返回值,您甚至没有迭代整个字符串。下面的方法检查条件在任何时候是否无效,返回False
否则迭代整个字符串并返回True
。
def isItBinary(myString):
for ele in myString:
if not ele in ("0","1"):
return False
return True
print isItBinary("102")
>>> False
print isItBinary("101")
>>> True
答案 3 :(得分:0)
使用套装:
def is_it_binary(s):
return not (set(s) - set("01"))
如果从字符串构造的集合包含不在第二个集合中的任何字符,则减法将给出非空集合。否则,如果它只包含第二组中的字符,则会得到一个空集,not
翻转到True
。
或者只是:
def is_it_binary(s):
allowed = set("01")
return all(c in allowed for c in s)
具有短路的优点(即一旦找到无效字符就会炸弹)。