aHesap = {
"ad": "mehmetB",
"hesapNo" : "8946534",
"bakiye" : 2000,
"ekHesap": 1000
}
bHesap = {
"ad": "aliA",
"hesapNo" : "8946534",
"bakiye" : 2000,
"ekHesap": 1000
}
karar = int(input("para çekmek için 1 yatırmak içinse 2 yazınız: "))
if karar == 1:
hesap1 = input("hesap ad: ")
miktar1 = int(input("miktar: "))
def paraCek(hesap, miktar):
print(f"merhaba {hesap['ad']} ")
paraCek(hesap1 , miktar1)
hesap["ad"] şeklinde bir yapı kullanıyorsunuz fakat hesap değişkeninde bir dictionary değil bir string var. Ayrıca hesapları da bir liste içinde saklamanız daha doğru olur çünkü bu şekilde hesaplarda döngü döndüremezsiniz. Yazmak istediğiniz yazılıma ve yazdığınız koda baktığımda bu yazılımı yazmak için yeterli temeliniz olmadığı anlaşılıyor. Python'daki veri yapılarını araştırın ve yazdığınız her satırdaki kodların ne işe yaradığını iyice düşünün, ondan sonra bu kodu tekrar sıfırdan yazın.Konunun bununla bir alakası yok, iki kullanım da doğru. Tek farklarıEk olarak hesap[ad] yerine hesap.get(ad) olması gerek.
hesap["ad"] kullanıldığında dictionary'de "ad" diye bir key yoksa KeyError hatası bırakılır, hesap.get("ad") ise "ad" diye bir key yoksa boş olarak geri dönüş yapar.If içinde fonksiyon tanımı tuhaf olmuş. Ek olarak hesap[ad] yerine hesap. Get(ad) olması gerek.
Yazdım ya zaten?Gözünüze çarpan yanlış bir kullanım var mı
Hesap1 değişkenine string olarak bir ad alıyorsunuz fakat hangi dictionary'e ait olduğunu bilmiyorsunuz. Daha sonra da dictionary'den ismi çekmek içinhesap["ad"]şeklinde bir yapı kullanıyorsunuz fakat hesap değişkeninde bir dictionary değil bir string var.
Hesap1 değişkenine string olarak bir ad alıyorsunuz fakat hangi Dictionary'e ait olduğunu bilmiyorsunuz. Daha sonra da Dictionary'den ismi çekmek içinhesap["ad"]şeklinde bir yapı kullanıyorsunuz fakat hesap değişkeninde bir dictionary değil bir string var. Ayrıca hesapları da bir liste içinde saklamanız daha doğru olur çünkü bu şekilde hesaplarda döngü döndüremezsiniz. Yazmak istediğiniz yazılıma ve yazdığınız koda baktığımda bu yazılımı yazmak için yeterli temeliniz olmadığı anlaşılıyor. Python'daki veri yapılarını araştırın ve yazdığınız her satırdaki kodların ne işe yaradığını iyice düşünün, ondan sonra bu kodu tekrar sıfırdan yazın.
Konunun bununla bir alakası yok, iki kullanım da doğru. Tek farklarıhesap["ad"]kullanıldığında Dictionary'de "ad" diye bir key yoksa keyerror hatası bırakılır,hesap.get("ad")ise "ad" diye bir key yoksa boş olarak geri dönüş yapar.
kusura bakamayın mesaj gitmedi zannetdim tekrar yazdımYazdım ya zaten?
Dictionary'leri olduğu gibi bir listeye ekleyin. Daha sonra yazılan isme sahip olan dictionary'i bulmak ve seçmek için aşağıdaki gibi bir yapı kullanabilirsiniz.Merhaba bir şey sormak istiyorum size şöyle birkaç deneme yaptım ama sanırım dict liste bicimi ile olacak gibi görünmüyor ben normal liste çevirip kodu düzenlesem daha iyi olacağını düşünüyorum eğer ki bu şekilde inputdan almamın bir yolu yoksa.
secilen_hesap = [i for i in hesap_listesi if i["ad"] == hesap_adi][0]
Dictionary'leri olduğu gibi bir listeye ekleyin. Daha sonra yazılan isme sahip olan Dictionary'i bulmak ve seçmek için aşağıdaki gibi bir yapı kullanabilirsiniz.
Python:secilen_hesap = [bulunan_hesap for i in hesap_listesi if i["ad"] == hesap_adi][0]
Kodu telefondan yazdığım için bulunan_hesap kısmını yanlışlıkla yazmışım, orası da i olacak.Bir tık zor anlayan biriyim(bir tık mı?) eğer ki yanlış anlamdıysam list compresion yapılmış köşeli parantezin içini açıklamaya çalışırsam bulunan_hesap değişken olması gerek(tam bilmiyorum öyle tahmin ediyorum) for döngüsü hesap listesini gez ardına if de i değişkeni ad Index'in hesap_adi'nın 0 indexsine eşit mi yanlış anlamaıysam böyle ama başındaki bulunan_hesap ne olduğunu tam bilmiyorum.
Kodu telefondan yazdığım için bulunan_hesap kısmını yanlışlıkla yazmışım, orası da i olacak.
Anlatayım kodu. Köşeli parantezler içindeki tek satır for döngüsü hesap listesi içinde dönerken her hesabı sırayla ı'ye alıyor, "ad" kısmı girilen isme eşit olan i değişkenindeki Dictionary'i de yeni bir listeye atıyor. Sonuç olarak elimizde bir liste oluyor. Yani "ad" kısmı girilen isme eşit olan birden fazla hesap varsa onlar da listede olacak ama bizim birini seçmemiz gerek amacımız için. Listeyi döndüren yerin sağına da [0] yazıp sonuç listesindeki 0. indexteki Dictionary'i, yani ilk bulunan hesabı alıyoruz.