Fonksiyonların yapısı hakkında bir soru

Merhaba. Fonksiyonlar üzerinde ufak denemeler yapıyorum ancak yapısını anlamak açısından sizlere danışmak istedim. Şöyle bir kod yazdım:

    def kumashesapla(gr,en,boy):
    kumasgr = int(input("Kumaş gr: ", gr))
    kumasen = int(input("Kumaş en: ", en))
    kumasboy = int(input("Kumaş boy: ", boy))
    carp = kumasgr * kumasen * kumasboy
    print(f"Pastalın bir katı: {carp} kg.")
    def kumashesapla (220,180,10)

Çok absürt bir deneme olmuş olabilir. Ancak amacım, “def kumashesapla” fonksiyonunu çağırıp ilgili sayıları yanına yazdığım zaman, üçünün çarpılması ve print ile ekrana vermesi. Burada yaptığım mantık hatası tam olarak nedir? Fonksiyonlar böyle işlemler için kullanılmıyor mu?

Teşekkürler şimdiden.

Merhaba. Kodunuzu buraya göre atar mısınız:

1 Beğeni

Fonksiyonun sonundaki def içeren satırı silmeniz gerekiyor. Çünkü def ifadesi fonksiyon çağrılırken değil, fonksiyon tanımlanırken kullanılır ve şu haliyle girintiniz de düzgün olmadığı için bir IndentationError hatası alırsınız. Yani ilk def anahtar sözcüğünü içeren satırın girintisini azaltmanız lazım.

def kumashesapla(gr,en,boy):
    kumasgr = int(input("Kumaş gr: ", gr))
    kumasen = int(input("Kumaş en: ", en))
    kumasboy = int(input("Kumaş boy: ", boy))
    carp = kumasgr * kumasen * kumasboy
    print(f"Pastalın bir katı: {carp} kg.")


kumashesapla(220,180,10)

Ayrıca aşağıdaki linki de ziyaret etmenizi tavsiye ederim.

https://python-istihza.yazbel.com/fonksiyonlar.html

Cevap için teşekkürler. Pekala şunu da sormak isterim:

Fonksiyonun parantezine gireceğim değeri belirlediğim zaman çarpma işlemi yapılıyor. Bu durumda fonksiyon içinde yukarıdaki koddaki gibi kullanıcıdan input istemem yanlış mı oldu? Yani hem bir değer istiyorum hem de değeri ben giriyorum?

Veya input istediğim zaman fonksiyonu boş mu çağırmalıyım?

Çalışan kod şu şekilde:

def kumashesapla(gr,en,boy):
    carp = gr * en * boy
    print(f"Pastalın bir katı: {carp} kg.")


kumashesapla(220,180,10)```

Evet gereksiz oldu. :slight_smile:

Hayır, parametreler durabilir. Ancak parametrelerin değerlerini fonksiyon çağrılırken input ile belirleyebilirsiniz.

_gr = int(input("Gr: "))
_en = int(input("En: "))
_boy = int(input("Boy: "))
kumashesapla(_gr, _en, _boy)
1 Beğeni

Pekala, söylediğiniz gibi değişken adlarını parantez içerisinde yazdığım zaman fonksiyon çalışmıyor. Ancak parantez içerisinde üç sayı yazdığım zaman inputlar çalışıyor ancak girdiğim yeni input değerlerini çarpıyor.

Neyse, gönderdiğiniz yazıyı inceleyeceğim. Teşekkür ediyorum ilginiz için.

Buradaki (ve yukaridaki mesajlardan da anladigim kadariyla, genel) probleminiz kodun analizini duz yazi seklinde yapiyor olmaniz.

kumashesapla(_gr, _en, _boy)

Soyle bir koda bakan python programcisi da, python’in kendisi de, uc adet arguman alan bir fonksiyon cagrisi gorur. Argumanlarin degerleri, fonksiyonun ne yapacagi filan bunun uzerine tartisilir.

Benzer bir ornegi Turkceden vereyim:


  1. ahmet eve gel
  2. eve git ahmet

ahmet kelimesi soldaysa konusmaci ahmet’in evinde mi demek?
arkadasimla konusurken “eve” kelimesini cikartmali miyim?


Manali analiz yapmaya baslayabilmek icin once cumle ogelerini cikartmak gerekiyor.

3 Beğeni