如何检查有效的序列输入?

0 投票
4 回答
3293 浏览
提问于 2025-04-17 22:24
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的位置还是出现了无效语法错误。有没有人知道这里出什么问题了?

4 个回答

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"
1

用户输入的sequence会是一个字符串,所以你需要逐个检查这个字符串里的每个字符,看看这些字符是否在你允许的字符列表中。需要注意的是,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.")
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
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 语句来结束检查,或者你也可以统计一下允许多少个不合法的字母。

撰写回答