Ana Sayfa · Akademi · Robotik ve Kodlama · Python Temelleri · Proje: Basit Spor İstatistikleri

Proje: Basit Spor İstatistikleri

Örnek antrenman verileriyle toplam, ortalama ve en yüksek değeri hesaplayıp özet yazan bir program yaz.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bu projede örnek antrenman verilerini bir listede toplayıp, bir döngü ve bir fonksiyonla toplam, ortalama ve en yüksek değeri hesaplayarak kısa bir spor özeti yazdırıyoruz.

Üretilecek kanıt

Kendi verinle dene: antrenman_dakikalari listesindeki sayıları kendi bu haftanki değerlerinle değiştir. Listeye bir gün daha ekle, örneğin sonuna 70 yaz. Gün sayısının 8 olduğunu doğrula. Programı çalıştır ve yeni toplam, ortalama ve en yüksek değerin doğru olup olmadığını elle kontrol et. Geliştirme: En kısa antrenmanı da bul. if dakika > en_yuksek yerine…

Kontrol tuzağı

Toplamı döngünün içinde sıfırlamak toplam = 0 satırını yanlışlıkla döngünün içine koyarsan, her turda toplam sıfırlanır ve sonuç yanlış çıkar. # Yanlış for dakika in antrenman_dakikalari: toplam = 0 toplam = toplam + dakika Düzeltme: toplam = 0 satırı döngüden önce , girintisiz olmalı. Girinti hatası Döngünün içindeki…

Sonraki bağlantı

Web Temelleri modülü: Python’la kazandığın programlama mantığını, web sayfalarının nasıl kurulduğunu öğrenerek yeni bir alana taşıyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulProje: Ders Programı Kontrolü
İçerikProje rehberi · 1.634 kelime
Son güncelleme

Bir cümlelik özet

Bu projede örnek antrenman verilerini bir listede toplayıp, bir döngü ve bir fonksiyonla toplam, ortalama ve en yüksek değeri hesaplayarak kısa bir spor özeti yazdırıyoruz.

Neden önemli?

Ben sporu seviyorum ve bir antrenmandan sonra “bu hafta ne kadar çalıştım?” diye merak ediyorum. Bu soruları defterde tek tek toplamak yerine bilgisayara yaptırmayı denedim. İşte veri analizinin ilk adımı budur: veri (elimizdeki sayılar) toplanır, hesaplanır ve kısa bir özet olarak sunulur.

Bu ders, önceki modüllerde öğrendiğimiz üç fikri tek bir projede birleştiriyor: liste ile veriyi saklamak, döngü ile her sayıyı sırayla işlemek, fonksiyon ile aynı hesabı tekrar tekrar kullanmak. Aynı yöntem sonra oyun puanları, harçlık ya da sıcaklık ölçümleri için de çalışır.

Küçük bir projeyi baştan sona bitirmenin ayrı bir değeri var. Tek tek komutları öğrenmek başka şeydir; onları bir araya getirip çalışan, işe yarayan bir program yazmak başka şeydir. Bu derste tam da bunu deneyeceğiz: küçük parçalarla başlayıp, her adımı test ederek, sonunda kendi verimizle çalışan bir özet aracına ulaşacağız. Bir hata çıkarsa da onu nasıl bulup düzelttiğimizi birlikte göreceğiz.

Not: Buradaki sayılar gerçek bir istatistik değil, öğretici örnek verilerdir. Sen kendi gerçek dakikalarını da yazabilirsin.

Projeyi parça parça kuralım

Programı tek seferde yazmak yerine küçük parçalara böleceğiz. Her parçayı çalıştırıp doğru olduğundan emin olduktan sonra bir sonrakine geçmek en güvenli yoldur.

1. Veriyi bir listeye koymak

Liste, birden çok değeri tek bir isim altında sıralı biçimde tutan bir yapıdır. Köşeli parantez [ ] içine, virgülle ayırarak yazarız.

# Örnek antrenman dakikaları (öğretici veri)
antrenman_dakikalari = [30, 45, 60, 40, 50, 55, 35]

print("Gün sayısı:", len(antrenman_dakikalari))
print("İlk gün:", antrenman_dakikalari[0])

Listedeki her öğenin bir sıra numarası (indeks) vardır ve sayma 0’dan başlar. Bu yüzden antrenman_dakikalari[0] ilk günü verir. len(...) ise listedeki öğe sayısını söyler; burada 7.

2. Toplamı ve ortalamayı hesaplamak

Şimdi listedeki her sayıyı sırayla gezip bir toplama ekleyeceğiz. Bunun için döngü kullanırız.

antrenman_dakikalari = [30, 45, 60, 40, 50, 55, 35]

toplam = 0
for dakika in antrenman_dakikalari:
    toplam = toplam + dakika

ortalama = toplam / len(antrenman_dakikalari)

print("Toplam dakika:", toplam)
print("Ortalama dakika:", round(ortalama, 1))

