在Python中遍历字符串并替换元素
我正在尝试在两个字符串中查找匹配的元素。如果这两个字符串中有两个相同的元素,但它们的位置不同,我想把“猜测”字符串中的那个元素标记为COW(牛)。如果这两个字符串中有两个元素在同一个位置上,那么这个元素就是BULL(公牛)。
这是我目前的代码:
if index(number,i) in guess and not index(guess,i) == index(guess,i):
replace(index(guess,i),'COW')
if index(guess,i) == index(number,i):
replace(index(guess,i),'BULL')
我不太确定我是否正确使用了索引。
2 个回答
0
我不会使用 index()
这个方法。相反,我会把字符串里的元素变成一个列表,然后这样做:
listOne = [hello,goodbye,adios, shalom]
listTwo = [hello,adios,arrivaderci]
def cowbull(L1, L2):
for i in range(len(L1)):
if L1[i] in L2:
if L1[i] == L2[i]:
L1[i] = 'BULL'
L2[i] = 'BULL'
else:
L1[i] = 'COW'
L2[L1[i]] = 'COW'
这只是我自己的做法,不过你和威廉的代码也可能很好用。我只是习惯这样做,虽然可能没有他的效率高,但通常效果还是不错的。
0
首先,你需要使用 index()
和 replace()
这两个字符串方法,就像 Martijn 在评论中提到的那样。
你可以这样做:使用 guess.index(i)
来找到字符串 guess
中字符 i
的位置。
你可能还想看看 find() 方法,它的功能和 index()
一样,但如果找不到指定的字符,它不会报错。
另外要注意的是,你在检查 index()
的结果是否在字符串 guess
中。这是个错误,因为一个整数是不能在字符串里的!index()
返回的是一个整数!
然后你写了 ... and not guess.index(i) == guess.index(i):
(我修正了 index
的代码),这没有意义,因为它们当然是相等的!它们是同一个东西!
最后,你使用 replace
的方式不对。根据 文档,replace
的第一个参数应该是一个字符串,而不是一个索引!你可以这样使用它:guess = guess.replace(i, 'BULL')
。这样会把 guess
中所有的 i
替换成字符串 'BULL'
。
我这里关注的不是你的算法,而是你的一些基本错误。