sortowanie zbioru pomoc w kodzie

0

jak posortować samogłoski w sprawdzanym słowie aby były w kolejności alfabetycznej?
próbowałem jak poniżej, nie działa. gdzie popełniam błąd? Z góry dziękuję za pomoc


word=(input("podaj slowo do sprawdzenia samoglosek"))
vowels = {'i', 'y', 'e', 'u', 'o', 'a'}
word=set(word)
for letter in word:
    if letter in vowels:
        set(letter)
        sorted(letter)
        print(letter)
0

Chcesz posortować litery w tym wejściowym słowie? To zrób właśnie to... Weź to wpisane słowo i posortuj!

word=sorted(list(set(word)))

Możesz też odwrócić logikę i zrobić pętlę po twoim vowels i sprawdzać czy któraś jest w tym set(word), ale to teraz źle zadziała, bo vowels to set i nie zachowuje kolejności ktorą masz w kodzie. Musiałbyś tam zrobić listę.

0

Shalom, nie wyraziłem się precyzyjnie. Skrypt miał wyświetlać znalezione samogłoski w wpisanym słowie- bez duplikatów. Chciałem by samogłoski wynikowe były posortowane alfabetycznie.

0

No i będą jeśli zrobisz tak jak napisałem ;) Ale możesz też zbierać te pasujące samogłoski w liście i tą wynikową listę posortować przed wypisaniem. Gdzie jest problem?

0

Zrobiłem tak:

word=(input("podaj slowo do sprawdzenia samoglosek"))
vowels = {'i', 'y', 'e', 'u', 'o', 'a'}
word=set(word)
lista=[]
for letter in word:
    if letter in vowels:
        lista.append(letter)
lista.sort()
print(lista)

Działa, dzięki za pomoc. Pozdrawiam :)

3

lista = sorted([letter for letter in word if letter in vowels]) ;)

0
Shalom napisał(a):

lista = sorted([letter for letter in word if letter in vowels]) ;)

Dałem łapkę i znaczek bo rozwiązanie działa , ale mam jedno pytanie.
czy autor mógłby mi wyjaśnić po co na początku kodu zmienna letter.tzn[ letter for letter in word if letter in vowels]

kombinuje tak, za pomoca petli for sprawdzamy czy poszczególne litery word należą do zbioru samogłosek vowels i co dalej ?
tworzymy listę i sortujemy ja? co robi letter na początku
Pythonem jak i całym programowaniem zajmuje się hobbystycznie, od czasu do czasu i nie zawsze szybko łapie o co chodzi zawodowcom

0

List comprehension ma postać [expression for variable in iterable if condition] i wynikiem jest lista wyników expression po jednym dla każdego elementu iterable o ile warunek condition dla niego jest spełniony. Np.

[1 for x in [1,2,3]] zrobi nam listę [1,1,1] a [1 for x in [1,2,3] if x > 2] zrobi listę [1] bo tylko dla 3 warunek jest spełniony więc wynikowa lista ma 1 element. Zwykle jednak chcemy żeby expression było jakoś związane z tym po czym iterujemy, więc np. [x for x in [1,2,3]] zwróci nam [1,2,3] a [x for x in [1,2,3] if x > 2] zwróci [3].
Analogicznie możemy też zrobić np. [x*2 for x in [1,2,3]] które zwróciłoby [2,4,6] bo nasze expression podwaja elementy zbioru po którym iterujemy.

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