我想返回一个布尔值True
或False
,具体取决于字符串是否只包含1和0。
字符串必须由8个1或0组成,而不是其他内容。
如果只包含1或0,它将返回True
,如果不包含,则返回False
。
def isItBinary(aString):
if aString == 1 or 0:
return True
else:
return False
这是我到目前为止所做的,但我不确定如何将它与两个数字进行比较,以及它是否有8个1和0的长度。
答案 0 :(得分:6)
您可以使用all进行此操作,并检查长度以确保它正好为8。
all(c in '10' for c in aString) and len(aString) == 8
示例:
aString = '11110000'
all(c in '10' for c in aString) and len(aString) == 8
>>> True
与其他方法相比,这样做的主要好处是,如果它找到零或一个以外的任何东西,它就会短路。
答案 1 :(得分:2)
您可以在此处使用set
。示例 -
def isItBinary(aString):
seta = set(aString)
if seta.issubset('10') and len(aString) == 8:
reutrn True
return False
答案 2 :(得分:2)
len(aString) == 8 and set(aString) <= {"0", "1"}
运算符<=
表示“是此处的子集”。
答案 3 :(得分:1)
试试这个:
def isItBinary(aString):
return all([char in '01' for c in aString]+[len(aString)==8])
答案 4 :(得分:1)
我喜欢lambda over for循环
>>> str = '10001010'
>>> len(str) == 8 and len(filter(lambda bool: not bool, map(lambda bit: bit in '01', str))) == 0
True
答案 5 :(得分:1)
如果您的字符串代表一个8位二进制数,您可以尝试在测试中将其转换为:
pdbId