Proqramlaşdırma

Məsələ həlli: söz sayğacı

Real məsələni mərhələlərlə proqrama çevir.

Bütün dərslər · Python dərsləri: sıfırdan öyrən

Məsələni necə həll etməli

Kod yazmazdan əvvəl məsələni sadə cümlələrlə izah et. Sonra kiçik addımlara böl, hər addımı ayrıca yoxla. Bu üsul böyük proqramları idarə olunan hala gətirir.

  1. Nə verilir, nə istənir? Nümunə girişi və gözlənən çıxışı yaz.
  2. Əl ilə həll et və addımları qeyd et.
  3. Addımları funksiyalara çevir.
  4. Kiçik nümunələrlə sına, sonra kənar halları yoxla.

Nümunə: söz sayğacı

Tapşırıq: mətndə hər sözün neçə dəfə keçdiyini say. Plan: mətni kiçik hərfə çevir, durğu işarələrini təmizlə, sözlərə böl, dict-də say, ən çox keçənləri göstər.

def clean(text):
    keep = "abcdefghijklmnopqrstuvwxyz əöüğışç"
    return "".join(ch for ch in text.lower() if ch in keep)

def count_words(text):
    counts = {}
    for word in clean(text).split():
        counts[word] = counts.get(word, 0) + 1
    return counts

def top(counts, n=3):
    return sorted(counts.items(), key=lambda p: p[1], reverse=True)[:n]

sample = "The cat and the dog. The end!"
print(top(count_words(sample)))   # [('the', 3), ('cat', 1), ('and', 1)]

Gördüyün kimi hər funksiya bir iş görür və ayrıca sınana bilir. Sonra proqramı genişləndirmək asandır: fayldan oxumaq, nəticəni saxlamaq, ən qısa sözləri atmaq.

Səhvləri tapmaq

Proqram gözləniləndən fərqli işləyirsə, aralıq qiymətləri print() ilə göstər və harada gözləntinin pozulduğunu tap. Kiçik assert yoxlamaları funksiyanı dəyişəndə səni qoruyur.

assert count_words("a a b") == {"a": 2, "b": 1}
assert top({"x": 1, "y": 5}, 1) == [("y", 5)]
print("all checks passed")

Müəllif: Nibras Code