Python koddaki hata nedir?

tH3as

Hectopat
Katılım
3 Ocak 2022
Mesajlar
1.087
Çözümler
4
Python:
print('''
----------------------------------------------
         
                ATM PROGRAMI

----------------------------------------------
''')

kart_no = 123456789
tel_no = 5331234567
dort_haneli_sifre = int('1234')
yanlis_hakki = 3



while True:
    k_adı_tel_no = int(input('Kart no ya da tel no giriniz:'))
    Sifre = int(input('Hesap Şifreniz:'))
   
   
    if (k_adı_tel_no == kart_no or tel_no and Sifre == dort_haneli_sifre):
        print('Başarılı bir şekilde giriş yaptınız yönlendiriliyorsunuz.')
        break
   
    elif ( k_adı_tel_no != kart_no or tel_no):
        yanlis_hakki -= 1
        print('Kullanıcı adı veya şifre yanlış\nKalan deneme hakkınız:',yanlis_hakki)
        if (yanlis_hakki == 0):
            print('yanlış hakkınız doldu çıkartılıyorsunuz')
            break
   
    else:
         if(Sifre != dort_haneli_sifre):
            yanlis_hakki -= 1
            print('Kullanıcı adı veya şireniz yanlış\nKalan deneme hakkınız:',yanlis_hakki)
            if (yanlis_hakki == 0):
                print('yanlış hakkınız doldu çıkartılıyorsunuz')
                break


print('''----------------------------------------------''')

print('''
Tekrardan hoşgeldiniz yapabileceğiniz işlemler
1 - Bakiye sorgulama
2 - Para çekme
3 - Para yatırma
4 - çıkmak için 0'a basınız
''')




bakiye = 1500
while True:
    istenen_islem = int(input("Ne yapmak istersiniz?"))
   
   
    if (istenen_islem == 0):
        print('Ayrılıyorsunuz, iyi günler dileriz.')
        break
    elif (istenen_islem == 1):
        print('Bakiyeniz:{} tl'.format(bakiye))
   
    elif (istenen_islem == 2):
        cekilmek_istenen_para = int(input('Kaç tl çekmek istersiniz?'))
        cekilmek_istenen_para -= bakiye
        if(bakiye-cekilmek_istenen_para < 0):
                    print("Hesabınızda talep edilen tutar bulunmamaktadır.")
                    continue

    elif (istenen_islem == 3):
        yatirilmak_istenen_para = int(input('Ne kadar yatırmak istersiniz?'))
        yatirilmak_istenen_para += bakiye  
        print('işeminiz başarılı bir şekilde gerçekleşti. Yeni bakiyeniz', bakiye)
   
    else:
        print('Yanlış işlem yaptınız tekrar deneyiniz.')

Selamlar kod yukarıda gördüğünüz gibi bir atm programı yapmaya çalıştım. Ancak şifre kısmını atlarsanız problem orada değil para çekme ve para yüklemede problem var. Bakiye değişmiyor o işlemleri yaparken nasıl düzeltebilirim bu kodu.
 
Hatalarını sıralayalım.
while True kullanmak.
k_adı_tel_no == kart_no or tel_no yazmak. Bunun ne anlama geldiğini bilmiyorsun. Boolean işlemleri öğren ve Python'da nasıl çalıştıklarını öğren. Sen farkında değilsin ama şifreyi doğru girdiğin halde ne girersen gir, giriş yapabilirsin bu yüzden.
Şifre yanlış olduğunda ise elif kısmına girer. Çünkü oradaki boolean ifade de hatalı. Sürekli True döndürecek bir şey yazılmış. Bu yüzden else kısmına hiçbir zaman girmez.

Bu hatalı girişten sonra giriş kısmını söylediğiniz gibi atlamış olalım.
E yine while True var.
Hata kısmına gelecek olursak yanlış değişkenin değerini değiştiriyorsunuz. Buna ek olarak kontrol kısmını da yanlış yerde yapıyorsunuz. Adam borçlanınca adama borçlanamamazsınız denmez. Adam borçlanmadan önce denir.

