【问题标题】:Iterating a string and replacing an element in python迭代字符串并替换python中的元素
【发布时间】:2013-02-21 20:25:43
【问题描述】:

我正在尝试搜索两个字符串以寻找匹配的元素。如果字符串有两个位于不同位置的共同元素,我想将“猜测”字符串中的那个元素设为 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() 字符串的方法,而不是函数。
  • 我不确定你所说的字符串元素是什么意思。
  • 提供输入字符串的示例会有所帮助,大概就像“我有一座红色的房子”和“那是什么房子”,其中“房子”会被破坏。?

标签: python string replace indexing


【解决方案1】:

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

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

您可能想查看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'

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

【讨论】:

    【解决方案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'
    

    这正是我会做的,但使用你和威廉的代码的方式也可以很好地工作。我只是习惯了这种方式,可能效率不如他,但通常效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多