用子字符串替换字母的每个其他实例

时间:2016-11-16 01:31:06

标签: string python-2.7 loops

我对我的编码有疑问。我正在编写一个代码,其中字母“a”中的每个OTHER实例都需要替换为“dragon”。 所以如果字符串是abadifaa,我的代码应该返回“abdragondifadragon。”

到目前为止,我已经编写了替换“a”

的每个实例的代码
def replace(string1, dragon):


new_string = " "

for letter in string1:

    if letter != "a":

          new_string +=letter

    elif letter == "a':

          new_string += dragon

    return new_string

所以我有2个问题。 1.如果要求更换每个“a”实例的问题,我的代码是否正确? 2.我如何更改此代码以仅通过“a”的每个其他实例进行迭代和替换?

感谢帮助!

2 个答案:

答案 0 :(得分:1)

首先,您需要缩进函数定义:

def replace(string1, dragon):
   new_string = " "
   for letter in string1:
       if letter != "a":
             new_string +=letter
       elif letter == "a':
             new_string += dragon
       return new_string

此外,它不具备双空格线的可读性。

其次,dragon是一个变量,而不是一个字符串。在这里,我将龙默认为字符串'dragon':

def replace(string1, dragon='dragon'):
   new_string = " "
   for letter in string1:
       if letter != "a":
             new_string +=letter
       elif letter == "a':
             new_string += dragon
       return new_string

然而,最好重命名变量:

def replace(string1, replace_word='dragon'):
   new_string = " "
   for letter in string1:
       if letter != "a":
             new_string +=letter
       elif letter == "a':
             new_string += replace_word
       return new_string

现在,您想要替换所有其他'a'。简单方法,直观(还有许多其他聪明的方法,但对初学者来说,这是最容易理解的)。创建一个计数器,只有当除以2的模数为零时才能替换。这意味着每个偶数a_counter,这是一个。

的每个其他实例
def replace(string1, replace_word='dragon'):
    a_counter = 0
    new_string = ''
    for letter in string1:
        if letter != 'a':
            new_string += letter
        elif letter == 'a':
            a_counter += 1
            if a_counter%2 == 0:
                new_string += replace_word
            else:
                new_string += letter
    return new_string

print replace('abadifaa', 'dragon')

此外,您的报价不正确(上面已修复,您混合'和“"”),并且您的返回嵌套太深(您只想在迭代完所有后返回信件)。

这是一个可以看到它的行动的编码器:https://coderpad.io/KPM3K7PG

(从原始答案中编辑了一些错误,如附上所有字母)。

答案 1 :(得分:0)

您忘记了几个引号,而new_string应为空(您现在有空格)。除此之外,您的代码会将“a”的每个实例更改为“dragon”。我建议在你的代码中添加一个计数器变量,这样每次计数器都是偶数时,字母“a”就会被替换掉,每当它是一个奇数时,就会保持原样。