0

我正在尝试搜索两个字符串以寻找匹配的元素。如果字符串有两个位于不同位置的共同元素,我想让“猜测”字符串中的那个元素成为牛。如果字符串在同一位置有两个元素,则该元素为 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')

我不确定我是否正确使用索引。

4

2 回答 2

0

首先,您需要使用index()andreplace()作为字符串方法,就像 Martijn 在评论中所说的那样。

就像这样:在字符串guess.index(i)中找到 的索引。iguess

您可能想查看find(),它的作用与未找到子字符串时相同index()但不会引发异常。

另请注意,您正在查看的结果index()是否在 string 中guess。这是一个错误,因为整数不能在字符串中! index()返回一个整数!

然后考虑你在说... and not guess.index(i) == guess.index(i):(我修复了index代码)这是没有意义的,因为它们当然是平等的!他们是一样的东西!

最后,您使用replace不正确。从文档中,replace将字符串作为第一个参数 - 而不是索引!尝试像这样使用它:guess = guess.replace(i, 'BULL'). 这将更改为guess所有出现的i替换为 string 'BULL'

我不关心你这里的实际算法,而只是你的基本错误。

于 2013-02-21T20:44:12.380 回答
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'

我就是这样做的,但是使用你和威廉的代码的方式也可以很好地工作。我只是习惯了这种方式,它可能没有他的效率那么高,但它通常效果很好。

于 2013-02-21T20:50:28.343 回答