Burada for dakika in antrenman_dakikalari: satırı listeyi baştan sona dolaşır; dakika her turda bir sonraki değeri alır. Döngünün içindeki satırın 4 boşluk içeride (girintili) olması çok önemlidir: Python, bir bloğun nerede başlayıp bittiğini bu girintiden anlar. Girinti yanlışsa program çalışmaz.

ortalama için toplamı gün sayısına böleriz. round(ortalama, 1) sonucu bir ondalık basamağa yuvarlar. Çıktı: toplam 315, ortalama 45.0.

3. En yüksek değeri bulmak

En uzun antrenmanı bulmak için bir “şu ana kadarki en yüksek” değişkeni tutarız ve her sayıyı onunla karşılaştırırız.

antrenman_dakikalari = [30, 45, 60, 40, 50, 55, 35]

en_yuksek = antrenman_dakikalari[0]
for dakika in antrenman_dakikalari:
    if dakika > en_yuksek:
        en_yuksek = dakika

print("En uzun antrenman:", en_yuksek)

Başlangıçta en_yukseki listenin ilk değerine eşitledik. Döngü, daha büyük bir sayı bulursa en_yukseki günceller. Böylece liste bitene kadar elimizde hep “o ana dek görülen en büyük değer” kalır. Çıktı: 60.

if dakika > en_yuksek: satırı bir koşuldur: yalnız içindeki karşılaştırma doğru olduğunda alt satır çalışır. Koşulun içindeki satırın iki kat girintili olduğuna dikkat et; önce for bloğu, onun içinde de if bloğu var.

Kodu bir fonksiyonda toplamak

Aynı hesabı farklı listeler için tekrar tekrar kullanmak istersek, kodu bir fonksiyon içine koyarız. Fonksiyon, bir isim verdiğimiz ve istediğimizde çağırdığımız hazır bir işlem paketidir.

Tam kod

# Örnek antrenman verisi (gerçek istatistik değil, öğretici)
antrenman_dakikalari = [30, 45, 60, 40, 50, 55, 35]

def istatistik_ozeti(veri):
    toplam = 0
    for dakika in veri:
        toplam = toplam + dakika
    ortalama = toplam / len(veri)
    en_yuksek = veri[0]
    for dakika in veri:
        if dakika > en_yuksek:
            en_yuksek = dakika
    return toplam, ortalama, en_yuksek

toplam, ortalama, en_yuksek = istatistik_ozeti(antrenman_dakikalari)

print("Gün sayısı:", len(antrenman_dakikalari))
print("Toplam dakika:", toplam)
print("Ortalama dakika:", round(ortalama, 1))
print("En uzun antrenman:", en_yuksek)

def istatistik_ozeti(veri): satırı fonksiyonu tanımlar. veri, fonksiyona verdiğimiz listenin fonksiyon içindeki adıdır. return ile üç sonucu birden geri gönderiyoruz ve dışarıda üç değişkende karşılıyoruz.

Test edelim

Kodu bir dosyaya kaydedip terminalde python3 dosya.py ile çalıştırdığımızda şunu görürüz:

Gün sayısı: 7
Toplam dakika: 315
Ortalama dakika: 45.0
En uzun antrenman: 60

Sonucu elle kontrol edelim: 30+45+60+40+50+55+35 = 315, 315 / 7 = 45, en büyük sayı 60. Program doğru çalışıyor.

Mini uygulama

Kendi verinle dene:

  1. antrenman_dakikalari listesindeki sayıları kendi bu haftanki değerlerinle değiştir.
  2. Listeye bir gün daha ekle, örneğin sonuna 70 yaz. Gün sayısının 8 olduğunu doğrula.
  3. Programı çalıştır ve yeni toplam, ortalama ve en yüksek değerin doğru olup olmadığını elle kontrol et.
  4. Geliştirme: En kısa antrenmanı da bul. if dakika > en_yuksek yerine if dakika < en_dusuk mantığını kullanan yeni bir bölüm yaz.

Geliştirme için ipucu:

en_dusuk = antrenman_dakikalari[0]
for dakika in antrenman_dakikalari:
    if dakika < en_dusuk:
        en_dusuk = dakika

print("En kısa antrenman:", en_dusuk)

Daha ileri bir adım olarak, ortalamanın üstünde kaç gün çalıştığını sayabilirsin:

ustunde = 0
for dakika in antrenman_dakikalari:
    if dakika > ortalama:
        ustunde = ustunde + 1

print("Ortalamanın üstünde gün:", ustunde)

Projeyi güçlendirme planı

Proje: Basit Spor İstatistikleri için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında bir dosyadaki satırları okuyup basit özet çıkaran araç bağlamını kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar oluştur. Dersin hedefi “Örnek antrenman verileriyle toplam, ortalama ve en yüksek değeri hesaplayıp özet yazan bir program yaz” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.

