Bana kod yazmayı öğret baba – Bölüm 9

En son ne diyorduk? len, min, max, input, print gibi şeyler nasıl çalışıyor? Ben len(“kelime”) yazdığımda Python nasıl “hadi len?” demiyor da, “Bu string’in kaç karakter olduğunu hesaplamam gerekiyor,” diyor? Efendim, iyilik timsali bir insan, ki kendisi Python dilini geliştirenlerden biri, vakti zamanında oturmuş bu fonksiyonu yazmış. Bu fonksiyon test edilmiş, onaylanmış ve Python diline eklenmesi karar verilmiş. O yüzden siz len(“kelime”) yazdığınızda Python hiç yabancılık çekmiyor ve hata almıyorsunuz. Halbuki mehmet(“kelime”) yazsanız hemen bir “Mehmet mi o da ne? Ben anlamıyor Mehmet,” hatası alırsınız. Peki bu iyilik timsali insan gibi, biz de kendi fonksiyonlarımızı yazabilir miyiz? Bunun cevabı evet ve ne bekliyoruz cidden? Unutanlar için compiler’ımız burada.

def dairenin_alanini_ver(r):
  return 3.14 * r * r
def dikdortgenin_cevresi(kenar1, kenar2):
  cevre = 2 * (kenar1 + kenar2)
  return cevre
yaricap = input("Dairenizin yari capi?")
yaricap = float(yaricap)
alan = dairenin_alanini_ver(yaricap)
print(alan)
c = str(dikdortgenin_cevresi(3, 5))
print("Kenarlari 3 ve 5 olan dikdortgenin cevresi de " + c)

Şimdi bir fonksiyonun anatomisine bakalım:

  • Fonksiyonun ismi: Bugüne kadar hiç görmediğimiz yeni bir sihirli kelime kullandık: “def”. Def muhtemelen ingilizcedeki define’ın (tanımla) kısaltılması. def’in arkasından gelen, fonksiyonumuzun ismi. Fonksiyon isminde cümle aleme örnek olsun diye gayet amacımızı belirten bir şey kullandım (Dikdörtgenin çevresi/Dairenin alanını ver). Emir kipinde ve çok kibar bir tabir olmasa da  amacımızın ne olduğu konusunda gayet açıklayıcı. Eh, önemli olan da bu zaten.
  • Fonksiyonunu parametreleri: Fonksiyon isminden sonra parantez açıp kenar1 ve kenar2 yazıyoruz. Bunlar işte fırına vereceğimiz üzümlü kekin yumurtası ve şekeri. Fonksiyonun içine girip çeşitli işlemlere tabi tutulacaklar ve sonuçta bambaşka bir şey çıkacak.
  • Fonksiyonun egemenlik alanı: Parametreleri tanımlayıp parantezi kapattıktan sonra hemen bir “:” geliyor. Sonrası daha önce while ve if’te gördüğümüz hikayenin aynısı. Aynen while ve if’de olduğu gibi o satırdan sonra fonksiyonumuzun egemenlik alanı bir satır içeriden başlıyor. Oranın içinde fonksiyon dünyasında yaşanan olaylar vukua gelecek ve compiler’imiz ancak fonksiyon çağırılırsa oraya gidecek.
  • Fonksiyonun sonucu: Burada yeni bir sihirli kelime var, “return” yani “dön.” Return’ün sağ tarafına yazdığımız değer ise fonksiyonun sonunda elde edilen sonuç, yani üzümlü kek, veya bu örnekte dikdörtgenin çevresinin değeri. Daha önce belki birkaç kere “fonksiyonun döndüğü değer/sonuç” gibi bir tabir kullanmış olabilirim. Onun sebebi işte buradaki “return” kelimesi.

Yazdığımız koda geri dönersek, Python’un burada yaşananları nasıl yaşadığını kendisinden dinleyelim:

Başladık ve def ile hemen bir fonksiyon tanımı gelmiş. “dairenin_alanını_ver” diye bir fonksiyon tanımlamışlar ve bu fonksiyonun tek bir parametresi var r diye. Tamamdır, bunu aklımın bir köşesine yazdım. İlerleyen safhalarda dairenin_alananı_ver diye bir şey yazarlarsa kıllık çıkarmayacağım. Ama içine tek bir parametre koyarlar umarım. Çünkü öyle tanımlamış programlamacı abimiz/ablamız. Neyse ikinci satırı atlıyorum, burası dairenin_alanını_ver’in egemenlik alanı. Şu an için işimiz yok orayla ancak fonksiyon çağırılırsa gireriz. 3’üncü satırda egemenlik alanı bitmiş, hoop yeni bir fonksiyon daha. Bu sefer “dikdortgenin_cevresi” adında ve 2 adet parametre istiyor. Bunu da attım hafızaya. Beyin bedava. Haydi bakalım devam edelim. Bunun da egemenlik alanı 4 ve 5’inci satırları kaplamış. 6’da dışarı çıkıyoruz.

Altıncı satıra ulaştığımız bu noktaya kadar pek dişe dokunur bir şey yapmadık. Ne Mehmet’in yaşını artırdık ne Leyla’nın saç rengini kaydettik ne de herhangi bir değişkenin değerini değiştirdik. Bu noktaya kadar iki tane fonksiyon tanımladık ve de Python’a dedik ki:

Hocam bak şimdi böyle iki tane fonksiyon var. Şu an için bunları kullanmıyoruz ama ileride çağırırsak bunlara gireceksin haberin olsun. Ben sana haber edeceğim gireceğimiz zamanı.

Altıncı satırdan devam edelim ve mikrofonlarımız Python’da:

6 ve 7’nci satırlarda klasik input alıp integera çevirme olayı yaşanıyor. Evet kullanıcıdan girdiyi aldık. 5 girmiş kendileri, ben de yarıçap = 5 yaptım böylelikle 7’nci satırda. 8’inci satıra geldim. Hmmm burada dairenin_alanını_ver diye bir şey çağrılmış. Bakalım hafızamızda var mı? Evet, var. Fonksiyonun içine tek parametre koymuşlar, o da yarıçap. Bakalım fonksiyon kaç parametre alıyor. O da 1. Şahane. Hata mata yok henüz. O zaman bu fonksiyonun bana vereceği değeri hesaplamak için yarıçaptan gelen 5’i fonksiyon içine sokacağım ve return değerini hesaplayacağım. Şimdi fonksiyonun tanımlandığı satır 1’e gidiyorum. Parametremizin değerini eşitleyeceğim. Değişken r, o zaman r=5 yapalım. İkinci satıra geldim ki return buradaymış zaten. Hemen return’un sağına bakalım 3,14*5*5 = 78,5 yaptı. Tamamdır, bu değeri döndüreceğiz. O zaman satır 7’ye dönelim dairenin_alanını_ver(yarıçap) böylelikle 78,5 olacak ve de alan’ın değerini de 78,5 yapıyorum.

Yedinci satırda yaptığımız olay “fonksiyonu çağırmak.” Fonksiyonun içine 5 değerini gönderip bize bir şeyler hesaplamasını söyledik. Aslında bu, önceden yaptığımız len(“merhaba”) veya round(8.48)‘ten hiç farklı değildi. Onlarda da fonksiyonun içine bazı değerleri gönderip kendisinin bir şeyleri hesaplamasını söylüyoruz. Tek bir fark var. len ve round, Python’un kendi fonksiyonları. dairenin_alanını_ver ise el emeği göz nuru bizim yazdığımız bir fonksiyon.

Fonksiyonu çağırmak ve içine değer göndermek demişken, aslında 7’nci satırda şu işlemi yapıyoruz (kullanıcının 5 girdiğini varsayıyorum):

r = 5
alan = 3,14 * r * r

9’uncu satırda da bunu:

kenar1 = 3
kenar2 = 4
cevre = 2 * (kenar1 + kenar2)
c = str(cevre)

Şimdi diyeceksiniz, “Sayın hocam biz niye böyle fonksiyonlarla falan uğraşıyoruz? Yapsaydık önceki gibi?” Buna birazdan geleceğiz ama bu konuyu kapatmadan önce ufak birkaç detay daha:

Tanımladığımız iki fonksiyonsunun parametreleri r, kenar1 ve kenar2, ve de içinde tanımlanan değişkenler, mesela çevre, sadece o fonksiyonların içinde tanımlı olarak kalacaklar ve o fonksiyon dışında kullanılamayacaklar. Mesela kenar1 veya r’yi fonksiyonların dışında bir yerde kullanmaya kalksanız Python onları tamamen yeni birer değişken olarak olarak algılayacaktır. Durun yahu, ne zamandır kural yazmıyorduk. Bunu genel bir kural haline getirelim.


Altıncı kural: Her değişken/parametre kendi fonksiyonu içinde öter. Dışarıda borusu ötmez.


Örnekleyelim tabii ne demek istediğimizi:

def dikdortgenin_cevresi(kenar1, kenar2):
  cevre = 2 * (kenar1 + kenar2)
  return cevre
c = str(dikdortgenin_cevresi(3, 5))
print("Kenarlari 3 ve 5 olan dikdortgenin cevresi de " + c)
print(cevre)

Gördüğünüz üzere Python çevre’nin ne olduğunu bile bilmiyor ve “bilgimiz dahilinde böyle bir değişken yok” diyor. Çünkü 2’nci satırda hesapladığımız ve de tanımladığımız çevre o fonksiyon içinde yaşadı, öldü ve de bitti. Kendisi 4’üncü satırdan itibaren sizlere ömür. O yüzden dostlar, fonksiyonlarınızın içinde tanımladığınız değişkenleri dışarıda kullanmayın.

Ödevlere geçmeden bakalım daha ne güzel fonksiyonlar yazabiliyoruz. Aslında bu zamana kadar yaptığımız çoğu şeyi birer fonksiyon haline getirebilirdik. Ama mantıklı olanı fonksiyonları sizin işinizi kolaylaştıran bir makina/fırın gibi düşünmeniz. Yani kendisine girdiler vereceğiz ve bu girdilerle bize bir şeyler hesaplamasını söyleyeceğiz. O da, “Al hesapladım, buyur birader,” diyecek. Düşünelim bakalım, mesela daha önce yazdıklarımızdan neyi fonksiyon yapabiliriz?

Mesela bir sayı verdiğimizde bize o sayının tek mi çift mi olduğunu söyleyen bir fonksiyon:

def soyle_bakim_sayi_tek_mi_cift_mi(sayi):
  if sayi % 2 == 0:
    return "cift"
  else:
    return "tek"

Gördüğünüz üzere fonksiyonumuzun girdisi tek bir integer, çıktısı ise bir string, “çift” veya “tek” şeklinde. Kendisini böyle çağırabiliriz:

sonuc = soyle_bakim_sayi_tek_mi_cift_mi(3)
print(sonuc)
print(soyle_bakim_sayi_tek_mi_cift_mi(890))

Bu fonksiyonu azıcık farklı yazalım şimdi:

def soyle_bakim_sayi_cift_mi(sayi):
  if sayi % 2 == 0:
    return True
  else:
    return False

Fonksiyonumuzun adını değiştirdik ve çıktımızı string’den boolean’a çevirdik. Artık hangisi işinize gelirse kullanın.

Bir örnek daha yazalım. Şu 1000’den küçük en büyük katı hesaplayan kodumuzu hatırladık mı? Evet, kendisi Ödev 7.10’du. Onu fonksiyon haline getirelim:

