如何判断一个字符串在python中是否正好包含8个1和0

时间:2015-10-22 16:52:18

标签: python

我想返回一个布尔值TrueFalse,具体取决于字符串是否只包含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的长度。

6 个答案:

答案 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