Zadania praktyczne z Pythona z rozwiązaniami, które możesz uruchomić

Gdy znasz pętle, listy i słowniki, potrzebujesz zadań do ćwiczeń. Tych sześć wraca w kursach i na rozmowach kwalifikacyjnych. Każde rozwiązanie to jeden z kilku poprawnych sposobów, a każde zostało uruchomione, aby uzyskać pokazany wynik.

FizzBuzz

Wypisz liczby od 1 do 15. Dla wielokrotności 3 wypisz Fizz, dla wielokrotności 5 wypisz Buzz, a dla wielokrotności obu wypisz FizzBuzz. Sztuka polega na tym, by najpierw sprawdzić przypadek łączny, bo 15 jest też wielokrotnością 3 i 5.

for n in range(1, 16):
    if n % 15 == 0:
        print("FizzBuzz")
    elif n % 3 == 0:
        print("Fizz")
    elif n % 5 == 0:
        print("Buzz")
    else:
        print(n)

Wynik:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Sprawdzanie palindromu

Palindrom czyta się tak samo wspak. Zamień tekst na małe litery i usuń spacje, aby wielkość liter i odstępy nie miały znaczenia, a potem porównaj go z jego odwrotnością.

def is_palindrome(text):
    cleaned = text.lower().replace(" ", "")
    return cleaned == cleaned[::-1]

print(is_palindrome("Never odd or even"))
print(is_palindrome("Python"))

Wynik:

True
False

Liczenie samogłosek

Przejdź pętlą po znakach i policz te, które należą do ciągu samogłosek. sum() po generatorze jedynek to zwięzły sposób liczenia.

def count_vowels(text):
    return sum(1 for ch in text.lower() if ch in "aeiou")

print(count_vowels("Pip and the Scrap Isle"))

Wynik:

6

Najczęstsze słowo

Użyj słownika jako licznika. counts.get(word, 0) zwraca 0 dla słowa, którego jeszcze nie było, więc możesz dodać 1 bez sprawdzania. max z key=counts.get wybiera słowo o najwyższym wyniku.

text = "the robot and the island and the sea"
counts = {}
for word in text.split():
    counts[word] = counts.get(word, 0) + 1
best = max(counts, key=counts.get)
print(best, counts[best])

Wynik:

the 3

Usuwanie duplikatów z zachowaniem kolejności

Zamiana na zbiór (set) usuwa duplikaty, ale gubi kolejność. Aby zachować pierwsze wystąpienie każdego elementu, trzymaj listę tego, co już widziano.

items = ["a", "b", "a", "c", "b"]
seen = []
for item in items:
    if item not in seen:
        seen.append(item)
print(seen)

Wynik:

['a', 'b', 'c']

Dwie liczby o zadanej sumie

Mając listę i cel, zwróć pozycje dwóch liczb, których suma jest równa celowi. Słownik liczb już widzianych odpowiada na pytanie w jednym przebiegu: dla każdej liczby sprawdź, czy liczba, której jeszcze potrzebujesz, pojawiła się wcześniej.

def two_sum(numbers, target):
    seen = {}
    for i, n in enumerate(numbers):
        if target - n in seen:
            return seen[target - n], i
        seen[n] = i

print(two_sum([2, 7, 11, 15], 9))

Wynik:

(0, 1)

Częste pytania

Gdzie znajdę więcej zadań praktycznych z Pythona?
Zacznij od pomysłów powyżej i zmieniaj je: licz spółgłoski zamiast samogłosek, znajdź najrzadsze słowo albo zwróć wszystkie pary dla dwóch liczb o zadanej sumie. Zmienianie rozwiązanego zadania to najlepsze następne zadanie.
Czy warto zajrzeć do rozwiązania, gdy utkniesz?
Najpierw spróbuj przez co najmniej dziesięć minut. Potem przeczytaj rozwiązanie, zamknij je i napisz ponownie z pamięci następnego dnia. Samo przepisywanie bez ponownego pisania nie buduje umiejętności.
Czy te zadania nadają się do ćwiczenia przed rozmową o pracę?
Tak, FizzBuzz, palindromy, liczenie i dwie liczby o zadanej sumie to klasyczne pytania na rozgrzewkę. Pytania koncepcyjne (listy kontra krotki, is kontra ==) znajdziesz w przewodniku po rozmowach kwalifikacyjnych na tej stronie.

Ćwicz to