EEM-241 İleri Düzey Programlama
2024-2025 Güz Dönemi
Ders 5 - Karar Yapıları ve Listeler
1. Boolean türü ve karşılaştırmalar
print(type(True))
a, b = 5, 8
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
print(a == b)
print(a != b)
Atama için =, eşitlik karşılaştırması için == kullanılır.
Metinler de karşılaştırılabilir; sıralamada karakter kodları etkili olduğu için büyük-küçük harf farkına dikkat edilmelidir.
print("abc" == "ABC")
print("abc" in "123abcdef")
print("x" not in "Python")
2. Mantık operatörleri
yas = 20
ogrenci_mi = True
print(yas >= 18 and ogrenci_mi)
print(yas < 18 or yas > 65)
print(not ogrenci_mi)
and: tüm koşullar doğruysaTrueor: koşullardan en az biri doğruysaTruenot: sonucu tersine çevirir
Karmaşık ifadelerde parantez kullanmak okunabilirliği artırır.
3. if, elif, else
Girintiler Python sözdiziminin parçasıdır. Aynı bloktaki satırlar aynı miktarda girintilenmelidir.
sayi = int(input("Bir sayı giriniz: "))
if sayi > 0:
print("Sayı pozitiftir.")
elif sayi == 0:
print("Sayı sıfırdır.")
else:
print("Sayı negatiftir.")
Aralık denetimi
not_degeri = float(input("Notu giriniz: "))
if 0 <= not_degeri <= 100:
print("Geçerli not")
else:
print("Not 0 ile 100 arasında olmalıdır.")
Çok dallı karar ve koşul sırası
not_degeri = float(input("Notu giriniz: "))
if not_degeri >= 90:
harf = "AA"
elif not_degeri >= 80:
harf = "BA"
elif not_degeri >= 70:
harf = "BB"
elif not_degeri >= 60:
harf = "CB"
else:
harf = "Başarısız"
print(harf)
En dar/yüksek aralık önce sınanmıştır. Aksi durumda daha genel bir koşul, sonraki dallara ulaşılmasını engelleyebilir.
İç içe koşul
kullanici_adi = input("Kullanıcı adı: ")
sifre = input("Şifre: ")
if kullanici_adi == "admin":
if sifre == "1234":
print("Giriş başarılı")
else:
print("Şifre hatalı")
else:
print("Kullanıcı bulunamadı")
Uygulama: Üç sayının en büyüğü
a = float(input("a: "))
b = float(input("b: "))
c = float(input("c: "))
en_buyuk = a
if b > en_buyuk:
en_buyuk = b
if c > en_buyuk:
en_buyuk = c
print(f"En büyük değer: {en_buyuk}")
4. Listeler
Listeler sıralıdır, indekslenebilir ve değiştirilebilir.
sayilar = [5, 1, 2, 3, 9, 5, 2, 6, 10]
print(type(sayilar))
print(len(sayilar))
print(sayilar[0])
print(sayilar[-1])
print(sayilar[3:6])
print(sayilar[::-1])
Stringlerden farklı olarak liste elemanlarına yeni değer atanabilir.
meyveler = ["muz", "elma", "armut"]
meyveler[0] = "kiraz"
print(meyveler)
5. Liste metotları
Metotların listeyi yerinde değiştirip değiştirmediğine dikkat edilmelidir.
sayilar = [5, 1, 2, 3]
sayilar.append(9)
sayilar.insert(1, 10)
sayilar.remove(2) # değeri siler
silinen = sayilar.pop() # indeksteki değeri siler ve döndürür
print(sayilar)
print(silinen)
sayilar = [5, 1, 9, 2]
sirali = sorted(sayilar) # yeni liste üretir
print(sayilar)
print(sirali)
sayilar.sort(reverse=True) # mevcut listeyi değiştirir
print(sayilar)
Sayısal listelerde hazır fonksiyonlar:
olcumler = [12.5, 11.8, 13.2, 12.9]
print(len(olcumler), sum(olcumler), min(olcumler), max(olcumler))
print(sum(olcumler) / len(olcumler))
Liste içinde üyelik:
dersler = ["devre", "programlama", "matematik"]
if "programlama" in dersler:
print("Ders listede var.")
6. Liste kopyalama yanılgısı
liste1 = [1, 2, 3]
liste2 = liste1
liste2.append(4)
print(liste1) # iki ad aynı listeyi gösterir
Bağımsız kopya için:
liste1 = [1, 2, 3]
liste2 = liste1.copy()
liste2.append(4)
print(liste1, liste2)
Alıştırmalar
- Girilen yılın artık yıl olup olmadığını bulun.
- Üç kenarı girilen üçgenin kurulup kurulamayacağını ve kuruluyorsa türünü yazdırın.
- Kullanıcıdan alınan parolanın en az 8 karakter, en az bir rakam ve en az bir harf içerip içermediğini sınayın.
- Bir ölçüm listesinin en küçük, en büyük ve ortalama değerini bulun.
- Bir listedeki ilk ve son elemanın yerini değiştirin.