Def komutunda wdir hatası

def sayilariTopla(*args):
toplam = 0
for i in args:
toplam += i
return toplam

print(sayilariTopla(1,2,3,4,5,6,7,8,9,10))

Sorun nerede anlıyamadım tam olarak ne hatası vermekte kod girdilerini atabilirmisin ? girdi de hata olabilir belki [code] etiketi arasına alırsan

1 Beğeni

*args kullanmak yerine bir liste alırsanız sorun çözülür sanıyorum.

1 Beğeni

Args kullanmak yerine liste kullanmak çok farklı şeyler kullanıcıdan gelecek olan değerleri nasıl almayı planlıyorsunuz kullanıcı 10 tane sayıyı aynı anda toplamak istiyor kaç tane sayıyı toplamak istediğini bilemezsiniz kodda herhangi bir sıkıntı durumu söz konusu değil hatta şu kod sorunsuz çalışmaktadır python da fonksiyonlar içinde * kullanılırsa args olmak zorunda değil parametresiz değer anlamına gelmektedir sınırsız verilebilir.

def topla(*args,toplam=0):
      for i in args:
            toplam += i
     return(toplam)

#Output
print(topla(5,4,3,2,1)) >>>>> 15
1 Beğeni

[code]def sayilariTopla(*args):
toplam = 0
for i in args:
toplam += i
return toplam

print(sayilariTopla(1,2,3,4,5,6,7,8,9,10)) [code]

kodlar bu şekilde .

çıktı ise ; runfile(‘C:/Users/User/Documents/pyhton/temel/mertmekatonik6-print fonksiyonu.py’, wdir=‘C:/Users/User/Documents/pyhton/temel’)
bu şekilde.

Ancak normal şartlarda n.(n+1)/2 sonucunu yani 55 'i uazdırması lazım ama yazdırmıyor. Neden ? anlamadım .Açıkçası bu bir eğitim videosu üzerinden alınmış bir örnek. https://www.youtube.com/watch?v=6Fg_VErp5-c&list=PLK6Whnd55IH5i1klkNSBDasIaO77l-Bm9&index=6 bu link üzerinde 6:20 .dk da adam aynısını yazıyor çıktıyı da alıyor. İşin garip kısmı bende olmaması.

Kodlarınızı kod görünümüne alsanız da yardımcı olsak, böyle hiçbir şey anlamadım. :smile:

1 Beğeni

kodlar bu şekilde .

def sayilariTopla(*args):
toplam = 0
for i in args:
toplam += i
return toplam

print(sayilariTopla(1,2,3,4,5,6,7,8,9,10))

çıktı ise ;

python runfile(‘C:/Users/User/Documents/pyhton/temel/mertmekatonik6-print fonksiyonu.py’, wdir=‘C:/Users/User/Documents/pyhton/temel’)
bu şekilde.

Normal şartlarda n.(n+1)/2 sonucunu yani 55 'i yazdırması lazım ama yazdırmıyor. Neden ? anlamadım .Açıkçası bu aşağıdaki eğitim videosu üzerinden alınmış bir örnek. https://www.youtube.com/watch?v=6Fg_VErp5-c&list=PLK6Whnd55IH5i1klkNSBDasIaO77l-Bm9&index=6 bu link üzerinde 6:20 .dk da adam aynısını yazıyor çıktıyı da alıyor. İşin garip kısmı bende olmaması.

IndentationError: expected an indented block arkadaşlar boşlukla alakalı bir problemmiş düzen de önemli sanırım python da.

image

bu şekilde bir dizilimle problem kalmıyor.

Kodlar bu şekilde ise çok normal çünkü python girintilemeli bir dildir. Videodaki girintilemelere dikkat edip tekrar dener misiniz?

1 Beğeni

hocam teşekkürler son anda farkettim ben de.
Girintilere hangi konularda dikkat etmeliyim. Genel bir yargı var mı bu konuda ?

: varsa yükselir. Gerekli işlemler bitince azalır.

Genel standart olarak 4 boşluk kullanılır. Ama siz bunu kafanıza göre değiştirebilirsiniz.

Bir fonksiyon tanımladıktan sonra başlayan girintileme bitene kadar o fonksiyonun çalıştıracağı kodları gösterir. Fonksiyonun tanımı bitince tekrar önceki yüksekliğine döner. Bu if, else vs. için de geçerlidir.

1 Beğeni

Hocamiz burda girdileri bırakmış kodu bu şekilde yazsaydınız hicbir sorun olmazdı ve girintinin ne demek olduğunu bilmiyorsaniz fonksiyonlar sizin için ağır konulardır.

Fonksiyonları çok kolay anlayabiliyorum bazı şeyleri de kervanı yolda dizerek yapacağım.

Aslında girintilemeyi, girintileme zorunlu olmasa bile kullanmak lazım. Ki Java, C, JavaScript, vb. dillerde zorunlu olmadığı halde kullanabiliyoruz. Oysa tek satırda bile yazabiliriz tüm programı. Ancak hem birden çok satır hem de girintileme okumayı oldukça kolaylaştırdığı için kullanıyoruz bunları. Python’da girintilemenin zorunlu olması çok önemli değil, zorunlu olmasa da kullanırdık muhtemelen. Bu sebeple girintilemeye özellikle dikkat etmeye gerek yok. Eğer diğer dillerden girintilemeye aşinalığınız varsa, olması gerektiğini düşündüğünüz yerde kullanın girintilemeyi, büyük ihtimalle bir sorunla karşılaşmazsınız.