def binden_kucuk_en_buyuk_kat(verilen_sayi):
  carpim_sayisi = 1
  while(True):
    carpim_sayisi = carpim_sayisi + 1
    sonuc = carpim_sayisi * verilen_sayi
    if sonuc < 1000: 
      kaydedilen_sonuc = sonuc 
    if sonuc > 1000:
      break
  return kaydedilen_sonuc

print(binden_kucuk_en_buyuk_kat(87))
print(binden_kucuk_en_buyuk_kat(220))
print(binden_kucuk_en_buyuk_kat(7))

Eh, o zaman ne yapıyoruz?


Ödev 9.1: Yukarıdaki fonksiyonlardan birini çağırarak 896’dan 975’e kadar olan sayılara teker teker bakıp satır satır “896 çift,” “897 tek” … yazan bir kod yazın.


Ödev 9.2: Verilen üç sayının ortalamasını hesaplayan “ortalama_hesapla(sayı1, sayı2, sayı3)” adında bir fonksiyon yazın ve bu fonksiyonu farklı sayılarla çağırarak test edin.


Ödev 9.3: Verilen üç kelimeden hangisi kısaysa onu dönen kısasını_ver(kelime1, kelime2, kelime3) şeklinde bir kod yazın ve farklı değerlerle test edin.


Ödev 9.4: sayı1’den başlayıp sayı2’ye kadar sayı3’er artarak gidip sayan ve bu sayıları ekrana yazan say_bakim(sayı1, sayı2, sayı3) isminde bir fonksiyon yazın. Örnek olarak, say_bakim(7, 16, 4) olarak çağırırsanız ekrana 7, 11, 15 yazması lazım.


Ödev 9.5: Verilen bir x sayısının, verilen başka bir y sayısından küçük en büyük katını hesaplayan en_buyuk_kat(x, y) isminde bir fonksiyon yazın ve bunu x=102, y=9824 değerleri için çağırarak test edin. İpucu: Biz bu kodu yazdık zaten ya az önce?


Şimdi o önemli soru, “Ben neden gidip bir fonksiyon yazayım durup dururken?”

  1. Fonksiyonlar kullanarak kodunuzu kısaltabilir; uzun vadede daha kontrol edilebilir, değiştirilmesi kolay ve daha organize bir kod yapısına sahip olursunuz. Anneniz programlamacı olsaydı yatağınızı toplamamanızdan daha çok, kodunuzda fonksiyon kullanmamanıza kızardı.
  2. Yazdığınız fonksiyonları arkadaşlarınızla, eşiniz, dostunuz ve akrabalarınızla paylaşabilirsiniz. İnançlarınıza göre sevap/karma puanlarınız artar.

Eğer bir gün gerçek hayatta kullanılacak bir uygulama için kod yazacak olursanız yazdığınız kodun uzunluğu yüzlerce, binlerce hatta on binlerce satır olabilir. Şimdi fonksiyonların bu boyutlarda yazılan kodları nasıl derleyip toparladığını görelim.

Aşağıda çözümünü de verdiğimiz Ödev 8.8 sorusunu biraz değiştirelim:

Kullanıcıya sırasıyla adını, soyadını, anne adını, baba adını soran bir kod yazıp, bu bilgiler için aşağıdaki tüm kontrolleri yapıp aşağıdaki hataları vermemiz gerekiyor:

  • Eğer cevap olarak hiçbir şey yazmadıysa: -> “isim/soyad/baba adı/anne adı kısmı boş bırakılamaz”
  • Eğer cevap olarak 20 karakterden uzun bir şey yazdıysa: -> “isim/soyad/baba adı/anne adı kısmı 20 karakterden uzun olamaz”
  • Eğer cevap olarak harf veya sayılardan başka bir karakter girdiyse -> “isim/soyad/baba adı/anne adı kısmına kabul edilemez karakter girdiniz.”

Önce bu kodun sadece isim kısmını kontrol eden kısmını yazalım:

isim = input("Isminiz: ")
if len(isim) == 0:
  print("Isim kismi bos birakilamaz")
