01字符串验证程序逻辑错误求助:输出不符合预期问题排查
二进制字符串验证程序修正
需求说明
需要编写程序处理仅由0和1组成的字符串,满足以下规则:
- 当且仅当字符串以1开头、第二个字符为0、最后一个字符为1时,输出
string is valid - 字符串长度不限,但需满足上述三个条件;若包含非0/1字符或不满足规则,输出
Invalid Input
现有代码问题
你当前的代码仅判断字符串等于"10"时输出有效,完全不符合需求:
x = str(input('Enter numbers: ')) if x == '10': print('string is valid') else: print('Invalid Input')
比如输入"101"本应有效却被判定无效,输入"10"不满足最后一个字符为1却被判定有效。
修正后的代码
x = input('Enter numbers: ') # 检查输入是否仅包含0和1 if not all(char in {'0', '1'} for char in x): print('Invalid Input') else: # 验证长度足够且满足三个核心条件 if len(x) >= 3 and x[0] == '1' and x[1] == '0' and x[-1] == '1': print('string is valid') else: print('Invalid Input')
代码说明
- 非法字符校验:用
all(char in {'0', '1'} for char in x)遍历每个字符,确保输入只有0和1 - 长度与规则校验:
- 长度需≥3:因为要存在第二个字符,且最后一个字符为1(长度为2时第二个字符是0,无法满足最后一个字符为1)
- 依次验证
开头为1、第二个字符为0、最后一个字符为1三个核心条件
测试案例
- 输入
101→ 输出string is valid - 输入
10→ 输出Invalid Input - 输入
10001→ 输出string is valid - 输入
a101→ 输出Invalid Input - 输入
001→ 输出Invalid Input
内容的提问来源于stack exchange,提问作者razorGold
相关产品推荐
相关产品推荐

