#python
#python
Вопрос:
У меня вызывается функция цикла remove
, и я хочу показать каждый результат цикла удаления только i-го символа строки. Допустим, у меня есть строка "hello"
, и ожидаемый результат функции цикла показан ниже:
remove("hello")
Remove the position 1: ello
Remove the position 2: hllo
Remove the position 3: helo
Remove the position 4: helo
Remove the position 5: hell
Мои коды для функции:
def remove(string):
i=0
for i in range(len(string)):
removed=string.replace(string[i],"")
print("Remove the position",i 1,":",removed)
i=i 1
return None
И вывод моего кода:
remove_one("hello")
Remove the position 1 : ello
Remove the position 2 : hllo
Remove the position 3 : heo
Remove the position 4 : heo
Remove the position 5 : hell
Кажется, что мои коды не только удаляют букву i-й позиции, они также удаляют буквы, когда они совпадают с буквой i-й позиции.
Как я могу исправить коды, которые удаляют только букву i-й позиции?
Комментарии:
1.
replace
Функция удаляет их все. Вы могли бы просто сделать что-то вроде:removed = string[:i] string[i 1:]
.
Ответ №1:
Использование replace
удаляет все вхождения буквы. То, что вы хотите, это просто:
string = string[:i] string[i 1:]
Вы также можете использовать del
:
del string[i]
С первым решением ваш код становится:
def remove(string):
i = 0
for i in range(len(string)):
removed = string[:i] string[i 1:]
print("Remove the position", i 1, ":", removed)
i = i 1
return None
Ответ №2:
Пара моментов о коде… range
возвращает значения от 0 до длины строки, поэтому нет необходимости устанавливать i
значение равным нулю. Кроме того, цикл for циклически перебирает значения диапазона для вас, поэтому вам не нужно устанавливать i
(используя i = i 1
) в нижней части цикла for .
def remove(string):
for i in range(len(string)):
# We can use string slicing to find the substring prior to the
# character to be removed AND the subtring after the character to
# be removed.
# since we will be using the position indicator several times, we can
# save that
result = string[:i] string[i 1:]
print("Remove the position", i 1 ,":", removed)
remove("hello")
выдает:
ello
hllo
helo
helo
hell
Другие примечания:
Все функции Python возвращают None, если вы не указываете явное возвращаемое значение, поэтому мы можем удалить эту строку.