• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python - usuwanie znaków z string

Object Storage Arubacloud
0 głosów
17,917 wizyt
pytanie zadane 22 listopada 2016 w Python przez MR.X Użytkownik (860 p.)
Witam

Dostałem pewne zadanie, z którym nie do końca  mogę sobie poradzić. Mianowicie:

Trolls are attacking your comment section!

A common way to deal with this situation is to remove all of the vowels from the trolls' comments, neutralizing the threat.

Your task is to write a function that takes a string and return a new string with all vowels removed.

For example, the string "This website is for losers LOL!" would become "Ths wbst s fr lsrs LL!".

 

Czyli w skrócie mamy usunąć samogłoski za pomocą funkcji ze zdania, które wprowadzimy .

Mój kod wygląda następująco:

vowel = ["e", "o", "u", "y", "a", "i"]
sentence = input("Please enter your sentence:")

for i in sentence:
    if i in vowel:
        new_string = sentence.replace(i, "")

print(new_string)

Niestety program usuwa tylko jedną litere np.a jesli wpisze inne słowo, które nie zawiera tej litery usuwa też inną np. e. Troszkę jakby robił to losowo. Prosiłbym o pomoc i jakąś podpowiedź.
Czy możliwe, że błąd leży w funkcji replace() ?

1 odpowiedź

0 głosów
odpowiedź 22 listopada 2016 przez Benek Szeryf (91,010 p.)

Czy możliwe, że błąd leży w funkcji replace() ?

Błąd leży w tym, że:

sentence.replace(i, "")

tworzy instancję nowego obiektu, którą reprezentuje new_string. Z ciągu znaków, który ten obiekt reprezentuje, w pierwszym kroku pętli zostają usunięte pierwsze wystąpienia danej samogłoski. W następnym kroku znów odwołujesz się do pierwotnego obiektu, a on posiada komplet samogłosek. Trzeba minimalnie zmienić kod:

sentence = raw_input("Please enter your sentence:\n")
vowel = ["e", "o", "u", "y", "a", "i"]

for i in sentence:
    if i in vowel:
        sentence = sentence.replace(i, "")

print(sentence)

Bezpieczniej też skorzystać z raw_input().

komentarz 22 listopada 2016 przez MR.X Użytkownik (860 p.)
a czy raw_input nie wyszedł już z użycia w nowszej wersji pythona 3 ?
komentarz 22 listopada 2016 przez Benek Szeryf (91,010 p.)
Tak, wyszedł. Nie wiedziałem w jakiej wersji piszesz.

Podobne pytania

+2 głosów
1 odpowiedź 5,154 wizyt
pytanie zadane 12 listopada 2019 w Python przez Karpik Użytkownik (680 p.)
0 głosów
1 odpowiedź 934 wizyt
pytanie zadane 10 marca 2021 w Python przez qwert 100 Obywatel (1,250 p.)
0 głosów
3 odpowiedzi 1,822 wizyt
pytanie zadane 10 listopada 2018 w Python przez gunaterek Bywalec (2,760 p.)

92,573 zapytań

141,423 odpowiedzi

319,647 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...