import re
def check_input():
while True:
try:
sequence = raw_input("Please input:")
if sequence = [a,t,c,g]: # checking for valid input
continue
else:
print("invalid input, sequence coule only contain the "
"following letters (a,t,c,g)"):
check_input()
我基本上希望脚本检查用户的输入是否只包含这四个字母(a,t,c,g)。如果他们的输入包含除了这四个字母之外的任何内容,它可以打印第二个语句并提示用户再次输入。我看到有类似的问题,我已经尝试根据这些帖子更改我的脚本,但它仍然在if < sequence
位置给我无效的语法错误。谁知道这里有什么问题?
答案 0 :(得分:2)
您需要迭代输入中的每个字母,并检查它是否在允许的字母集中,如下所示:
sequence = raw_input("Please input:")
for letter in sequence:
if letter not in "atcg":
print("invalid input, sequence coule only contain the following letters (a,t,c,g)")
当您发现序列无效时,您可以选择在打印后使用break
语句结束检查,或者您可以计算允许的无效字母数。
答案 1 :(得分:1)
sequence
,一旦用户输入将是一个字符串,所以你需要遍历序列中的每个字符并使用in
来验证接受的字符串中是否存在字符。 Python中的字符串比较也区分大小写,因此您需要将输入的大小写与预期的字符串相匹配。我根据你的样本输入使用了大写字母。
def check_input():
sequence = input("Please input:")
sequence.upper()
for letter in sequence:
if letter in 'ATCG':
continue
else:
print("invalid input, sequence could only contain the
following letters: a, t, c or g.")
答案 2 :(得分:1)
您的功能必须检查并向用户提供是或否:
def check_input(word):
result = True
for letter in sequene:
if letter in 'atcg':
continue
else:
result = False
break
return result
check_input('atgc')
错误讯息:
if check_input('agct'):
continue
else:
print "error message"
答案 3 :(得分:1)
您也可以使用filter
命令:
def checkInp():
seq = raw_input("Please input sequence:")
if not filter(lambda m: m not in 'ATGC', seq) == '':
print 'Invalid input characters in sequence: ' + filter(lambda m: m not in 'ATGC', seq)
print 'Pleas'
check_input()
else: return seq