zjadacz samogłosek

0

Cześć,
Kilka dni temu wystartowałem z nauką programowania..
Utknąłem z następującym ćwiczeniem i potrzebuję pomocy aby ruszyć dalej z kursem, a co najważniejsze chcę to zrozumieć.
Poniżej treść zadania:


Twoje zadanie tym razem jest bardzo szczególne: musisz zaprojektować brzydkiego zjadacza samogłosek! Napisz program, który wykorzystuje:

  • pętlę for;
  • koncepcję warunkowego wykonywania (if-elif-else)
  • instrukcję continue.

Twój program musi:

-poprosić użytkownika o wpisanie słowa;

  • użyć metody upper() (tzn. slowo_uzytkownika = slowo_uzytkownika.upper()) do zamiany słowa wprowadzonego przez użytkownika na słowo pisane wielkimi literami;
  • wykorzystać koncepcję wykonywania warunkowego i instrukcję continue do "zjedzenia" następujących samogłosek A, E, I, O, U z wprowadzonego przez użytkownika słowa;
  • wyświetlić niezjedzone litery na ekranie - każdą z nich w osobnej linii.

Dodatkowo jest podany zalążek programu:

Poproś użytkownika o wprowadzenie słowa

i przypisz je do zmiennej slowo_uzytkownika

Uzupełnij pętlę for poniżej:

for litera in slowo_uzytkownika:


Szukałem już trochę rozwiązań, ale wszystko co do tej pory stworzyłem w kontekście tego programu jest bezsensu.
Będę wdzięczny za pomoc.

Pozdrawiam,
Krzysztof

0

Pokaż co już napisałeś i z którym punktem konkretnie masz problem.

0
Shalom napisał(a):

Pokaż co już napisałeś i z którym punktem konkretnie masz problem.

Napisałem dwie wersje

  1. w pierwsze wyświetla tylko pierwszą literę.
# Poproś użytkownika o wprowadzenie słowa
# i przypisz je do zmiennej slowo_uzytkownika
slowo_uzytkownika = input("Podaj słowo: ")
slowo_uzytkownika = slowo_uzytkownika.upper()
litera = ("AEIOU")
var = 0
# Uzupełnij pętlę for poniżej:
for litera in slowo_uzytkownika:
    if litera == slowo_uzytkownika:
#       var = +1
        continue
    elif litera !=slowo_uzytkownika:
    print (slowo_uzytkownika [var])
var = +1 

  1. W drugiej - nic się nie dzieje
# Poproś użytkownika o wprowadzenie słowa
# i przypisz je do zmiennej slowo_uzytkownika
slowo_uzytkownika = input("Podaj słowo: ")
slowo_uzytkownika = slowo_uzytkownika.upper()
litera = ("AEIOU")
var = 0
# Uzupełnij pętlę for poniżej:
for litera in slowo_uzytkownika:
    if litera in slowo_uzytkownika:
#        var = +1
        continue
    
    else: print(slowo_uzytkownika[var])
var = +1
2

Najważniejsze zastanów się czy gdybyś miał to zrobić ręcznie na kartce / tablicy etc użył byś właśnie takiego sposobu jaki tu próbujesz zakodować? Dla nie to pomieszanie z poplątanym. poza tym:
do kodów używaj tagu dostępnego pod </>, z wcięciami łatwiej się czyta, dodatkowo w Pythonie takowe mogą być źródłem problemu.
Daj też inne nazwy dla listy i iteratora for-a.

ps zapomniałeś o Y

1

A może zrób tak:

  • zrób pusty wynikowy string
  • dla każdej literki z tekstu użytkownika:
    • jeśli literka jest na blackliście to nie robisz nic
    • jeśli literki nie ma na blackliście, to dodajesz ją do wynikowego stringa

A te twoje kody nie mają sensu, między innymi dlatego ze dajesz zmiennym tzw nazwy z dupy. Zauważ że w tym twoim kodzie używasz litera w dwóch różnych kontekstach! Skąd w ogóle litera = ("AEIOU") ? o_O Dla mnie to jest jakieś blacklist ale na pewno nie litera.
W efekcie jak masz:

for litera in slowo_uzytkownika:
    if litera in slowo_uzytkownika:

To przecież ten pierwszy for NADPISUJE ci zmienną litera, więc ten if niżej nie ma absolutnie żadnego sensu bo zawsze zwróci true.

Ten twój pomysł z licznikiem jest bez sensu, ale zadziałałby nawet, gdyby nie ta zła nazwa zmiennej.

0

Jak dla mnie to powinieneś porównywać zmienną litera z listą samogłosek (jak już ta będzie się sensownie nazywać) i wtedy wypisać litera albo i nie. Do tego albo continue albo else, stosowanie obu nie ma sensu, bo w tym przypadku robią to samo (aczkolwiek w niczym zadaniu nie zaszkodzi). zmienna var jest tu całkowicie zbędna

1

Najprostsze rozwiązanie zgodne z treścią zadania:

slowo_uzytkownika = input('Wpisz słowo: ')
slowo_uzytkownika = slowo_uzytkownika.upper()

for litera in slowo_uzytkownika:
    if litera in 'AEIOUY':
        continue
    print(litera)

Zauważ, że dodałem Y, bo w języku polskim Y to też samogłoska. Nie dodałem polskich samogłosek, jak chcesz to dodaj.

0

Dziękuję wszystkim którzy odpowiedzieli. Wasze komentarze pozwoliły mi lepiej zrozumieć temat.

1 użytkowników online, w tym zalogowanych: 0, gości: 1