因此,如果我了解您想要做什么,您想要交换所有 Ts 和 As 以及交换所有 Gs 和 Cs ,并且您想要反转字符串。
好的,首先,让我们来反转字符串,这是您尚未实现的。不幸的是,没有明显的方法可以做到这一点,但是这个关于如何在 python 中反转字符串的 SO question应该会给你一些想法。最好的解决方案似乎是
reversedWord = word[::-1]
接下来,您需要交换字母。您不能在同一个字符串上调用replace("T", "A")
and replace("A","T")
,因为这会使您的 As 和 Ts 都设置为 T。您似乎已经认识到这一点,但是您为每次交换使用单独的字符串,并且永远不要将它们组合在一起。相反,您需要遍历字符串,一次一个字母并检查。像这样的东西:
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 解决方案的总体思路。DSM 使用字典来快速简单地返回正确的字母,而不是我的大 if 语句。DSM 还将它折叠成一行。)
您的 if 语句不起作用的原因是您基本上是在说“如果 a、b、c、d 和 word 都完全相同”,因为==
意味着“相等”并且如果 a 等于 word 和 b等于 word 那么 a 必须等于 b。这只有在字符串没有 As、Ts、Cs 或 Gs 时才成立(即单词没有被交换更改),因此您永远不会打印输出。