1. Proje özeti ve kapsam

Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Projeyi parça parça kuralım ile 2. Toplamı ve ortalamayı hesaplamak arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.

2. Kabul ölçütleri

“Proje: Basit Spor İstatistikleri” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.

3. Test matrisi

3. Test matrisi tablosu
TestKoşulBeklenenGerçek sonuçSonraki karar
NormalStandart giriş ve tam bağlantıTemel görev tamamlanırTest sırasında doldurKoru veya küçük iyileştirme yap
SınırEn düşük ya da en yüksek kabul edilen değerSistem kararlı kalırTest sırasında doldurEşiği veya kuralı gözden geçir
HataEksik, yanlış ya da beklenmeyen girişGüvenli ve anlaşılır tepkiTest sırasında doldurHata yönetimi ekle
TekrarAynı koşulda en az üç denemeBenzer sonuçlarTest sırasında doldurTutarsızlığın kaynağını araştır

4. Sürüm günlüğü

“Proje: Basit Spor İstatistikleri” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Projeyi parça parça kuralım veya 2. Toplamı ve ortalamayı hesaplamak ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.

5. Sunum ve öz değerlendirme

“Proje: Basit Spor İstatistikleri” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, bir dosyadaki satırları okuyup basit özet çıkaran araç için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.

Sık yapılan hatalar

Toplamı döngünün içinde sıfırlamak

toplam = 0 satırını yanlışlıkla döngünün içine koyarsan, her turda toplam sıfırlanır ve sonuç yanlış çıkar.

# Yanlış
for dakika in antrenman_dakikalari:
    toplam = 0
    toplam = toplam + dakika

Düzeltme: toplam = 0 satırı döngüden önce, girintisiz olmalı.

Girinti hatası

Döngünün içindeki satırları girintilemezsen Python IndentationError verir. Her blok satırı 4 boşluk içeride olmalı.

en_yukseki sıfırdan başlatmak

en_yuksek = 0 yazmak bu örnekte çalışır, ama tüm sayılar negatif olsaydı (örneğin sıcaklık ölçümleri) hep yanlış 0 sonucunu verirdi. Listenin ilk öğesinden başlamak daha güvenlidir.

Boş liste

Liste boşsa toplam / len(veri) işlemi sıfıra bölme hatası verir. Gerçek projede önce listede en az bir öğe olduğunu kontrol etmek gerekir.

Güvenlik notu

Bu ders tamamen kendi bilgisayarında, kendi yazdığın kodu çalıştırmakla ilgilidir. İnternetten bulduğun ve ne yaptığını anlamadığın kodları çalıştırma. Verilerini yazarken gerçek adres, telefon ya da okul gibi kişisel bilgileri koda ekleme; örnek sayılar yeterlidir.

Adil karşılaştırma kuralı

İki antrenmanı karşılaştırmadan önce ölçüm tanımı, birim, süre ve koşulların aynı olup olmadığı kontrol edilir. Eksik veya farklı yöntemle toplanan bir veri sessizce ortalamaya katılmaz; açıklama alanında işaretlenir. Böylece grafik düzenli görünse bile gerçekte karşılaştırılamayan ölçümlerin yanlış bir başarı hikâyesi oluşturması engellenir.

Ders özeti

Kontrol soruları

  1. antrenman_dakikalari[0] hangi günün değerini verir ve neden?
  2. toplam = 0 satırı neden döngüden önce yazılmalı?
  3. Ortalamayı hesaplamak için hangi iki değeri birbirine böleriz?
  4. en_yuksek = veri[0] yerine en_yuksek = 0 yazmak hangi durumda yanlış sonuç verir?
  5. def anahtar kelimesi ne işe yarar?

Cevaplar

  1. İlk günün değerini verir; çünkü listede sayma 0’dan başlar, yani ilk öğenin indeksi 0’dır.
  2. Toplamı döngüden önce sıfırlarız; döngü içine koyarsak her turda sıfırlanır ve yalnız son değeri elde ederiz.
  3. Toplamı, listedeki öğe sayısına (len(veri)) böleriz.
  4. Tüm değerler negatifse (örneğin negatif sıcaklıklar) 0 gerçekte listede olmadığı hâlde en yüksek gibi görünür ve sonuç yanlış olur.
  5. def, yeni bir fonksiyon tanımlar; yani bir isim verdiğimiz ve istediğimizde çağırdığımız hazır bir işlem paketi oluşturur.

Kaynak ve doğrulama notu

“Proje: Basit Spor İstatistikleri” dersi için doğrulama odağı Projeyi parça parça kuralım ile 2. Toplamı ve ortalamayı hesaplamak arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.

Sonraki ders

Web Temelleri modülü: Python’la kazandığın programlama mantığını, web sayfalarının nasıl kurulduğunu öğrenerek yeni bir alana taşıyoruz.

Quiz’i BaşlatPython Temelleri bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.