我试图通过两个字符串,寻找匹配的元素进行搜索。 如果字符串有两个共同的元素是在不同的位置,我想在的“猜测”字符串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')
我不知道如果我正确使用索引。
首先,你需要使用index()
和replace()
作为字符串方法,如在的Martijn评论说。
这将是像这样: guess.index(i)
找到的索引i
的字符串guess
。
你可能想看看find()方法将做同样的index()
但是当没有找到子不会引发异常。
另外请注意,您所看到的,如果结果index()
是在字符串guess
。 这是一个错误,因为整数不能在一个字符串! index()
返回一个整数!
然后,请考虑您说明... and not guess.index(i) == guess.index(i):
我固定的index
代码),这是没有意义的,因为当然,他们是平等的! 他们是一样的东西!
最后,您使用的replace
不正确。 从文档 , replace
需要一个字符串作为第一个参数-不是索引! 尝试使用它像这样: guess = guess.replace(i, 'BULL')
这将改变guess
有所有出现i
用字符串替代'BULL'
。
我不关心你实际的算法在这里,但只是你的基本的错误。
我不会使用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'
这是我会怎么做,但使用你和威廉的代码可以很好地工作还的方式。 我只是用来做这种方式,它很可能还不如他那样有效,但它通常工作得很好。