logo
16 NİSAN 2025

Python 114 - Alıştırmalar

20.06.2021 00:00:00

Python 114 - Alıştırmalar

Merhaba,

Bu pazar sizi biraz yoracağız. Şu ana kadar epeyce bir teorik bilgimiz oldu, artık minik ölçekli uygulamalara adım atabiliriz. Sayıları, metinleri, listeleri basitçe işlemeye yönelik birkaç örneğimiz var. Çözümler bir fonksiyon oluşturmaya ve ondan gelen yanıtı ekrana yazmaya dayalı olacak. Son satırlardaki print komutunun yanında # yorum kodunda sonuçlar da yer alıyor. Haydi iyi çalışmalar…

Tek mi çift mi

İlk örneğimiz verilen bir sayının tek mi çift mi olduğunu bulan bir program olsun:

  def tekçift(sayı):
      if sayı % 2 == 0:
          return "çift"
      else:
          return "tek"

  print("Tek çift bulma örneği")
  print(tekçift(25)) # tek
  print(tekçift(6)) # çift

Programımızda üst tarafta bir fonksiyon tanımı, altta ise ana blok yer alıyor. Fonksiyonun tanım kodları biraz içeride ve 4 satırdan oluşuyor. Sonra bir satır boşluk bırakılmış ve 3 adet print komutundan oluşan ana blok gelmiş.

Python, kodlarımızı yukarıdan aşağıya doğru okur. Önce def komutuyla "tekçift" adını verdiğimiz bir fonksiyon tanımlıyoruz. Bu fonksiyon 1 tane değişken alabiliyor, adı "sayı". Hemen altta girintili halde bulunan tanım kodunda ise if ve else ile bir durum testi yapıyoruz (bkz karşılaştırma ve bool veri tipi). Eğer sayının 2 ye bölümünden kalan sıfırsa fonksiyonumuz "çift" cevabını, değilse "tek" cevabını veriyor return ile.

3 Adet print komutu ana blokta olduğundan girintileri en sola sıfırlanmış durumda. İlk print sabit bir metin yazarken 2. ve 3. print komutları tekçift() fonksiyonuna ihtiyaç duymaktadır. O fonksiyon da zaten yukarıda tanımlı ve return ile printe gerekli cevabı verir durumda. Takip edebiliyoruz değil mi? Daha önce bir fonksiyonun nasıl yazıldığına bakmıştık: fonksiyonlar. Aradaki print, tekçift(25)'i yani tekçift fonksiyonumuzun 25 için ürettiği "tek" cevabını alıp ekrana yazarken, en alttaki print, tekçift(6)'nın sonucu olan "çift" cevabını ekrana yazar.

Önemli not: Eğer print komutlarını yukarıda, fonksiyon tanımından önce yazsaydık, Python print'in içinde tekçift()'i gördüğünde onu tanıyamayacak ve hata verip duracaktı. Program üstten aşağı akar, unutmuyoruz.

Bu örnekte % ile kalan bulduğumuza, == ile bir karşılaştırma yaptığımıza da dikkat edelim.

Tersten yaz

Verilen bir metnin tersini bulan kod:

  def ters(metin):
      return metin[::-1]

  print(ters(".zay dok zay uB")) # Bu yaz kod yaz.

Daha önce list veri yapısı üzerinde kullandığımız slicing tekniğini burada str (metin) verisinde kullandık. [::-1] slice'ı bir listeye uygulandığında listeyi tersten verirken, bir metne uygulandığında da metni tersten veriyor. Hatırlamak için slicing dersimize bakabilirsiniz.

Elma kaçıncı sırada?

Bu sefer size bir meyve listesi veriliyor, istenen de bu listede "elma" nın kaçıncı sırada olduğunu bulmanız:

  def elmanınyeri(meyveler):
      sıra = meyveler.index("elma")
      return f"Elma listede {sıra}. konumda"

  meyveler = ["kiraz", "şeftali", "elma", "çilek"]
  print(elmanınyeri(meyveler)) # Elma listede 2. konumda