Kod:
cekilmek_istenen_para -= bakiye
if (bakiye-cekilmek_istenen_para < 0):
    print("Hesabınızda talep edilen tutar bulunmamaktadır.")
    continue

# yerine

if (bakiye - cekilmek_istenen_para < 0):
    print("Hesabınızda talep edilen tutar bulunmamaktadır.")
    continue
bakiye -= cekilmek_istenen_para
 
Hatalarını sıralayalım.
while True kullanmak.
k_adı_tel_no == kart_no or tel_no yazmak. Bunun ne anlama geldiğini bilmiyorsun. Boolean işlemleri öğren ve Python'da nasıl çalıştıklarını öğren. Sen farkında değilsin ama şifreyi doğru girdiğin halde ne girersen gir, giriş yapabilirsin bu yüzden.
Şifre yanlış olduğunda ise elif kısmına girer. Çünkü oradaki boolean ifade de hatalı. Sürekli True döndürecek bir şey yazılmış. Bu yüzden else kısmına hiçbir zaman girmez.

Bu hatalı girişten sonra giriş kısmını söylediğiniz gibi atlamış olalım.
E yine while True var.
Hata kısmına gelecek olursak yanlış değişkenin değerini değiştiriyorsunuz. Buna ek olarak kontrol kısmını da yanlış yerde yapıyorsunuz. Adam borçlanınca adama borçlanamamazsınız denmez. Adam borçlanmadan önce denir.
Kod:
cekilmek_istenen_para -= bakiye
if (bakiye-cekilmek_istenen_para < 0):
 print("Hesabınızda talep edilen tutar bulunmamaktadır.")
 continue

# yerine

if (cekilmek_istenen_para - bakiye < 0):
 print("Hesabınızda talep edilen tutar bulunmamaktadır.")
 continue
bakiye -= cekilmek_istenen_para

Aynen. Arkadaşın dediği gibi giriş kısmında da sorun var. Ek olarak istersen kullanıcı adı ve şifre kontrolünü tek if ile kontrol edebilirsin :) Moralin bozulmasın böyle böyle eksikler kapanır elbet. İyi çalışmalar :)
 
Hatalarını sıralayalım.
while True kullanmak.
k_adı_tel_no == kart_no or tel_no yazmak. Bunun ne anlama geldiğini bilmiyorsun. Boolean işlemleri öğren ve Python'da nasıl çalıştıklarını öğren. Sen farkında değilsin ama şifreyi doğru girdiğin halde ne girersen gir, giriş yapabilirsin bu yüzden.
Şifre yanlış olduğunda ise elif kısmına girer. Çünkü oradaki boolean ifade de hatalı. Sürekli True döndürecek bir şey yazılmış. Bu yüzden else kısmına hiçbir zaman girmez.

Bu hatalı girişten sonra giriş kısmını söylediğiniz gibi atlamış olalım.
E yine while True var.
Hata kısmına gelecek olursak yanlış değişkenin değerini değiştiriyorsunuz. Buna ek olarak kontrol kısmını da yanlış yerde yapıyorsunuz. Adam borçlanınca adama borçlanamamazsınız denmez. Adam borçlanmadan önce denir.

Kod:
cekilmek_istenen_para -= bakiye
if (bakiye-cekilmek_istenen_para < 0):
    print("Hesabınızda talep edilen tutar bulunmamaktadır.")
    continue

# yerine

if (bakiye - cekilmek_istenen_para < 0):
    print("Hesabınızda talep edilen tutar bulunmamaktadır.")
    continue
bakiye -= cekilmek_istenen_para
Aynen. Arkadaşın dediği gibi giriş kısmında da sorun var. Ek olarak istersen kullanıcı adı ve şifre kontrolünü tek if ile kontrol edebilirsin :) Moralin bozulmasın böyle böyle eksikler kapanır elbet. İyi çalışmalar :)
yatirilmak_istenen_para += bakiye
cekilmek_istenen_para -= bakiye

Bu satırlarda bakiye ile yatirilmak/cekilmek istenen para'nın yerini değiştirin. Yani doğrusu:

bakiye += yatirilmak_istenen_para
bakiye -= cekilmek_istenen_para
Teşekkürler yardımlarınız için.
 

Yeni konular

Geri
Yukarı