1. Duyuruyu Kapat

len() fonksiyonu ile ilgili basit bir yardım.

'Python' forumunda shine tarafından 1 Kasım 2016 tarihinde açılan konu

  1. shine

    shine New Member

    Katılım:
    5 Aralık 2015
    Mesaj:
    23
    Beğeniler:
    0
    Ödül Puanları:
    1
    Şehir:
    Belirtilmemiş
    S.A arkadaşlar. Uzun araştırmalar ve tartışmaları inceledikten sonra Python öğrenmeye karar verdim ve bunun için kaynak olarak Fırat Özgül'ün  
    Python 3 için Türkçe Kılavuz Sürüm 3 pdf'sini kullanıyorum. Kitapta sayfa sayfa ilerlerken birtakım mantıkları kavramak için verilen basit bir örnekte bana garip gelen bir sorunla karşılaştım. Fikirlerinizi ve nerede hata yaptığımı anlamak istiyorum.

    Örnek senaryo; 1 kişinin günlük işe gidiş ve geliş melaiyetlerine göre ayda çalışılan toplam gün sayısı üzerinden aylık işe gidiş-geliş masrafını hesaplayan basit bir aritmetik senaryosu aslında. Daha uzatmadan ilgili etkileşimli kabuk çıktısını ekleyeyeyim öncelikle

    Kod:
    >>> gunluk_masraf=2.9
    >>> top_calisma_gunu=22
    >>> aylik_masraf=gunluk_masraf*top_calisma_gunu
    >>> len(aylik_masraf)
    Traceback (most recent call last):
      File "<pyshell#33>", line 1, in <module>
        len(aylik_masraf)
    TypeError: object of type 'float' has no len()
    >>> type(aylik_masraf)
    <class 'float'>
    >>> 
    şimdi burada adam C.tesi ve Pazar çalışmadığı için 1 ayda toplam 22 gün çalışıyor.
    işe gidişi 1.5
    işten dönüşü 1.4 TL.
    Günlük işe gidip gelme maliyeti:2.9 TL.
    1 ayda 22 gün çalıştığından
    Aylık işe git-gel masrafı = 22*2.9=63.8 TL.
    Bunu direkt belirleyip python'da 22*(1.5+1.4) yazsam da 63.8'i verecek
    Kısa yoldan 22*2.9 yapsam da 63.8 TL sonucunu verecek.

    Ama ben değişken kullanma pratiği açısından yukarıdaki gibi yapmayı tercih ettim. 

    Sorun şurada;
    Type() fonksiyonu ile baktığımda aylik_masraf değişkeninin aldığı 63.8 değerini tanıyor çünkü veri tipinin float olduğunu söylüyor.

    Ama aynı değişkene len() fonksiyonu ile  baktığımda hata veriyor.

    Bende denemek için bu defa şöyle yazdım (bir nevi sağlama yapmak açısından)

    Kod:
    >>> gunluk_masraf=2.9
    >>> top_calisma_gunu=22
    >>> aylik_masraf=gunluk_masraf*top_calisma_gunu
    >>> type(aylik_masraf)
    <class 'float'>
    >>> 
    yine type() float olduğunu söylüyor, yani aylik_masraf değişkenini değeriyle birlikte tanıyor ama len(aylik_masraf) yine hata döndürüyor.

    Sonra bira daha kurcaladım len('aylik_masraf') yapınca bana aylik_masraf sözcüklerindeki karakter sayısını veriyor.

    Şimdi buradan çıkan sonuç, sayısal bir değeri len() ile kullanamıyor muyuz veya kullanılıyorsa syntax nasıl olmalı. Yani benim aylik_masraf değişkeninin hesaplamalar sonucu aldığı sayısal değeri len() ile kullanmaya kalkışmam manasız mı yoksa.

    Sorum size saçma gelebilir ama çevremde direkt yüzyüze sorabileceğim biri yok ancak kaynakları kurcala-dene-hata çıkarsa bilenlere web kanalıyla sor metoduna elim mahkum.  :)
    [hr]
    Benim buradan anladığım ve vardığım sonuç an itibariyle, hesaplamalar ve işlemler sonucu sayısal yani (int) değere sahip olan bir değişken len () fonksiyonuna parametre olarak girildiğinde bu fonksiyonun işlevi bu sayısal değerin kaç karakterden oluştuğunu bildirmek değil o yüzden hata veriyor. Ama bu yürüttüğüm mantık doğru mu yanlış mı bilemiyorum yanıtlarınızı bekliyorum.
     
  2. RichWarrior

    RichWarrior Albay

    Katılım:
    19 Şubat 2016
    Mesaj:
    244
    Beğeniler:
    68
    Ödül Puanları:
    28
    Şehir:
    (34) İstanbul Avrupa
    Web Sitesi:
    Cvp: len() fonksiyonu ile ilgili basit bir yardım.

    Python da benim bildiğim len() fonksiyonu şu fonksiyonda kullanılabilir .
    Örneğin bir karekter var bu karekterin maksimum 9 karekter girişi yapılmasını istiyorsun
    Kod:
    #!/usr/bin/python3.5
    #
    deger1=input("Değer Giriniz:")
    if len(deger1)== 9;
         değişkenler
    else:
       değişkenler 
    
    bu şekilde olabilir
     
  3. shine

    shine New Member

    Katılım:
    5 Aralık 2015
    Mesaj:
    23
    Beğeniler:
    0
    Ödül Puanları:
    1
    Şehir:
    Belirtilmemiş
    Cvp: len() fonksiyonu ile ilgili basit bir yardım.

    Yanıt için teşekkür ederim. Henüz yeni başlayan olsamda sanırım yazdığınız kodlar şöyle bir şey diyor kabaca
     input ile bir değer girişi istenmesi sağlanıp bu girilen değerde değer1 değişkenine aktarılıyor daha sonra girilen değerin karakter sayısı 9'a eşit ise şunu yap eşit değilse bunu yap diyor. Tabi değerin 9'karaktere eş olup olmaması durumlarında ne yapılmasını istediği kısmını anlamadım. O da acemi olduğumdandır sanıyorum.

    Benim sorduğum sorudan ise halen çıkardığım sonuç, len fonksiyonuna  int. olan bir şeylerin parametre olarak girilerek kullanımının olmadığı.
     
  4. shine

    shine New Member

    Katılım:
    5 Aralık 2015
    Mesaj:
    23
    Beğeniler:
    0
    Ödül Puanları:
    1
    Şehir:
    Belirtilmemiş
    Cvp: len() fonksiyonu ile ilgili basit bir yardım.

    Evet iyice kurcalayınca cevabı buldum, len( ) sadece string ifadelerle kullanılabiliyor ama integer ifadelerle kullanılamıyor. Örneğin bir değişkene string olan bir ifade atayınca len(değişken), bir sonuç döndürürken, değişkene atanan değer bir integer ise len(değişken) hata veriyor.
     
  5. Black Viking

    Black Viking New Member

    Katılım:
    17 Haziran 2016
    Mesaj:
    13
    Beğeniler:
    0
    Ödül Puanları:
    0
    Cvp: len() fonksiyonu ile ilgili basit bir yardım.

    İncele bakalım bunu, anlayamazsan yardımcı olayım.

    [​IMG]
     
  6. shine

    shine New Member

    Katılım:
    5 Aralık 2015
    Mesaj:
    23
    Beğeniler:
    0
    Ödül Puanları:
    1
    Şehir:
    Belirtilmemiş
    Cvp: len() fonksiyonu ile ilgili basit bir yardım.

     

Bu Sayfayı Paylaş

Share