我的字符串替换代码是否有问题?

时间:2019-03-21 02:37:49

标签: python string loops replace

string = input()

for i in range(len(string)):
    if i % 3 == 0:
        final = string.replace(string[i], "")

print(final)
  

有人问我一个问题:“给出一个字符串,删除其索引可被3整除的所有字符。”

     

输入Python的答案是yton。但是,我的代码给出了Pyton

     

代码对我来说很有意义,但是我是一个初学者。有帮助吗?

3 个答案:

答案 0 :(得分:0)

在当前代码中,循环的每次迭代都使用final。它通过替换一个字符来继续更新。在每次迭代中,final被替换为一个不同的字符串,并删除了string中的一个字母。循环完成后,实际上仅替换了一个字母,在这种情况下为“ h”。

改用它(感谢Mateen Ulhaq的想法):

print("".join(x for i, x in enumerate(input()) if i % 3 != 0))

答案 1 :(得分:0)

string=input()
final=""
for i in range(len(string)):
    if i % 3 != 0:
        final+=string[i]


print(final)

在您的代码中,行final = string.replace(string[i], "")将像这样运行。

假设输入为“ hellobaby”:

i=0, final="ellobaby"

i=3, final="helobaby"

i=6, final="hellobby" 

答案 2 :(得分:0)

问题在于,在循环时,每次将索引除以3时,您就会覆盖final变量。 相反,尝试在开始循环之前定义最终变量,并在循环遍历字母时添加字母,并且仅在字母的索引不能被3整除的情况下(因此,忽略索引被3可以整除的字母)。 / p>

类似的事情应该起作用:

string = input()
final = ""
for i in range(len(string)):
    if i % 3 != 0:
        final += string[i]

print(final)