Dersler

View on GitHub

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)

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

  1. Girilen yılın artık yıl olup olmadığını bulun.
  2. Üç kenarı girilen üçgenin kurulup kurulamayacağını ve kuruluyorsa türünü yazdırın.
  3. 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.
  4. Bir ölçüm listesinin en küçük, en büyük ve ortalama değerini bulun.
  5. Bir listedeki ilk ve son elemanın yerini değiştirin.