如何遍历字符串并逐个删除字符

时间:2020-02-18 05:23:11

标签: python loops

提供数字和单词。例如:

value = 3
word = 'NAME'

我必须遍历单词NAME,一次删除一个字母,最后显示剩余的最后一个字母。删除的方式是:从第一个字母开始,在一个循环中前进value个字母(一旦到达末尾,从索引0开始),然后删除到达的字母。

例如,如果值为3。从3开始算起N并删除第一个M

剩余为NAE-从下一个字母3算到E,然后将A删除。

剩余为NE-从3开始计数到E,然后E将被删除,仅剩下N。结果将显示为N。我无法找到一种构造循环来执行此迭代的方法。

到目前为止,我已经手动完成并使其像

if value == 4:
  print('A')
elif value == 1:
  print('E')
elif value ==2:
  print('N')

这不切实际,因为该值将介于1-100之间。任何其他可以自动迭代并删除并向我显示最后一封信的解决方案。

1 个答案:

答案 0 :(得分:0)

由于字符串是不可变的,因此您实际上无法从字符串中“删除”字符。您可以执行的操作是使用修改后的字符串重新分配。

对于循环,您可以使用%(模)运算符来实现循环效果。首先,您需要标记要在每次迭代中计算的第一个索引:

start = 0

然后,我们将要不断迭代,直到剩下一个字母为止:

while len(word) > 1:

现在,我们要查找要删除的下一个字母的索引。就像我说的,使用%,我们将在最后一个字母之后回到0

    to_remove = (start + value - 1) % len(word)

现在,我们实际上需要删除找到的字母,正如我所解释的,我们将不得不重新分配变量,并且我们将通过切片摆脱

    word = word[:to_remove] + word[to_remove+1:]

我们在一起的事情就像:

def remove_letters(word, value):
    start = 0
    while len(word) > 1:
        to_remove = (start + value - 1) % len(word)
        start = to_remove
        word = word[:to_remove] + word[to_remove+1:]
    return word

一些例子:

>>> remove_letters('NAME', 3)
'N'
>>> remove_letters('NAME', 4)
'A'
>>> remove_letters('NAME', 5)
'A'