迭代串和在python替换元件(Iterating a string and replacing a

2019-10-17 18:01发布

我试图通过两个字符串,寻找匹配的元素进行搜索。 如果字符串有两个共同的元素是在不同的位置,我想在的“猜测”字符串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')

我不知道如果我正确使用索引。

Answer 1:

首先,你需要使用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'

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



Answer 2:

我不会使用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'

这是我会怎么做,但使用你和威廉的代码可以很好地工作还的方式。 我只是用来做这种方式,它很可能还不如他那样有效,但它通常工作得很好。



文章来源: Iterating a string and replacing an element in python