elif len(isim) > 20:
  print("Isim kismi 20 karakterden uzun olamaz")
elif isim.isalnum() == False:
  print("Isim kismina kabul edilemez karakter girdiniz")

Peki bunu soyadı, anne adı ve baba adı kısımları için de uygulasak ne yapabiliriz? Kopyala, yapıştır isimi soyadla değiştir. Kopyala yapıştır ve aynısını anne adı ve baba adı kısımları için yap:

isim = input("Isminiz: ")
if len(isim) == 0:
  print("Isim kismi bos birakilamaz")
elif len(isim) > 20:
  print("Isim kismi 20 karakterden uzun olamaz")
elif isim.isalnum() == False:
  print("Isim kismina kabul edilemez karakter girdiniz")
soyad = input("Soyadiniz: ")
if len(soyad) == 0:
  print("Soyad kismi bos birakilamaz")
elif len(soyad) > 20:
  print("Soyad kismi 20 karakterden uzun olamaz")
elif soyad.isalnum() == False:
  print("Soyad kismina kabul edilemez karakter girdiniz")
anne_adi = input("Anne adiniz: ")
if len(anne_adi) == 0:
  print("Anne adi kismi bos birakilamaz")
elif len(anne_adi) > 20:
  print("Anne adi 20 karakterden uzun olamaz")
elif anne_adi.isalnum() == False:
  print("Anne adi kismina kabul edilemez karakter girdiniz")
baba_adi = input("Baba adiniz: ")
if len(baba_adi) == 0:
  print("Baba adi kismi bos birakilamaz")
elif len(baba_adi) > 20:
  print("Baba adi 20 karakterden uzun olamaz")
elif baba_adi.isalnum() == False:
  print("Baba adi kismina kabul edilemez karakter girdiniz")

Oldu mu toplam 28 satır kod? Ya aslında dört bilgiyi de aynı kontrolden geçiriyoruz. Bunu kısaltamaz mıyız? Tabii ki bunu bir kontrol fonksiyonu yazarak yapabiliriz. Mesela şöyle bir kontrol fonksiyonu yazalım:

def girileni_kontrol_et(girilen):
  if len(girilen) == 0:
    return " kismi bos birakilamaz"
  elif len(girilen) > 20:
    return " kismi 20 karakterden uzun olamaz"
  elif girilen.isalnum() == False:
    return " kismina kabul edilemez karakter girdiniz"
  else:
    return ""

Bu fonksiyon eğer girdide bir sorun varsa ilgili hatayla alakalı bir mesaj veriyor, ama eğer “” dönerse demek ki hata yok. Bu işimizi epey kolaylaştırır. O zaman devam:

isim = input("Isminiz: ")
if girileni_kontrol_et(isim) != "":
  print("Isim" + girileni_kontrol_et(isim))
soyad = input("Soyadiniz: ")
if girileni_kontrol_et(soyad) != "":
  print("Soyad" + girileni_kontrol_et(soyad))  
anne_adi = input("Anne adi: ")
if girileni_kontrol_et(anne_adi) != "":
  print("Anne adi" + girileni_kontrol_et(anne_adi))
baba_adi = input("Baba adi: ")
if girileni_kontrol_et(baba_adi) != "":
  print("Baba adi" + girileni_kontrol_et(baba_adi))

Gördüğünüz gibi fonksiyonumuza sırasıyla isim, soyad falan hepsini gönderiyoruz, eğer fonksiyonumuz boş string “” dönerse if içine girmiyoruz (hatırlayalım != eşit değil demekti). Eğer “” harici bir şey dönerse bu ne demek? Fonksiyon içine gönderdiğimiz string sorunlu, yani fonksiyon içinde iflere yazdığımız üç hatadan birine denk gelmiş. O hataları dikkat ederseniz “…. kısmı boş bırakılamaz” gibi, başına “gel baba buraya bi ifade ekle” şeklinde çakalca bir ayar yaptık. Hata gelince de o başa gelecek kısmı el yordamıyla ekleyerek hata mesajımızı tamamlıyoruz. İşte burada yaptığımız gibi:

