1

ユーザーに同じ長さの 2 つの DNA シーケンスを入力するよう求める Python スクリプトを作成します。2 つのシーケンスの長さが異なる場合、「入力が無効です。長さは同じでなければなりません!」と出力されます。入力が有効な場合、これら 2 つのシーケンスで同じ位置にある DNA 塩基がいくつあるかを計算し、「これら 2 つのシーケンスの x 位置は同じ文字を持っています」という答えを出力します。x は、ユーザーの入力に応じた実際の数値です。

以下は私がこれまでに持っているものです。

g=input('Enter DNA Sequence: ')
h=input('Enter Second DNA Sequence: ')

i=0
count=0

if len(g)!=len(h):
        print('Invalid')
else:
    while i<=len(g):
        if g[i]==h[i]:
            count+=1
        i+=1
print(count)
4

5 に答える 5

0

i<=len(g)i<len(g)-インデックス カウントは 1 ではなく 0 から始まるため、これを に置き換えます。これが直面しているエラーです。しかし、さらに、あなたのコードはあまりきれいではありません...

構造を維持しながら単純化する最初の方法:

for i in range(len(g)):
    if g[i]==h[i]:
            count+=1

さらに良いことに、実際にはワンライナーにすることができます。

sum(g[i]==h[i] for i in range(len(g)))

ここでTrueは Python で 1 と評価されることを利用しています。

于 2013-10-08T01:27:56.273 に答える
0
g = raw_input('Enter DNA Sequence: ')
h = raw_input('Enter Second DNA Sequence: ')
c = 0
count = 0

if len(g) != len(h):
    print('Invalid')
else:
    for i in g:
        if g[c] != h[c]:
            print "string does not match at : " + str(c)
            count = count + 1
        c = c + 1

print(count)
于 2013-10-08T06:36:44.837 に答える
-3
if(len(g)==len(h)):
   print sum([1 for a,b in zip(g,h) if a==b])

編集:閉じていない括弧を修正しました。コメントをありがとう、間違いなくジェネレーターソリューションを見て、少し学びます - ありがとう!

于 2013-10-08T01:26:39.627 に答える