Merhabalar, Python’da bir listedeki tüm sayıları (int olanları) [listenin içinde başka listeler de olsa onların içindekini de toplayan] toplayan bir fonksiyon yazmaya çalışıyorum ama karşıma nasıl çözeceğime beynimin yetmediği sorunlardan bahsedeyim:
def ic_ice_toplam(v):
bos=[]
for eleman in v:
if isinstance(v,str):
continue
elif isinstance(eleman,list):
ic_ice_toplam(eleman)
elif isinstance(eleman,int):
bos.append(eleman)
return sum(bos)
Burada gördüğünüz gibi bos adlı listeyi fonksiyon içinde tanımladığımda 8. satırdaki iç içe fonksiyonu devreye girince fonksiyon her açıldığında bos listesini sıfırladığından bir işe yaramıyor. Bunu çözmek için bos adlı listeyi fonksiyonun dışında tanımladığımda ise fonksiyon çalıştıktan sonra çıkan değer bos’un içine kaydedildiğinden dolayı fonksiyon sonraki çalışmalarında o değeri de toplamın üstüne ekliyor.
bunu çözmek için ise şunu yapmayı denedim:
bos=[]
def ic_ice_toplam(v):
# bos=[]
for eleman in v:
if isinstance(v,str):
continue
elif isinstance(eleman,list):
ic_ice_toplam(eleman)
elif isinstance(eleman,int):
bos.append(eleman)
else:
bos1=bos[::]
bos=[]
return sum(bos1)
bunu yapıp denediğimde fonksiyonu tanımlarken sorun çıkmıyor ama fonksiyonu bir yerde çağırdığımda bana bos.append(eleman) yazılı kodu göstererek şu hatayı veriyor: "UnboundLocalError: local variable ‘bos’ referenced before assignment"
bunu nasıl çözebilirim yani fonksiyon her çalışmasından sonra bos adlı listeyi nasıl sıfırlattırabilirim?