print("Isim" + girileni_kontrol_et(isim))

İşte bunlar yılların tecrübesi… Yok lan, gayet basit şeyler aslında. Biraz düzenli kod yazmak için kafa yormak gerektiriyor.

Bu iki kodu da uç uca eklersek toplam 21 satır kod ediyor. Evet biraz kısalttık ama muhteşem bir kısalma olmadı. Ama şimdi şöyle bir durum olduğunu varsayalım. Diyelim ki kodumuza girilen bilgiler için bir kontrol daha eklemek istedik. Mesela “x” gibi ingilizce karakterin girilmesini istemiyoruz. Bunu ilk yazdığımız fonksiyonlu kodda yazıcak olsak, her bir kontrolün arkasına teker teker string.fınd kullanarak x girilip girilmediğini kontrol etmemiz gerekiyordu ki, bu sekiz satır daha kod eklemek manasına gelir. Ama fonksiyon kullandığımız yeni kodumuzda sadece yapmamız gereken:

def girileni_kontrol_et(girilen):
  if len(girilen) == 0:
    return " kismi bos birakilamaz"
  elif len(girilen) > 20:
    return " kismi 20 karakterden uzun olamaz"
  elif girilen.isalnum() == False:
    return " kismina kabul edilemez karakter girdiniz"
  elif girilen.find("x") > -1:
    return " kisminda x karakteri kabul edilemez"
  else:
    return ""

Böylece topu topu 2 satır kod değiştirdik. O yüzden diyoruz, anneniz bu işlere bulaşmış olsa kesinlikle ikinci yöntemi tercih ederdi diye.


Yedinci kural: Kodunuzun farklı yerlerde tekrar tekrar kullanılan ve benzer işlemler yapan kısımlarını tespit edin. Onları birer fonksiyon haline getirin ve o kısımlarda sadece fonksiyonları kullanın. Fonksiyon kullanmanız şart değil ama uzun vadede çok işinize yarayacak, emin olun.


Yeni ödevler ve bir önceki dersin çözümleriyle yakında görüşmek üzere!


Ödev 9.6: Kullanıcıya doğum günü, ayı ve yılını soran ve girdiği değerler için aşağıdaki kontrolleri yapıp hatalar veren bir kod yazın:

    • Eğer herhangi bir değere numerik olmayan değerler girildiyse -> “gün/ay/yıl’a numerik olmayan değerler girmeyiniz”
    • Gün değerine 31’den yüksek bir değer girildiyse -> “gün 31’den büyük olamaz”
    • Ay değerine 12’den yüksek bir değer girildiyse -> “ay 12’den büyük olamaz”

Eğer tüm kontrollerden sağlıklı geçildiyse kişinin kaç yaşında olduğunu ekrana yazın (evet bugünün gün ay ve yılını hesap içine katarak yapın).


Ödev 9.7: Yukarıdaki kodu yazdıktan sonra bazı kullanıcıların negatif değerler girdiğini gördünüz. O yüzden aşağıdaki kontrolleri de kodunuza ekleyiniz:

    • Eğer gün veya ay’a 1’den küçük bir değer girilirse -> “gün/ay 1’den küçük olamaz”
    • Eğer yıla 2019’dan büyük değer girilirse -> “yıl 2019’dan büyük olamaz”
    • Eğer yıla 1519’dan küçük değer girilirse -> “yıl 1519’dan küçük olamaz”

Ödev 8.1 çözüm

verilen_sayi = input("Bir sayi giriniz")
verilen_sayi = int(verilen_sayi)
if verilen_sayi % 2 == 1:
  print("Sayiniz tek")
else:
  print("Sayiniz cift")

Ödev 8.2 çözüm

