Что-то не так как должно по задумке. Python
string_ = "This website is for losers LOL!"
def disemvowel(string_):
size = len(string_)
for i in range(size):
if string_[i] == 'a' or 'i' or 'u' or 'e' or 'o' or 'O':
string_.replace(string_[i], "")
print(string_)
disemvowel(string_)
По задумке, если находится гласная буква то функцией replace() вырезаем ее из строки, но так не получается. По результату выводит изначальную полную строку
Ответы (2 шт):
О чем мы в предыдущих вопросах говорили
не меняйте строку идя по ней, создайте новую
string_ = "This website is for losers LOL!"
string_ = ''.join(letter for letter in string_ if letter not in 'aiueoO')
print(string_)
а можно через регулярные выражения:
import re
string_ = "This website is for losers LOL!"
string_1 = re.sub('[aiueoO]', '', string_)
Во-первых, if string_[i] == 'a' or 'i' or 'u' or 'e' or 'o' or 'O' всегда будет истинным, потому что нужно применять сравнение для каждой буквы.
Во-вторых, string_.replace(string_[i], "") просто выполняет что сказано, но не изменяет строку, поэтому нужно обновлять строку:
string_ = string_.replace(i, '')
В-третьих, итерацию следует проводить не по размеру строки, а по самой строке, иначе при урезке строки мы будем вылетать за пределы самой строки:
for i in string_:
Этот код работает
string_ = "This website is for losers LOL!"
def disemvowel(string_):
for i in string_:
if i in ['a', 'i', 'u', 'e', 'o', 'O']:
string_ = string_.replace(i, '')
print(string_)
disemvowel(string_)