Python uygulamam çalışmıyor

Şimdi şöyle ben bi uygulama yapmak istiyorum bankamatik uygulaması fonksiyona para değeri girildiğinde hesaptaki bakiye ve ekbakiye den çekmesi gerekiyor. Buradaki kritik nokta öncelik bakiyeden çekecek sonra eğer bakiyede para yoksa ekbakiyeden çekmesi gerekiyor.

Bilgileri dictionary listesinden alıyorum ama eşitleyemiyorum, burdaki hataları açıklayıp bana yardımcı olabilecek birileri varmıdır ?

SadıkHesap = {
    'ad' : 'Sadık Turan',
    'hesapNo' : '131245678',
    'bakiye' : 3000,
    'ekhesap' : 2000
}

AliHesap = {
    'ad' : 'Ali Turan',
    'hesapNo' : '12345678',
    'bakiye' : 2000,
    'ekHesap' : 1000 
}

def paraCek(para):
    isim = input('İsminizi Giriniz :')
    if isim == SadıkHesap[{'ad'}]:
        hesapno = input('Hesap No Gir: ')
        if hesapno == SadıkHesap[{'hesapNo'}]:
            print('Hesaba Giriş Yapıldı')
            for bakiye in SadıkHesap[{'bakiye'}]:
                Toplam = bakiye - para
                if Toplam <= 0:
                    Toplam = SadıkHesap[{'ekHesap'}]
                    print(Toplam)
                print(Toplam)
            
paraCek(200)
            

Sözlüklerden bir anahtarın değerini alırken, listedeki indeksi yazdığımız yere anahtarı yazarız.
Sizin erişmeye çalıştığınız anahtar hem sözlükte yok hem de sözlükte anahtar olarak var olması imkansız.
Sizin “ad” anahtarının değerine erişmeniz için şöyle yazmanız gerek:

sözlük["ad"] 

@Alih78’in yazdıklarına ek olarak kodunuzun

for bakiye in SadıkHesap[{'bakiye'}]:

kısmındaki döngü hata verecektir. SadıkHesap[“bakiye”] değişkeni bir integer sayıdır. İnteger sayı üzerinde bu şekilde bir döngü oluşturamazsınız ki böyle bir şeye zaten gerek yok sizin programınızda. Ve yazdığınız fonksiyon sadece SadıkHesap isimli sözlük üzerinde işlem yapıyor. İsim olarak farklı bir isim girilmesi durumunda hiçbir işlem yapmayacaktır. Bunun yerine oluşturduğunuz fonksiyona sözlüğü de verirseniz istediğiniz şekilde işlem yaptırabilirsiniz.

def paraCek(hesap,para):

    isim = input("Müşteri ismini girin :")
    hesap_no = input("Hesap Numarasini Girin :")

    if hesap["ad"] == isim and hesap["hesapNo"] == hesap_no:
        print("Giris Basarili")

        if para > hesap["bakiye"] + hesap["ekHesap"]:
            print("Yetersiz Bakiye")
        elif para <= hesap["bakiye"]:
            hesap["bakiye"] = hesap["bakiye"] - para
            print("Para çekme işlemi yapılmıştır.")
            print("Güncel bakiyeniz : ",hesap["bakiye"])
            print("Güncel ek hesabınız : ",hesap["ekHesap"])
        elif para <= (hesap["bakiye"]+ hesap["ekHesap"]):
            miktar = para - hesap["bakiye"]
            hesap["bakiye"] = 0
            hesap["ekHesap"] = hesap["ekHesap"]-miktar
            print("Para çekme işlemi yapılmıştır.")
            print("Güncel bakiyeniz : ",hesap["bakiye"])
            print("Güncel ek hesabınız : ",hesap["ekHesap"])
            
    else:
        print("Giriş Başarısız")
        
paraCek(AliHesap,5000)

Çok teşekkür ederim hepinize sizden yola çıkarak programı şöyle tamamladım.
Peki bu programı daha fonksiyonel bi hale getirebilirmiyiz ?

SadıkHesap = {
    'ad' : 'Sadık Turan',
    'hesapNo' : '131245678',
    'bakiye' : 3000,
    'ekhesap' : 2000
}
def paraCek(hesap,para):
    isim = input('İsminizi Giriniz: ')
    hesapNo = input('Hesap no Giriniz: ')
    if isim == hesap['ad'] and hesapNo == hesap['hesapNo']:
        print('Giriş Yapıldı.')

        if para > hesap['bakiye'] + hesap['ekhesap']:
            print('Bakiye Yetersiz')
        elif para <= hesap['bakiye']:
            hesap['bakiye'] = hesap['bakiye'] - para
            print('para çekme işlemi yapılmıştır')
            print('Güncel Bakiyeniz: ' ,hesap['bakiye'])
            print('Güncel ek Hesabınız: ' ,hesap['ekhesap'])
        elif para > hesap['bakiye']:
            kontrol = input('Bakiyenizde Yeterli miktar yoktur ek hesap kullanılsın mı (e/h): ' )
            if kontrol == 'e':
                miktar = hesap['ekhesap'] + hesap['bakiye'] - para
                hesap['bakiye'] = 0
                print(f"Para Çekilmiştir ek hesapta kalan: {miktar}, bakiyede kalan: {hesap['bakiye']}")
            else:
                print('Çıkış Yapıldı.')
    else:
        print('Giriş Başarısız.')
paraCek(SadıkHesap,1000)

Hayal gücünuze bağlı herşey yapılabilir. Mesela kullanıcı bilgilerini koddan bağımsız olarak bir dosya yada veritabanında tutabilirsiniz. Giriş için ayrı bir fonsiyon, para işlemleri için farklı bir fonksiyon yazabilirsin. Giriş yapıldığında kullanıcı bilgilerini gösteren karşılama menüsü gibi bir bölüm oluşturabilirsiniz. 3 kez yanlış giriş yapıldığında giriş imkanını kisitlayabilirsiniz. Para işlemlerinde sadece sayı girilmesini sağlamak için bir kontrol kodu yazabilirsiniz.

1 Beğeni