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

"Python. Head First- co autor miał na myśli?
CR
  • Rejestracja:prawie 7 lat
  • Ostatnio:12 miesięcy
  • Postów:92
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:

Kopiuj
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)
ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
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


Robię http response status cody w martwych ciągach
edytowany 1x, ostatnio: ledi12
CR
  • Rejestracja:prawie 7 lat
  • Ostatnio:12 miesięcy
  • Postów:92
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.

Pyxis
  • Rejestracja:ponad 7 lat
  • Ostatnio:około godziny
2

Jakie jest pytanie?

ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
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" ;)


Robię http response status cody w martwych ciągach
edytowany 1x, ostatnio: ledi12
CR
"to nie do mnie tak do mnie nie" i "już mi się nie podobasz"
ledi12
Tej poziomka.. :D
CR
  • Rejestracja:prawie 7 lat
  • Ostatnio:12 miesięcy
  • Postów:92
0

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

edytowany 1x, ostatnio: crispia
Pyxis
  • Rejestracja:ponad 7 lat
  • Ostatnio:około godziny
0

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

Kopiuj
a
a
a
o
a

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

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

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

CR
  • Rejestracja:prawie 7 lat
  • Ostatnio:12 miesięcy
  • Postów:92
0

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

Pyxis
Masz rację, pominąłem linię z set(word). Czyli ten kod, który napisałeś, działa dobrze i wygląda na to, że jest zgodny z tym, co opisuje autor książki.
N2
N2
  • Rejestracja:prawie 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:14
0
Kopiuj
#!/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))

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.