Hatırlayın, bir listedeki herhangi bir elemanın konumunu .index(eleman) ifadesiyle buluyorduk (bkz. list veri yapısı). return'deki f özel yapısını da geçen hafta Format string - f (Kolay değişken yazdırma) başlığında incelemiştik string işlemleri.

Sınıfta kaç öğrenci var?

Bize [True, False, True, True, True, False, True …] şeklinde bir yoklama listesi veriliyor. Sırayla her bir öğrenci sınıftaysa True, yoksa False şeklinde kaydedilmiş. Bu listeden sınıftaki mevcut öğrenci sayısını bulalım :

  def mevcut(yoklama):
      gelen = yoklama.count(True)
      hepsi = len(yoklama)
      return f"Toplam {hepsi} öğrenciden {gelen} öğrenci mevcut."

  yoklama = [True, False, True, True, False, True, False, True, True, True, True, True, False, True, True, False]
  print(mevcut(yoklama)) # Toplam 16 öğrenciden 11 öğrenci mevcut.

Bir listenin eleman sayısı len(liste) ile bulunurken, belirli bir elemandan listede kaç adet olduğunu nokta notasyonuyla buluyoruz. Formüller aynı yerde : list veri yapısı.

Say bakalım

Bu sefer isteğimiz 1'den verilen bir sayıya kadar olan tüm sayıları liste halinde vermek:

  def say(sınır):
      sonuç = []
      for x in range(1,sınır+1):
          sonuç.append(x)
      return sonuç

  x = int(input("Kaça kadar sayalım? "))
  print(say(5)) # [1, 2, 3, 4, 5]

Fonksiyon bloğumuzda ilk önce sonuç listemizi boş bir liste olarak tanımladık. for döngüsüyle de istediğimiz sayıları tek tek bu boş listeye .append(yeni eleman) komutuyla ekliyoruz. Burada dikkat edeceğimiz şey range(1,4) fonksiyonu bize 1'den 3'e kadar olan sayıları vereceğinden, fonksiyona gelen değişkene 1 eklememiz gerkiyor ki sınırdaki sayı da listeye eklensin. İlk döngüde listemiz tek elemanlı bir liste olacak [1], ikinci döngüde iki elemanlı [1, 2], böyle sınıra kadar tek tek ekleyecek. Range fonksiyonu için de buraya bakabilirsiniz: liste oluşturma.

Ana blokta kullanıcıya "Kaça kadar sayalım?" diye sorup, verdiği cevabı x isminde bir değişkende saklıyoruz. input() komutu kullanıcının yazdığı yazıyı metin olarak gördüğünden, ve biz kullanıcıdan bir rakam beklediğimiz için, metni sayıya çeviren int() fonksiyonunu kullanıyoruz (bkz. bilgi alma ve kıyaslama)

Programlamada bir sorunun birden fazla çözümü olacaktır. Dili kullandıkça, hangi alanlarda hangi komutların olduğunu da keşfedeceksiniz. Gerektikçe kendi fonksiyonlarınızı yazacaksınız. Bazen de zaten mevcut bir fonksiyonu bir bakmışsınız siz sıfırdan yazmışsınız. Olsun, çok iyi etmişsiniz. Önemli olan o algoritmayı sizin anlayarak, bilerek, uygulayarak geliştirmiş olmanız ve pratiğinizin artması, gün geçtikçe uzmanlaşmanız.

Ne kadar pratik, o kadar ilerleme diyerek yine online Python kodlayabileceğiniz sitelerimizle bu yazımızı da sonlandıralım. Tekrar görüşmek dileklerimle…

Yorumlar
Yorum bulunmuyor.
Yorumlarınızı paylaşın

--
 
