📝 Açıklama
Bu web uygulaması, aşağıdaki Python kodunun tam JavaScript çevirisidir. Tüm Python yapıları (if-elif-else, for, while, try-except, def, input validasyonları, tip dönüşümleri) web versiyonunda da mevcuttur.
Python Özellikleri: Type conversion (int, float, string), Boolean değerler, Döngüler (for, while), Koşullar (if-elif-else), Fonksiyonlar (def), Hata yakalama (try-except), Input validasyonları
Kopyala # Gelişmiş Tarımsal Faaliyet Simülasyonu
# Tüm Python yapıları içeren kapsamlı uygulama
import sys
from datetime import datetime
def banner_goster():
"""Uygulama başlangıç banner'ını gösterir"""
print("=" * 80)
print(" " * 20 + "TARIMSAL FAALİYET SİMÜLASYONU")
print(" " * 25 + "Versiyon 2.0 - 2025")
print("=" * 80)
print()
def sayisal_giris_al(mesaj, tip="float", min_deger=None, max_deger=None):
"""
Kullanıcıdan sayısal veri alır ve doğrulama yapar
Hatalı giriş durumunda tekrar ister
"""
while True:
try:
girdi = input(mesaj).strip()
if tip == "int":
deger = int(girdi)
elif tip == "float":
deger = float(girdi)
else:
deger = float(girdi)
# Değer aralığı kontrolü
if min_deger is not None and deger < min_deger:
print(f"❌ HATA: Değer en az {min_deger} olmalıdır!")
continue
if max_deger is not None and deger > max_deger:
print(f"❌ HATA: Değer en fazla {max_deger} olmalıdır!")
continue
return deger
except ValueError:
if tip == "int":
print(f"❌ HATA: Lütfen geçerli bir tam sayı giriniz!")
else:
print(f"❌ HATA: Lütfen geçerli bir sayı giriniz!")
except Exception as e:
print(f"❌ Beklenmeyen hata: {e}")
def evet_hayir_al(mesaj):
"""Boolean döndüren evet/hayır sorusu"""
while True:
try:
cevap = input(mesaj).strip().upper()
if cevap in ["E", "EVET", "Y", "YES"]:
return True
elif cevap in ["H", "HAYIR", "N", "NO"]:
return False
else:
print("❌ HATA: Lütfen 'E' (Evet) veya 'H' (Hayır) giriniz!")
except Exception as e:
print(f"❌ Beklenmeyen hata: {e}")
def alan_hesapla(uzunluk, genislik):
"""Tarla alanını hesaplar (m²)"""
return float(uzunluk) * float(genislik)
def hektar_donustur(metrekare):
"""Metrekareyi hektara çevirir"""
return metrekare / 10000.0
def mahsul_secimi_menu():
"""Mahsul seçim menüsünü gösterir ve seçim alır"""
mahsuller = {
1: {"ad": "Buğday", "hasat_gun": 120, "verim": 450},
2: {"ad": "Mısır", "hasat_gun": 90, "verim": 600},
3: {"ad": "Domates", "hasat_gun": 75, "verim": 800},
4: {"ad": "Patates", "hasat_gun": 100, "verim": 550},
5: {"ad": "Arpa", "hasat_gun": 110, "verim": 400},
6: {"ad": "Pamuk", "hasat_gun": 150, "verim": 350}
}
while True:
try:
print("\n" + "─" * 60)
print("MAHSUL SEÇİM MENÜSÜ")
print("─" * 60)
for anahtar, bilgi in mahsuller.items():
print(f"{anahtar}. {bilgi['ad']:<15} | Hasat Süresi: {bilgi['hasat_gun']} gün | "
f"Verim: {bilgi['verim']} kg/dekar")
print("─" * 60)
secim = sayisal_giris_al("Mahsul numarasını seçiniz (1-6): ", "int", 1, 6)
return mahsuller[secim]
except KeyError:
print("❌ HATA: Geçersiz seçim!")
except Exception as e:
print(f"❌ Beklenmeyen hata: {e}")
def bakim_turu_belirle(gun):
"""
Switch-case benzeri yapı: Belirli günlerde yapılacak bakım işlemlerini döndürür
Python 3.10+ match-case kullanımı
"""
# Klasik if-elif-else yapısı (tüm Python sürümleri için)
if gun == 1:
return "🌱 Ekim işlemi ve tohum atımı"
elif gun == 5:
return "🔬 Toprak analizi ve pH ölçümü"
elif gun == 10:
return "💧 İlk sulama işlemi"
elif gun == 15:
return "🌿 Filizlenme kontrolü"
elif gun == 20:
return "🧪 Mineral gübre uygulaması"
elif gun == 30:
return "🦗 Zararlı ve haşere kontrolü"
elif gun == 40:
return "💦 Yoğun sulama dönemi başlangıcı"
elif gun == 50:
return "🌾 Bitki boyu ölçümü ve değerlendirme"
elif gun == 60:
return "🧬 Organik gübre takviyesi"
elif gun == 70:
return "🔍 Hastalık ve mantar kontrolü"
elif gun == 80:
return "💨 Havalandırma ve toprak gevşetme"
elif gun == 90:
return "🌡️ İklim uyum değerlendirmesi"
elif gun == 100:
return "📊 Hasat öncesi verim tahmini"
elif gun == 110:
return "🚜 Hasat ekipmanları hazırlığı"
elif gun % 7 == 0: # Her 7 günde bir
return "📋 Haftalık genel kontrol ve raporlama"
else:
return None
def hasat_kontrolu(mahsul_bilgi, gun):
"""Hasat zamanı gelip gelmediğini kontrol eder - Boolean döndürür"""
return gun >= mahsul_bilgi["hasat_gun"]
def verim_hesapla(alan_dekar, mahsul_bilgi, verimlilik_katsayisi):
"""Toplam verimi hesaplar"""
return alan_dekar * mahsul_bilgi["verim"] * verimlilik_katsayisi
def hava_durumu_simulasyon(gun):
"""
Hava durumu simülasyonu yapar
String değerler döndürür
"""
# Gün sayısına göre basit hava durumu simulasyonu
hava_kodu = gun % 5
if hava_kodu == 0:
return "☀️ Güneşli", 1.0
elif hava_kodu == 1:
return "⛅ Parçalı Bulutlu", 0.95
elif hava_kodu == 2:
return "☁️ Bulutlu", 0.9
elif hava_kodu == 3:
return "🌧️ Yağmurlu", 0.85
else:
return "⛈️ Fırtınalı", 0.75
def tarla_bilgileri_al():
"""Tarla bilgilerini kullanıcıdan alır"""
print("\n" + "=" * 60)
print("TARLA BİLGİLERİ GİRİŞİ")
print("=" * 60)
while True:
try:
uzunluk = sayisal_giris_al("Tarlanın uzunluğunu metre cinsinden giriniz: ",
"float", min_deger=1.0)
genislik = sayisal_giris_al("Tarlanın genişliğini metre cinsinden giriniz: ",
"float", min_deger=1.0)
alan_m2 = alan_hesapla(uzunluk, genislik)
alan_dekar = alan_m2 / 1000.0 # 1 dekar = 1000 m²
alan_hektar = hektar_donustur(alan_m2)
print(f"\n📏 Tarla Ölçüleri:")
print(f" • Alan: {alan_m2:.2f} m²")
print(f" • Alan: {alan_dekar:.2f} dekar")
print(f" • Alan: {alan_hektar:.4f} hektar")
onay = evet_hayir_al("\nBu bilgiler doğru mu? (E/H): ")
if onay:
return uzunluk, genislik, alan_m2, alan_dekar, alan_hektar
else:
print("\n🔄 Bilgiler yeniden alınıyor...\n")
except Exception as e:
print(f"❌ Hata oluştu: {e}")
def simulasyon_hizi_sec():
"""Simülasyon hızını seçer"""
print("\n" + "─" * 60)
print("SİMÜLASYON HIZI SEÇİMİ")
print("─" * 60)
print("1. Detaylı (Her gün ayrı gösterilir)")
print("2. Hızlı (Sadece önemli günler gösterilir)")
print("3. Özet (Sadece haftalık özetler)")
print("─" * 60)
secim = sayisal_giris_al("Seçiminiz (1-3): ", "int", 1, 3)
return secim
def gunluk_simulasyon(mahsul_bilgi, alan_dekar, sim_hizi):
"""
Günlük simülasyon döngüsü
For döngüsü ve tüm kontrol yapıları burada kullanılır
"""
hasat_gunu = mahsul_bilgi["hasat_gun"]
toplam_verimlilik = 0.0
gun_sayaci = 0
hasat_yapildi = False
haftalik_rapor = []
print(f"\n{'=' * 80}")
print(f"🌾 {mahsul_bilgi['ad'].upper()} İÇİN SİMÜLASYON BAŞLIYOR")
print(f"{'=' * 80}\n")
# Ana simülasyon döngüsü - FOR kullanımı
for gun in range(1, hasat_gunu + 21): # Hasat sonrası 20 gün daha
gun_sayaci += 1
# Hava durumu simülasyonu
hava, verimlilik_etkisi = hava_durumu_simulasyon(gun)
toplam_verimlilik += verimlilik_etkisi
# Bakım işlemi kontrolü
bakim = bakim_turu_belirle(gun)
# Simülasyon hızına göre gösterim - IF-ELIF-ELSE kullanımı
goster = False
if sim_hizi == 1: # Detaylı mod
goster = True
elif sim_hizi == 2: # Hızlı mod
if bakim or gun % 10 == 0:
goster = True
elif sim_hizi == 3: # Özet mod
if gun % 7 == 0:
goster = True
if goster:
print(f"📅 Gün {gun:3d} | {hava:<20} | Verimlilik: {verimlilik_etkisi:.2f}")
if bakim:
print(f" └─➤ {bakim}")
# Haftalık rapor toplama
if gun % 7 == 0:
ort_verimlilik = toplam_verimlilik / 7
haftalik_rapor.append({
"hafta": gun // 7,
"verimlilik": ort_verimlilik
})
if sim_hizi == 3:
print(f" 📊 Hafta {gun // 7} Özeti - Ortalama Verimlilik: {ort_verimlilik:.2f}")
toplam_verimlilik = 0.0
# Hasat kontrolü - Boolean kullanımı
hasat_zamani_geldi = hasat_kontrolu(mahsul_bilgi, gun)
if hasat_zamani_geldi and not hasat_yapildi:
print(f"\n{'🎉' * 40}")
print(f"🌾 GÜN {gun}: HASAT ZAMANI GELDİ!")
print(f"{'🎉' * 40}\n")
# Verim hesaplama
ortalama_verimlilik = sum(h["verimlilik"] for h in haftalik_rapor) / len(haftalik_rapor)
toplam_urun = verim_hesapla(alan_dekar, mahsul_bilgi, ortalama_verimlilik)
print(f"📊 HASAT RAPORU:")
print(f" • Mahsul: {mahsul_bilgi['ad']}")
print(f" • Hasat Günü: {gun}")
print(f" • Tarla Alanı: {alan_dekar:.2f} dekar")
print(f" • Ortalama Verimlilik Katsayısı: {ortalama_verimlilik:.2f}")
print(f" • Toplam Ürün: {toplam_urun:.2f} kg")
print(f" • Ton Cinsinden: {toplam_urun / 1000:.2f} ton")
hasat_yapildi = True
# Hasat sonrası 5 gün daha devam edip bitir
devam_et = evet_hayir_al("\nHasat sonrası 20 günlük takibe devam edilsin mi? (E/H): ")
if not devam_et:
break
print(f"\n{'=' * 80}")
print(f"✅ {mahsul_bilgi['ad'].upper()} SİMÜLASYONU TAMAMLANDI")
print(f"{'=' * 80}\n")
return hasat_yapildi
def istatistik_goster(tamamlanan_simulasyonlar):
"""Genel istatistikleri gösterir"""
if not tamamlanan_simulasyonlar:
print("\n⚠️ Henüz tamamlanmış simülasyon bulunmuyor.")
return
print(f"\n{'=' * 80}")
print("📊 GENEL İSTATİSTİKLER")
print(f"{'=' * 80}")
toplam_sim = len(tamamlanan_simulasyonlar)
print(f"✓ Toplam Tamamlanan Simülasyon: {toplam_sim}")
for idx, sim in enumerate(tamamlanan_simulasyonlar, 1):
print(f"\n{idx}. Simülasyon:")
print(f" • Mahsul: {sim['mahsul']}")
print(f" • Alan: {sim['alan']:.2f} dekar")
print(f" • Durum: {'✅ Hasat Yapıldı' if sim['hasat'] else '❌ Hasat Yapılmadı'}")
print(f"\n{'=' * 80}\n")
def main():
"""Ana program fonksiyonu"""
banner_goster()
# Kullanıcı bilgisi al
print("Hoş geldiniz! Lütfen önce kendinizi tanıtın.\n")
while True:
try:
kullanici_adi = input("Adınız: ").strip()
if len(kullanici_adi) < 2:
print("❌ HATA: Ad en az 2 karakter olmalıdır!")
continue
if not kullanici_adi.replace(" ", "").isalpha():
print("❌ HATA: Ad sadece harflerden oluşmalıdır!")
continue
break
except Exception as e:
print(f"❌ Hata: {e}")
print(f"\nMerhaba {kullanici_adi}! 👋\n")
# Simülasyon geçmişi
tamamlanan_simulasyonlar = []
# Ana döngü - WHILE kullanımı
while True:
try:
print("\n" + "🌾" * 40)
print("\nYeni bir simülasyon başlatılıyor...\n")
# Tarla bilgilerini al
uzunluk, genislik, alan_m2, alan_dekar, alan_hektar = tarla_bilgileri_al()
# Mahsul seç
mahsul_bilgi = mahsul_secimi_menu()
# Simülasyon hızı seç
sim_hizi = simulasyon_hizi_sec()
# Onay al
print(f"\n📋 SİMÜLASYON ÖZETİ:")
print(f" • Çiftçi: {kullanici_adi}")
print(f" • Mahsul: {mahsul_bilgi['ad']}")
print(f" • Alan: {alan_dekar:.2f} dekar")
print(f" • Tahmini Hasat Süresi: {mahsul_bilgi['hasat_gun']} gün")
basla = evet_hayir_al("\nSimülasyonu başlatmak istiyor musunuz? (E/H): ")
if not basla:
print("❌ Simülasyon iptal edildi.")
continue
# Simülasyonu çalıştır
hasat_durumu = gunluk_simulasyon(mahsul_bilgi, alan_dekar, sim_hizi)
# Simülasyon geçmişine ekle
tamamlanan_simulasyonlar.append({
"mahsul": mahsul_bilgi["ad"],
"alan": alan_dekar,
"hasat": hasat_durumu
})
# İstatistikleri göster
istatistik_goster(tamamlanan_simulasyonlar)
# Devam kontrolü
devam = evet_hayir_al("Yeni bir simülasyon başlatmak ister misiniz? (E/H): ")
if not devam:
print(f"\n{'🌾' * 40}")
print(f"\n👋 Hoşça kalın {kullanici_adi}!")
print(f"Toplam {len(tamamlanan_simulasyonlar)} simülasyon tamamladınız.")
print("\n" + "🌾" * 40 + "\n")
break
except KeyboardInterrupt:
print("\n\n⚠️ Program kullanıcı tarafından durduruldu.")
cikis = evet_hayir_al("Çıkmak istediğinize emin misiniz? (E/H): ")
if cikis:
print("Çıkılıyor...")
sys.exit(0)
except Exception as e:
print(f"\n❌ Beklenmeyen bir hata oluştu: {e}")
devam = evet_hayir_al("Programa devam etmek ister misiniz? (E/H): ")
if not devam:
break
if __name__ == "__main__":
try:
main()
except Exception as e:
print(f"\n❌ Kritik hata: {e}")
print("Program sonlandırılıyor...")
sys.exit(1)