我正在编写一个程序,该程序应检查:
我可以让特定的字符串检查和整除性检查工作,但我似乎无法让字母检查工作
validationcheck = False
while not validationcheck:
InputSequence = input("Input: ")
if (InputSequence == 'EXAMPLE' or len(InputSequence) % 3 == 0 and 'C', 'A', 'G', 'T', 't', 'g', 'a','c' in InputSequence):
validationcheck = True
else:
print("Invalid input")
InputSequence = input("Input: ")
我期望的输出是,如果用户键入EXAMPLE
,或者他们键入一个包含可被3整除的C
、A
、G
、T
的字母序列,则不会有无效输入。否则,程序将打印一条无效的输入消息,并提示用户重新输入
更新-我最终解决了这个问题,但谢谢你的回复。如果对任何人都有帮助,我最终使用了以下内容
validationcheck = False
while not validationcheck:
InputSequence = input("Input: ")
stringToCheck = InputSequence
found = re.search("[CAGT]", stringToCheck)
if len(InputSequence) % 3 == 0 and found:
validationcheck = True
您可以使用^{} 检查是否有任何字母(对于字符串中的字母)以} 的形式出现
InputSequence
小写^{您还可以使用正则表达式搜索输入是否仅包含字符“t”、“g”、“a”或“c”
正则表达式
[tgac]+[\r\n]*
表示“t'或'g'或'a'或'c'中的一个1或无限次,然后行分隔(可以是'\n','\r','\r\n')0或无限次”more about regex在我看来,您需要确保在第二个选项中,字符串仅由字符组成。当然,这是一个不同的要求——好的编程的一部分是识别和消除规范中的歧义
在此基础上,关键字选项作为一个单独的
if
语句处理得更干净,使用in
根据关键字列表检查输入。下面的代码使用all( )确保列表中的非关键字条目仅由字符CAGT
组成,并根据允许的字母检查所有单个字符。这里的测试不会检查所有这些字母是否都存在(因此AGCAGC
将通过有效测试,尽管没有T
)。最后,我给出了3的可除性,这是它自己的错误信息,因为在查看其他良好条目时,这可能更难发现您不需要第二条input语句,因为循环将使您返回到无效输入的语句
我建议分两步进行:首先检查行长度,如果是
EXAMPLE
,然后检查行中是否有陌生人字符。 要查找行内的字符,可以使用for循环迭代字符:一个简单的注意事项:对于python标签名称,使用类似
input_sequence
而不是InputSequence
的蛇形大小写相关问题 更多 >
编程相关推荐