25 Şubat 2015 Çarşamba

virgüllü sayı tanıma

def virgül_tanıma(sayı):
    """
    >>> virgül_tanıma(1)
    1
    >>> virgül_tanıma(1.0)
    1
    >>> virgül_tanıma(1.1)
    1.1
    >>> virgül_tanıma(1.123456789)
    1.12
    >>> type(virgül_tanıma(1.123456789))
    
    >>> virgül_tanıma(1.02)
    1.02
    >>> virgül_tanıma(1.00)
    1
    """
    try:
        tanı = str(sayı).split(".")#sayımızı karakter dizisine
        # dönüştürüp split vasıtasıyla noktadan bölüyoruz.
        # bildiğiniz üzere split sadece karakter dizileri üzerinde
        #işlem yapabiliyor. sonrada tanı adlı değişkene atıyoruz.
        #tanı adlı değiken iki elemalı (ki ikiside karakter dizisi)
        #bir liste döndürüyor.
        
        if tanı[1] == "0": #tanının virgülden sonraki kısmının sıfır
            #olup olmadığına bakıyoruz . eğer sıfır'sa (0) virgülsüz
            # bir sayı döndürüyoruz.  tanı adlı değişkenimiz
            #bir karakter dizisi (str) olduğu için sıfır'ı ("0") da karakter
            #dizisine dönüştürüyoruz. 
            return round(sayı)

        else: # sayımızın virgülden sonrası sıfır değilse işler
            return round(sayı, 2) #sayının fazlalık kısmını
            #bu şekilde kırpmış oluruz. fazla virgüllü sayılar
            #özellikle son kullanıcı için pek te iştah kabartıcı
            #bulunmayabilir. ayrıca para birimlerinde de (kuruş, 
            #cent gibi) genelde (virgülden sonra ki kısım kırık
            #(demirlikler) para birimlerini temsil eder) iki birimden
            #        oluşur ben süt
            # hesaplayıcı için tasarladığım için virgülden sonra
            #iki birimin gösterilmesini tercih ettim tabi bu sizin
            #tercihinize kalmış.

    except IndexError: #eğer sayımız kayan noktalı bir
        #sayı değilde bir tam sayı ise modülümüzün çökmesini
        #önleyip aynı sayıyı döndürüyoruz.
        return sayı