我对我的编码有疑问。我正在编写一个代码,其中字母“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”的每个其他实例进行迭代和替换?
感谢帮助!
答案 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”就会被替换掉,每当它是一个奇数时,就会保持原样。