86 lines
4.0 KiB
Plaintext
86 lines
4.0 KiB
Plaintext
# Girdi: kullanıcıdan satır okumak, sayıya çevirmek ve okunanla hesap yapmak
|
|||
|
|
#
|
||
|
|
# Bu program beş satır okur: ad, doğum yılı, kilo, boy ve kitap sayısı.
|
||
|
|
# IDE'de girdiler aynı klasördeki girdi.txt dosyasından gelir; her satır,
|
||
|
|
# kullanıcının yazıp Enter'a bastığı bir cevap gibidir.
|
||
|
|
# Uçbirimde çalıştırırsan soruları görür, cevapları kendin yazarsın.
|
||
|
|
|
||
|
|
kullan kaba.sistem
|
||
|
|
|
||
|
|
# Soruları yalnız karşıda gerçekten bir insan varsa yazdıralım. Girdi bir
|
||
|
|
# dosyadan geliyorsa sorular kimseye hitap etmez, çıktıyı kalabalıklaştırır.
|
||
|
|
# etkilesimli_mi() bunu söyler: dogru ise klavyeden, yanlis ise dosyadan okuyoruz.
|
||
|
|
etkilesimli = konsol.etkilesimli_mi()
|
||
|
|
|
||
|
|
# ── 1. Bir satır metin okumak ─────────────────────────────────
|
||
|
|
# konsol.yaz() yazdir() gibidir ama satırı bitirmez; imleç sorunun yanında kalır.
|
||
|
|
eger etkilesimli:
|
||
|
|
konsol.yaz("Adınız: ")
|
||
|
|
|
||
|
|
# satir_oku() bir satır okur. Ama girdi bitmiş de olabilir; bu yüzden sonuç
|
||
|
|
# "ya bir satır ya hiçbir şey" taşıyan bir kutudur. deger_veya("misafir")
|
||
|
|
# kutuda satır varsa onu, yoksa "misafir"i verir. kirp() baştaki ve sondaki
|
||
|
|
# boşlukları atar.
|
||
|
|
ad = konsol.satir_oku().deger_veya("misafir").kirp()
|
||
|
|
|
||
|
|
# ── 2. Bir tam sayı okumak ve denetlemek ──────────────────────
|
||
|
|
eger etkilesimli:
|
||
|
|
konsol.yaz("Doğum yılınız: ")
|
||
|
|
|
||
|
|
# sayi_oku() satırı okur ve tam sayıya çevirmeyi dener. Sonuç iki şeyden biridir:
|
||
|
|
# başarı (içinde sayı) ya da hata (içinde nedeni). tamam_mi() hangisi olduğunu söyler.
|
||
|
|
# (Burada soruyu yukarıda kendimiz yazdığımız için sayi_oku'ya boş istem veriyoruz.)
|
||
|
|
yil_sonucu = konsol.sayi_oku("")
|
||
|
|
|
||
|
|
# Başarılıysa sayıyı deger() ile kutudan çıkarırız; değilse 2000 ile devam ederiz.
|
||
|
|
dogum_yili = 2000
|
||
|
|
eger yil_sonucu.tamam_mi():
|
||
|
|
dogum_yili = yil_sonucu.deger()
|
||
|
|
|
||
|
|
# ── 3. Ondalık sayı okumak ────────────────────────────────────
|
||
|
|
eger etkilesimli:
|
||
|
|
konsol.yaz("Kilonuz (kg): ")
|
||
|
|
kilo = ondalik(konsol.satir_oku().deger_veya("0").kirp())
|
||
|
|
|
||
|
|
eger etkilesimli:
|
||
|
|
konsol.yaz("Boyunuz (m): ")
|
||
|
|
boy = ondalik(konsol.satir_oku().deger_veya("0").kirp())
|
||
|
|
|
||
|
|
# ── 4. Hatalı bir girdi ───────────────────────────────────────
|
||
|
|
eger etkilesimli:
|
||
|
|
konsol.yaz("Bu ay kaç kitap okudunuz? ")
|
||
|
|
kitap_sonucu = konsol.sayi_oku("")
|
||
|
|
|
||
|
|
# ── Okunanlarla hesap ─────────────────────────────────────────
|
||
|
|
# Bu yılı saatten alıyoruz: zaman.bicimlendir("%Y") "2026" gibi bir metin verir.
|
||
|
|
bu_yil = sayi(zaman.bicimlendir("%Y"))
|
||
|
|
yas = bu_yil - dogum_yili
|
||
|
|
|
||
|
|
# Vücut kitle indeksi: kilo / (boy * boy)
|
||
|
|
vki = kilo / (boy * boy)
|
||
|
|
|
||
|
|
yazdir(f"Merhaba {ad}!")
|
||
|
|
yazdir(f"Adınız boşluk dahil {ad.uzunluk()} karakter.")
|
||
|
|
|
||
|
|
eger yil_sonucu.tamam_mi():
|
||
|
|
yazdir(f"{dogum_yili} doğumlusunuz; bu yıl {yas} yaşına giriyorsunuz.")
|
||
|
|
degilse:
|
||
|
|
yazdir("Doğum yılı okunamadı: " + yil_sonucu.hata().mesaj())
|
||
|
|
|
||
|
|
yazdir(f"Kilo {kilo} kg, boy {boy} m → vücut kitle indeksi {vki:.1f}")
|
||
|
|
|
||
|
|
# "on iki" bir sayı değil: sayi_oku bunu hata olarak bildirir, program çökmez.
|
||
|
|
eger kitap_sonucu.tamam_mi():
|
||
|
|
yazdir(f"Bu ay {kitap_sonucu.deger()} kitap okumuşsunuz.")
|
||
|
|
degilse:
|
||
|
|
yazdir("Kitap sayısı anlaşılamadı: " + kitap_sonucu.hata().mesaj())
|
||
|
|
yazdir(" (Rakamla yazmayı deneyin, örneğin 12.)")
|
||
|
|
|
||
|
|
# ── Girdinin sonu ─────────────────────────────────────────────
|
||
|
|
# Beş satırın hepsini okuduk. Bir kez daha okumaya kalkarsak kutu boş gelir:
|
||
|
|
# bos_mu() "okunacak satır kalmadı" demektir. Bu, boş bir satırla aynı şey değildir;
|
||
|
|
# yalnız Enter'a basılan satır, içi boş bir metin olarak gelir.
|
||
|
|
fazla = konsol.satir_oku()
|
||
|
|
eger fazla.bos_mu():
|
||
|
|
yazdir("Girdi bitti; okunacak başka satır yok.")
|