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)
我只想使用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)