say = 0
while(True):
  kelime = input("5 karakterli bir kelime giriniz: ")
  say = say + 1
  if len(kelime) == 5:
    break
print("Toplam " + str(say) + " kelime girdiniz.")

Ödev 8.3 çözüm

isim = input("Isminizi giriniz: ")
if isim.find("m") == -1:
  soyad = input("Soyadinizi giriniz: ")
  if soyad.find("m") == -1:
    yas = input("Yasinizi giriniz: ")

Ödev 8.4 çözüm

isim = input("Isminizi giriniz: ")
anin_yeri = isim.find("a")
enin_yeri = isim.find("e")
ının_yeri = isim.find("ı")
inin_yeri = isim.find("i")
onun_yeri = isim.find("o")
önün_yeri = isim.find("ö")
unun_yeri = isim.find("o")
ünün_yeri = isim.find("ü")
if anin_yeri == -1 and enin_yeri == -1 and ının_yeri == -1 and inin_yeri == -1 and onun_yeri == -1 and önün_yeri == -1 and unun_yeri == -1 and ünün_yeri == -1:
  print("Oyle isim mi olur lan!!")
else:
  farkli_sesli_harf_sayisi = 0
  if anin_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  if enin_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  if ının_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  if inin_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  if onun_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  if önün_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  if unun_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  if ünün_yeri > -1:
    farkli_sesli_harf_sayisi = farkli_sesli_harf_sayisi + 1
  print("Isminizde toplam " + str(farkli_sesli_harf_sayisi) + " sesli harf var.")

Ödev 8.5 çözüm

toplam = 0
en_buyuk = 0
en_kucuk = 100
while(True):
  girilen_sayi = input("Bir sayi giriniz: ")
  girilen_sayi = int(girilen_sayi)
  en_buyuk = max(girilen_sayi, en_buyuk)
  en_kucuk = min(girilen_sayi, en_kucuk)
  toplam = toplam + girilen_sayi
  if toplam >= 100:
    break
print("Girdiginiz en buyuk sayi: " + str(en_buyuk))
print("Girdiginiz en kucuk sayi: " + str(en_kucuk))

Ödev 8.6 çözüm

girilen_sayi = input("Yasiniz:")
girilen_sayi = int(girilen_sayi)  
if girilen_sayi < 0:
  girilen_sayi = - girilen_sayi
  print("Bunu mu demek istemistiniz?: " + str(girilen_sayi))

Ödev 8.7 çözüm

while(True):
  yas = input("Yasiniz:")
  if yas.isnumeric():
    break
  else:
    print("Nabiyon haci yas dedik?")

Ödev 8.8 çözüm

isim = input("Isminiz: ")
soyad = input("Soyadiniz: ")
adres = input("Adresiniz: ")
telefon = input("Telefonunuz: ")
if len(isim) > 20:
  print("İsim kısmına sadece ismi giriniz. Soyadı birazdan soruyoruz.")
elif isim.find(" ") > -1:
  print("Lütfen sadece kullanmak istediğiniz adınızı giriniz.")
elif len(isim) + len(soyad) > 40:
  print("Oha veritabanını mı göçerticeksin, öyle uzun isim soyad kombinasyonu mu olur?")
elif len(adres) < 10:
  print("O kadar kısa adres olmaz olamaz imkansız?")
elif telefon.isnumeric() == False or len(telefon) != 10:
  print("Telefon numarasına lütfen abuk subuk değerler girmeyiniz")
The following two tabs change content below.

Hafız Lakyab

BNGL'nin ilk zamanlarında şakalı komiklikli yazılarını esirgemeyen Hafız son zamanlarda yatış pozisyonuna geçerek yattığı yerden Civilization’dır, Europa Universalis’tir oyunlara sardırmıştır. Eğer bir gün dünyayı ele geçirebilirse uzmanı olmadığı konularda yazılarına devam edecektir. Ayrıca, şarkıları tersten söyleyebildiğini biliyor muydunuz?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.