1

私は、同じ (文字列) 長さの 2 つのタンパク質を読み取り、異なるアミノ酸文字の数を返すプログラムを書いています。いくつかのビットを書くことができましたが、残念ながらすべてを完了することはできませんでした。コードを見て、これをガイドしてください。

a = raw_input("Cheetah protein: ")
b = raw_input("Domestic cat protein: ")
u=zip(a,b)
d=dict(u)
x = 1
for i,j in d.items(): 
    if i == j:
        x = x + 1   
print x

これは私が生成したい出力です:

Cheetah protein: IGADKYFHARGNYDAA
Domestic cat protein: KGADKYFHARGNYEAA
2 difference(s).
4

4 に答える 4

1

あなたが達成しようとしていることをよりよく説明する必要があると思います。このチェックがわかりません:

if i == j:

違いを確認したい場合は、代わりに次のように記述してください。

if i != j:

この修正の後、あなたのコードは猫とチーターを使ったあなたの例に 3 つの違いを与えてくれます。この例は正しいですか?

編集:わかりました、違いを1から数えているようです。行を変更する

x = 1

x = 0

少なくとも1つの違いが常にあると仮定したくないと思います;-)

于 2012-09-02T09:20:54.440 に答える
0

タンパク質が異なれば、アミノ酸配列 (「文字」) も異なりますが、長さも異なります。あなたが求めていないので、答えはありません。あなたの質問に答える:

>>> a="IGADKYFHARGNYDAA"
>>> b="KGADKYFHARGNYEAA"
>>> sum(1 for x, y in zip(a,b) if x!=y)
2

「ジェネレーター式」を使用して、異なるアミノ酸のペアごとにナンバーワンを生成し、合計しました. 同様の方法を使用して、変更されたアミノ酸を見つけたい場合は、次のようにします。

>>> diff = ''.join('-' if x==y else y for x, y in zip(a,b))
>>> print 'A:', a, '\nB:', diff
A: IGADKYFHARGNYDAA
B: K------------E--
于 2012-09-27T19:04:48.867 に答える
0
a="IGADKYFHARGNYDAA"
b="KGADKYFHARGNYEAA"

u=zip(a,b)          
x = 0               # not 1
for i,j in u:       # you don't need a dict here
    print i,j, 
    if i != j:      # they differ iff they are not equal to each other
        x = x + 1
        print "  neq" 
    else:
        print " eq"  
print x
于 2012-09-02T09:21:02.943 に答える
0
func=lambda x,y: ((x!=y) and 1) or 0
print sum(map(func, a,b)), 'difference(s)'
于 2012-09-02T09:21:21.087 に答える