したがって、私があなたのやりたいことを理解しているなら、あなたはすべてのTとAsを交換し、すべてのGとCを交換し、文字列を逆にしたいのです。
さて、まず、実装していない文字列の反転に取り組みましょう。残念ながら、それを行う明確な方法はありませんが、Pythonで文字列を逆にする方法に関するこのSOの質問は、いくつかのアイデアを与えるはずです。最善の解決策は
reversedWord = word[::-1]
次に、文字を交換する必要があります。AsとTの両方がTに設定されるため、同じ文字列でを呼び出すことはできません。これを認識しているようですが、スワップごとに別々の文字列を使用し、それらを組み合わせることはありませreplace("T", "A")
ん 。replace("A","T")
代わりに、一度に1文字ずつ文字列を調べて、確認する必要があります。このようなもの:
swappedWord = "" #start swapped word empty
for letter in word: #for every letter in word
if letter == "A": #if the letter is "A"
swappedWord += "T" #add a "T
elif letter == "T": #if it's "T"
swappedWord += "A" #add an "A"
elif letter == "C": #if it's "C"
... #you get the idea
else: #if it isn't one of the above letters
swappedWord += letter #add the letter unchanged
(編集-DSMの辞書ベースのソリューションは私のソリューションよりも優れています。私たちのソリューションは非常に似ていますが、両方の文字を見て、スワップされた文字がどうあるべきかを決定しますが、DSMのソリューションははるかにコンパクトです。 DSMのソリューションが何をしているのかについての一般的な考え方を理解するのに役立ちます。私の大きなifステートメントの代わりに、DSMは辞書を使用して適切な文字をすばやく簡単に返します。DSMもそれを1行にまとめました。)
ifステートメントが機能しない理由は、基本的に「a、b、c、d、および単語がすべてまったく同じである場合」と言っているためです。これは、==
「等しい」という意味であり、aが単語およびbと等しい場合です。が単語に等しい場合、aはbに等しくなければなりません。これは、文字列にAs、Ts、Cs、またはGsがない場合(つまり、単語がスワップによって変更されない場合)にのみ当てはまるため、出力を出力することはありません。