确定序列是否是有效的 DNA 序列

liy*_*a77 1 python for-loop if-statement dna-sequence python-3.x

我正在尝试编写这个程序,将序列读入名为 的字符串变量sequence,并找出是否sequence包含有效的 DNA 序列。我想用一个for和一个if-elif-else语句来确定该序列是否是有效的DNA。
这是我到目前为止所写的:

sequence = input("Please enter a sequence: ").upper()
valid_dna = "ACGT"
sequence = sequence.replace(" ", "")

common=0
for eachletter in sequence:
    if eachletter in valid_dna:
        common +=1

print("This is a valid dna sequence")

elif sequence != valid_dna:
    print("This is not a valid DNA sequence")

else:
    print()
Run Code Online (Sandbox Code Playgroud)

我不知道之后要添加什么elif,因为我在elif它返回之后添加的内容Syntax error

我原本有

sequence = input().upper()
sequence= input("Please enter a sequence:  ")
Run Code Online (Sandbox Code Playgroud)

协同工作效果不佳,感谢 VHarisop 指出!

更新:这就是我现在所拥有的,并且有效!

sequence = input().upper()
valid_dna = "ACGT"
sequence = sequence.replace(" ", "")

for i in sequence:
    if i in valid_dna:
            count = 1
    else:
            count=0
if count==1:
    print("This is a valid DNA sequence.") 
else:
    print("This is an invalid DNA sequence")
Run Code Online (Sandbox Code Playgroud)

Cor*_*mer 6

我只想使用all生成器表达式

>>> valid = 'ACTG'

>>> s1 = 'ATAGCGGCAT'
>>> all(i in valid for i in s1)
True

>>> s2 = 'ABCDEFHI'
>>> all(i in valid for i in s2)
False
Run Code Online (Sandbox Code Playgroud)

如果因为这是作业要求而必须使用for循环和if语句,则可以使用类似的想法

def validSequence(s):
    valid = 'ACTG'
    for letter in s:
        if letter not in valid:
            return False
    return True

>>> validSequence('ATAGCGGCAT')
True
>>> validSequence('ABCDEFHIJK')
False
Run Code Online (Sandbox Code Playgroud)