因此用户将以二进制格式输入字符串值。即' 01000001'
我想查看他们输入的值,看看是否:
- 只有八个字符。
- 是字符串类型
- 且仅包含' 0' 1'
醇>
最好用一个接收用户值的函数来完成,这样我就可以随时调用它。如果不满足条件,则返回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
答案 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()
并从结尾开始删除所有1
和0
并检查。
<强>代码:强>
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