"Python. Head First- co autor miał na myśli?

0

Powoli staje się monotematyczny i upierdliwy. Zadałem już to pytanie kilka dni temu, ale zrobię to ponownie. Nie wiem bowiem, czy czegoś nie doczytałem w książce , czy pomysł autora jest niezrozumiały tylko dla mnie.
Program ma wyświetlać samogłoski znalezione w słowie, bez duplikatów.
„Teraz, gdy nasze samogłoski znajdują się już w zbiorze, kolejnym krokiem powinno być określenie, czy któreś ze znaków tworzących słowo należą do zbioru samogłosek. Moglibyśmy to zrobić, sprawdzając, czy poszczególne litery, z których składa się dane słowo, znajdują się w tym zbiorze, jako że operator in działa w odniesieniu do zbiorów mniej więcej w ten sam sposób, w jaki robi to w odniesieniu do słowników i list.
Moglibyśmy zatem skorzystać z in, aby sprawdzić, czy zbiór zawiera jakąkolwiek literę, a następnie za pomocą pętli for cyklicznie sprawdzać występowanie poszczególnych liter słowa w zbiorze.”
Zrobiłem coś takiego, żeby użyć for i in, ale jak ma się to do wyjaśnień powyżej:

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:
        print(letter)
0

Poczytaj o id() to będziesz wiedział. Chodzi o odniesienie do konkretnego adresu w pamięci. In porównuje id() wartości do wartości w liście itp. Gdy jest match to zwraca True

0

Czytam to Head First i jak dotąd żadne z zadań nie wymagało wiedzy większej, niż to, co przedstawił autor w rozdziale z zadaniem i poprzedzającymi . O id() nie było do tego momentu mowy.
Sam twórca pokazał, że lepiej użyć metody intersection. Mnie zaciekawił natomiast algorytm z książki przedstawiony w poście.

2

Jakie jest pytanie?

2

Polecam "Zaawansowany Python. Jasne, zwięzłe i efektywne programowanie" by Luciano Ramalho. Oprócz sztywnych algorytmów i twierdzeń, autor tłumaczy zagadnienia na bazie architektury i jak wszystko działa "under the hood" ;)

0

@Pyxis: jak wyglądałby skrypt, stworzony w oparciu o pomysł autora książki?

0

Twój program wyświetla je z duplikatami. Na przykład dla słowa alamakota dostaniesz:

a
a
a
o
a

Duplikatów możesz się pozbyć w ten sposób:

>>> vowels = {'i', 'y', 'e', 'u', 'o', 'a'}
>>> word = "alamakota"
>>> set(word) & vowels
{'a', 'o'}

Ale operacji na zbiorach chyba jeszcze nie miałeś.

0

Dziwne .U mnie na PyCharm działa poprawnie. Przed chwilą sprawdzałem
skrypt.JPG

0
#!/usr/bin/python3
# -*- coding: utf-8 -*-

#word=(input("podaj slowo do sprawdzenia samoglosek: "))
word = "Agata i Tomek"
word = word.lower()
print(word)
print("\n")
vowels = {'i', 'y', 'e', 'u', 'o', 'a'}
s = {} #pusty słownik
for y in vowels:
    licznik = 0   
    for x in range(len(word)): 
        if word[x] in y:
            licznik += 1
            s[word[x]] = licznik

print(s)   
s.clear() #czyscimy calkowicie slownik

print("\n")

for char in vowels:
    print(char, word.lower().count(char))

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