如果满足某些条件,则返回true或false的函数?

时间:2015-12-12 05:52:26

标签: python

因此用户将以二进制格式输入字符串值。即' 01000001'

我想查看他们输入的值,看看是否:

  
      
  1. 只有八个字符。
  2.   
  3. 是字符串类型
  4.   
  5. 且仅包含' 0' 1'
  6.   

最好用一个接收用户值的函数来完成,这样我就可以随时调用它。如果不满足条件,则返回false。

这是我到目前为止所提出的......

 size = len(teststring)
 teststring = '11111111'

 def typecheck(value):
    if type(user_input) == type(teststring) and len(user_input) == size and contains only 1 | 0
    return

3 个答案:

答案 0 :(得分:8)

您可以在此处使用正则表达式匹配:

reg = re.compile(r'^[01]{8}$')

def typecheck(value):
    return isinstance(value, str) and bool(reg.match(value))

或者,由于您要检查二进制格式编号,如何将其转换为基数为2的int,并查看它是否为有效转换:

def typecheck(value):
    try:
        return len(value) == 8 and bool(int(value, 2))
    except TypeError, ValueError:
        return False

答案 1 :(得分:4)

不需要正则表达式

您可以使用str.strip()并从结尾开始删除所有10并检查。

<强>代码:

check = "11101110"

if isinstance(check,str) and len(check)==8 and check.strip("01")=='':
    print "yes"

<强>输出:

yes

答案 2 :(得分:1)

这可以使用一个if语句完成。如果正则表达式没有找到匹配项,它将返回None,在真值测试中评估为False

import re

def check_input(user_input):
    if not re.match(r'^[01]{8}$', user_input):
        it doesn't meet requirements do something