我正在尝试搜索两个字符串以查找匹配元素。如果字符串有两个共同位于不同位置的元素,我想让'guess'字符串中的元素成为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')
我不确定我是否正确使用索引。
答案 0 :(得分:0)
首先,你需要使用index()
和replace()
作为字符串方法,就像Martijn在评论中所说的那样。
就是这样:guess.index(i)
在字符串i
中找到guess
的索引。
您可能需要查看find(),它与index()
相同,但在找不到子字符串时不会引发异常。
另请注意,您正在查看index()
的结果是否在字符串guess
中。这是一个错误,因为整数不能在字符串中! index()
返回一个整数!
然后考虑你说... and not guess.index(i) == guess.index(i):
(我修复了index
代码)没有意义,因为它们当然是平等的!他们是一回事!
最后,您错误地使用了replace
。
从the documentation开始,replace
将字符串作为第一个参数 - 而不是索引!尝试使用它:guess = guess.replace(i, 'BULL')
。这将更改guess
以使所有出现的i
替换为字符串'BULL'
。
我这里并不关心你的实际算法,只是你的基本错误。
答案 1 :(得分: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'
这就是我将如何做到这一点,但使用你和威廉的代码的方式也可以很好地工作。我只是习惯这样做,而且很可能没有他那么高效,但它通常效果很好。