Python ile Gelişmiş Görev Takip Uygulaması | Portfolyoya Eklenebilecek Gerçek Bir Proje
Python öğrenirken en büyük sorunlardan biri, teorik bilgileri gerçek hayatta kullanılabilecek projelere dönüştürememektir. Bu nedenle başlangıç ve orta seviye geliştiriciler için en faydalı yöntem, gerçek problemlere çözüm üreten uygulamalar geliştirmektir. Bu projede Python kullanarak terminal tabanlı gelişmiş bir görev takip uygulaması geliştireceğiz. Uygulama sayesinde kullanıcılar yeni görev ekleyebilecek, görevleri listeleyebilecek, tamamlanan görevleri işaretleyebilecek ve görevleri dosyaya kaydedebilecektir. Özellikle freelance çalışanlar, öğrenciler ve günlük iş planlaması yapmak isteyen kişiler için oldukça kullanışlı olan bu Python projesi, aynı zamanda portfolyoda profesyonel bir görüntü oluşturur.
Bu Python görev yönetim sistemi projesi içerisinde dosya işlemleri, listeler, döngüler, koşul yapıları (if-else), fonksiyonlar ve kullanıcıdan veri alma gibi temel ama kritik Python konuları kullanılmaktadır. Ayrıca proje içerisinde JSON dosyası kullanılarak veriler kalıcı hale getirilmektedir. Bu da projeyi basit eğitim uygulamalarından ayırarak gerçek dünya mantığına yaklaştırır. Kod yapısı modüler şekilde hazırlandığı için geliştirilmeye oldukça açıktır. İlerleyen süreçte bu uygulamaya kullanıcı girişi, tarih bazlı görev planlama, öncelik sistemi veya grafik arayüz gibi ekstra özellikler kolayca eklenebilir. Eğer GitHub profilinizi güçlendirecek, iş başvurularında dikkat çekecek ve aynı zamanda Python pratiği yaptıracak bir proje arıyorsanız bu uygulama oldukça iyi bir seçim olacaktır.
import json
import os
DOSYA_ADI = "gorevler.json"
def gorevleri_yukle():
if os.path.exists(DOSYA_ADI):
with open(DOSYA_ADI, "r", encoding="utf-8") as dosya:
return json.load(dosya)
return []
def gorevleri_kaydet(gorevler):
with open(DOSYA_ADI, "w", encoding="utf-8") as dosya:
json.dump(gorevler, dosya, ensure_ascii=False, indent=4)
def gorev_ekle(gorevler):
gorev = input("Yeni görev girin: ")
gorevler.append({
"gorev": gorev,
"tamamlandi": False
})
gorevleri_kaydet(gorevler)
print("Görev başarıyla eklendi.")
def gorevleri_listele(gorevler):
if not gorevler:
print("Henüz görev bulunmuyor.")
return
print("\nGörev Listesi:\n")
for i, gorev in enumerate(gorevler, start=1):
durum = "✓" if gorev["tamamlandi"] else "✗"
print(f"{i}. {gorev['gorev']} - {durum}")
def gorev_tamamla(gorevler):
gorevleri_listele(gorevler)
try:
secim = int(input("Tamamlanan görev numarasını girin: "))
if 1 <= secim <= len(gorevler):
gorevler[secim - 1]["tamamlandi"] = True
gorevleri_kaydet(gorevler)
print("Görev tamamlandı olarak işaretlendi.")
else:
print("Geçersiz görev numarası.")
except ValueError:
print("Lütfen sayı girin.")
def menu():
gorevler = gorevleri_yukle()
while True:
print("\n--- GÖREV TAKİP SİSTEMİ ---")
print("1. Görevleri Listele")
print("2. Yeni Görev Ekle")
print("3. Görev Tamamla")
print("4. Çıkış")
secim = input("Seçiminiz: ")
if secim == "1":
gorevleri_listele(gorevler)
elif secim == "2":
gorev_ekle(gorevler)
elif secim == "3":
gorev_tamamla(gorevler)
elif secim == "4":
print("Program kapatılıyor...")
break
else:
print("Geçersiz seçim yaptınız.")
menu()
Kodun Detaylı Satır Analizi
Kodun kalbi, dosya yönetimini ve kullanıcı etkileşimini sağlayan yapılardır. İşte detaylı inceleme:
if os.path.exists(DOSYA_ADI):: JSON dosyasının sistemde mevcut olup olmadığını kontrol eder. Eğer dosya varsa görevler yüklenir.gorevler.append({"gorev": gorev, "tamamlandi": False}): Kullanıcının eklediği yeni görevi listeye ekler ve başlangıçta tamamlanmadı olarak işaretler.for i, gorev in enumerate(gorevler, start=1):: Görev listesini numaralandırılmış şekilde ekrana yazdırır. Enumerate kullanımı Python'da oldukça önemlidir.json.dump(gorevler, dosya, ensure_ascii=False, indent=4): Tüm görevleri JSON formatında dosyaya kaydeder. Böylece program kapansa bile veriler silinmez.
Bu Proje Sizi Nasıl Geliştirir?
Bu proje sayesinde Python programlama dilinin en önemli yapı taşlarını gerçek bir uygulama üzerinde deneyimleme fırsatı elde edersiniz. Özellikle dosya işlemleri, veri saklama mantığı, kullanıcı etkileşimi, hata yönetimi ve fonksiyonel programlama konularında ciddi pratik kazandırır. Ayrıca terminal tabanlı uygulama geliştirme mantığını öğrenmek, daha sonra masaüstü uygulamalar veya web projeleri geliştirirken büyük avantaj sağlar. Bu projeyi daha ileri seviyeye taşımak için kullanıcı giriş sistemi ekleyebilir, görev öncelikleri oluşturabilir, SQLite veritabanı entegrasyonu yapabilir veya Tkinter ile grafik arayüz geliştirebilirsiniz. Hatta Flask veya Django kullanarak bu sistemi web tabanlı bir görev yönetim platformuna dönüştürmek bile mümkündür. GitHub portfolyonuzda yer alabilecek bu tarz gerçek hayata yönelik projeler, işverenlerin dikkatini çekmenize ve Python bilginizi somut şekilde göstermenize yardımcı olur.
