Oncelikle kullandigin dili duzeltmen lazim. Sebep↔sonuc iliskisi hangi yonde bilmiyorum fakat dilin yanlis kullanimiyla programlarin nasil calistigini anlamama, basit sorunlari cozememe arasinda yuksek bir korelasyon var.
def bir anahtar kelime, fonksiyon tanimliyor ve basilabilen bir sey degil.
Programlari parca parca incelemen lazim. Mesela MongoDB’nin problemle bir alakasi yok. Bunu goremiyorsan, MongoDB’den gelen verileri MongoDB’den gelmis gibi yapip programi tekrar deneyebilirsin.
Ayni sekilde, bir yere 4 kere tikladiginda bir sorun olusuyorsa, sorunun tiklamayla mi yoksa tiklandiginda cagrilan fonksiyonla mi alakali oldugunu anlamak icin, 4 kere tiklamis gibi yapan bir kod* yazip calistirabilirsin. Sorun devam ediyorsa tiklamayla alakasi yoktur ve kullanici arayuzunun ekran goruntulerini almakla ugrasmak zorunda kalmazsin.
*: Mesela tiklandiginda cagrilan fonksiyonu 4 kere cagiran
Bu satırda command= kısmı sürekli sinifYonetimi çalıştırıyor. Yani her şeyi tekrardan ekliyor. Ama ben nasıl sadece 1 kere eklenmesini sağlayacağım bilmiyorum.
Aklıma ilkel bir yöntem geldi. Global bir değişken oluştururak onu sayaç gibi kullanabilirsiniz.
sinifYonetimi isimli fonksiyon çağırıldığında, belirli bir koşul cümlesi ile o global değişkeni kontrol edip, yalnızca 1 kez gerçekleşmesini sağlayabilirsiniz.
Fonksiyon gerçekleştiken sonra mesela a += 1 diyerek değerini artırırsınız. Koşul cümlesi de if a == 0:
şeklinde olabilir.
Mesela yazılımda kimisi 10 tane sınıf ekler, Kimisi 5 tane. Ben bu verilerin ID numaralarını hangi sayıya kadar sorgulayacağım? Sorun bu. for döngüsü ile yapacağım fakat bunu nasıl yapabilirim. Aklıma fikir gelmiyor.
i = 1
i = i + 1
def aga():
for x in veriyicek:
g = x["sinif"]
print(g)
def kontroll(gg):
for z in aga:
gg = aga
asd = liste.get(gg)
if asd == True:
print("Var")
else:
print("Yok")
aga()
kontroll()
kontroll() fonksiyonunu belirtirken parametre belirtmişsin. Fakat fonksiyonu çağırırken herhangi bir parametre girmemişsin.
def kontroll(gg) burada gg yerine ne yazmak istiyorsan, fonksiyonu çağırırken kontrol(gg) şeklinde çağırmalısın.
Ayrıca parametre olarak gg neden belirledin? Fonksiyon içerisinde gg değerini zaten aga olarak değiştirmişsin. Parametre olan gg’yi silersen sorun çözülecektir diye düşünüyorum.
def kontroll(): şeklinde tanımlamalısın.
Yanlış anlama ama ben henüz hoca değilim Yalnızca 3 aydır ilgileniyorum yazılımla. Yine de bir kaç tavsiyede bulunabilirim. Değişken isimlerini belirlerken neye göre belirledin bilmiyorum fakat bakılınca herhangi bir şeyi anımsatmıyolar ve biraz karışıklığa sebebiyet veriyor. Aynı şekilde fonksiyon isimlerinden yalnızca kontroll mantıklı bir isme sahip. Ben çalışırken daha derli toplu çalışmayı hedeflediğimden fonksiyonları genelde tek çatı altına toplamak amacıyla sınıflar (class) oluştururum ve değişkenleri de buna göre isimlendiririm. Mesela class insan: olarak bir sınıf oluşturacaksam, değişkenlerin isimleri de yas, soyad, boy, cinsiyet gibisinden olurlar. Bu da çalışırken hem moral veriyor, hem de işleri kolaylaştırıyor. Ki aslında kolaylaşması orada asıl moral veren şey. Dilersen bu konuda daha uzman olan kişilerin görüşlerini almak amacıyla yeni bir konu oluşturabilirsin. Forum kurallarına bağlı olarak konudan fazla uzaklaşmayalım.
Yazdığınız kodda çok hatalar var ve bunlar sizin bazı konuları tam anlamıyla anlamadığınızı gösteriyor. Bence kütüphanelerle çalışmadan fonksiyonlar dahil olmak üzere oraya kadar olan konuları iyice bir öğrenmeye çalışın.
Mesela, aga isminde bir fonksiyon tanımlıyorsunuz. Sonra kontroll fonksiyonunda for z in aga gibi bir kod yazıyorsunuz. Neden böyle bir ifade yazdınız, neyi amaçlıyordunuz hiç bilmiyorum.
Ayrıca i = 1 demişsiniz. Sonra da i = i + 1 demişsiniz. Buna ne gerek vardı, doğrudan i = 2 niye demediniz bilmiyorum. Neredeyse kodun tamamı yanlış.
Bu durumda nasıl yardım edebilirim doğrusu bilmiyorum.
@dildeolupbitenfor z in aga’nin sebebini merak etmiyor; sebebi ne olursa olsun boyle bir kod yazan birine karmasik konularda yardim edemedigimizi soylemeye calisiyor.
Burada ne demek istedigini sorsam, cogu kisinin anlayabilecegi bir dilde ifade edebilir misin?
Bence terminolojiyi de bir gözden geçirmeniz gerekiyor. Çünkü aga isimli fonksiyon, kontroll isimli fonksiyonun içinde tanımlanmıyor, global alanda tanımlanıyor. Bir fonksiyonu tanımlamak demek def fonksiyon_ismi(): ... şeklinde bir ifade yazmak demek. Bu ifade, fonksiyon_ismi isimli bir fonksiyonu tanımlar.
İyi ama aga’dan bir şey return edilmemiş olmasına rağmen, kontroll fonksiyonunda gg = aga diye bir kod yazıyorsunuz. Üstelik bu ifade gg isimli başka bir fonksiyon tanımlar. Fonksiyondan dönen değeri gg’ye eşitlemez.
aga tek başına kullanıldığında bir fonksiyonun ismi olarak görev yapar. aga() şeklinde kullanırsanız, bu fonksiyon çağrılır. Şayet aga() fonksiyonu bir değer döndürüyorsa a = aga() ifadesiyle de fonksiyondan dönen değeri a isimli bir değişkene atarsınız.
Şimdi biz bu verileri MongoDB den çektiğimize göre koleksiyonda bulunan toplam verilerin sayılarınıda çekebiliriz. yöntem ise: Eğer ki ListBox içerisindeki itemler, MongoDB den çekilen veri sayısını geçerse yeniden yüklemesini engelleyeceğim.