Nahit Taşpınar / diğer yazıları
ABD-Çin ticaret savaşlarında yeni gelişmeler
Karşılıklı restleşmeler sürüyor
Ümit Özdağ'dan çarpıcı Apo açıklaması
'DEM yönetimi Öcalan'a bağlanacak'
Don afeti çiftçiyi fena vurdu
'Çiftçinin borcu faizsiz ertelenmeli'
Konut satışları yerlerde sürünüyor
Konut satış rakamları belli oldu
Kalp damarı yırtıldı, iki kez kalbi durdu
Sırrı Süreyya Önder'in durumu kritik
Altın 4 bin TL'yi aştı
Artış devam ediyor
Çin ekonomisi ilk çeyrekte yüzde 5,4 büyüdü
Büyüme iç talepteki artıştan
Beykoz Belediyesi soruşturmasında yeni gelişme
Belediye Başkan Yardımcısı Gül adliyede
Ticaret savaşlarında gözler FED'de
FED Başkanı Powell bugün konuşacak
Suriyeli bakanlar ABD'de para arayacak
Dünya Bankası ve IMF'nin kapısı çalınıyor
Yedekler yerine düzenli askerler görevlendirilecek
İsrail hükümetinden "cephe" kararı
ABD'deki yabancı öğrenciler panikte
600'den fazla öğrencinin vizesi iptal edildi
Güçlü bir güneş fırtınası Dünya'yı vurdu
Kuzey ışıkları gece gökyüzünü süsledi
Katil olay yerinde görüldü
Netanyahu, işgal altındaki Gazze'ye gitti
Sırrı Süreyya Önder kalp krizi geçirdi
DEM Parti'den açıklama
ABD-Çin ticaret savaşlarında yeni gelişmeler
Karşılıklı restleşmeler sürüyor
Ümit Özdağ'dan çarpıcı Apo açıklaması
'DEM yönetimi Öcalan'a bağlanacak'
Don afeti çiftçiyi fena vurdu
'Çiftçinin borcu faizsiz ertelenmeli'
Konut satışları yerlerde sürünüyor
Konut satış rakamları belli oldu
Kalp damarı yırtıldı, iki kez kalbi durdu
Sırrı Süreyya Önder'in durumu kritik
Altın 4 bin TL'yi aştı
Artış devam ediyor
Çin ekonomisi ilk çeyrekte yüzde 5,4 büyüdü
Büyüme iç talepteki artıştan
Beykoz Belediyesi soruşturmasında yeni gelişme
Belediye Başkan Yardımcısı Gül adliyede
Ticaret savaşlarında gözler FED'de
FED Başkanı Powell bugün konuşacak
Suriyeli bakanlar ABD'de para arayacak
Dünya Bankası ve IMF'nin kapısı çalınıyor
Yedekler yerine düzenli askerler görevlendirilecek
İsrail hükümetinden "cephe" kararı
ABD'deki yabancı öğrenciler panikte
600'den fazla öğrencinin vizesi iptal edildi
Güçlü bir güneş fırtınası Dünya'yı vurdu
Kuzey ışıkları gece gökyüzünü süsledi
Katil olay yerinde görüldü
Netanyahu, işgal altındaki Gazze'ye gitti
Sırrı Süreyya Önder kalp krizi geçirdi
DEM Parti'den açıklama
logo

Beşyol Mah. 502. Sok. No: 6/1
Küçükçekmece / İstanbul

Telefon: (212) 624 09 99
E-posta: internet@yenimesaj.com.tr gundogdu@yenimesaj.com.tr


WhatsApp iletişim: (542) 289 52 85


Tüm hakları Yeni Mesaj adına saklıdır: ©1996-2025

Yazılı izin alınmaksızın site içeriğinin fiziki veya elektronik ortamda kopyalanması, çoğaltılması, dağıtılması veya yeniden yayınlanması aksi belirtilmediği sürece yasal yükümlülük altına sokabilir. Daha fazla bilgi almak için telefon veya eposta ile irtibata geçilebilir. Yeni Mesaj Gazetesi'nde yer alan köşe yazıları sebebi ile ortaya çıkabilecek herhangi bir hukuksal, ekonomik, etik sorumluluk ilgili köşe yazarına ait olup Yeni Mesaj Gazetesi herhangi bir yükümlülük kabul etmez. Sözleşmesiz yazar, muhabir ve temsilcilere telif ödemesi yapılmaz.