Python Sayılar (Nümerik Tipler) ve Matematiksel İşlemler

Python kullananlar için sayılarla işlem yapmak çok kolaydır. Hem matematiksel işlemleri hem de fonksiyonları o kadar işlevseldirki idle veya komut satırı kullanarak hesap makinesine bile ihtiyaç duymadan hesaplamalarınızı yapabilirsiniz.

Python’da sayılar konusu 4 nümerik tip üzerinden temellenir. Bunlar integerlong integerfloating point ve complex değişken tipleridir. Hemen küçük bir Türkçeleştirme yaparsak tam sayılar, uzun tam sayılar, ondalıklı sayılar ve karmaşık sayılar olarak çevirebiliriz. Bu yazımızda da hepsini tek tek inceleyeceğiz.

1. Integer (Tam Sayılar)

Negatif ve pozitif tam sayılar kümesini kapsayan veri tipidir. Integer yani kısa ismiyle int olarak nitelendirilirler. (-356, 65 , 0 , 5689) gibi sayılar integer veri tipine örnek verilebilirler.

x = 10
y = 35656222554887711
z = -3255522

print(type(x))    # <class 'int'>
print(type(y))    # <class 'int'>
print(type(z))    # <class 'int'>

NOT: Bir int değişken sonsuz uzunlukta pozitif ve negatif tam sayılardan oluşabilir. Sadece ondalık değerlere sahip olamaz.

2. Long Integer (Büyük Tam Sayılar)

Python 2.x sürümünde sys.maxsize int değerinin negatif ve pozitif limitlerinin ardından long integer veri tipi başlar. Bu sayı 32-bit sistemlerde 2^32-164-bit sistemlerde 2^64-1 tam sayısına denk gelmektedir. Ama Python 3.x ile bu veri tipini rafa kaldırmış bulunuyoruz. Çünkü integer değeri artık kapasitenizin imkan verdiği değere kadar (bir nevi limitsiz) büyük olabilmektedir.

3. Float (Ondalıklı Sayı)

Şimdiye kadar hep tam sayılardan bahsedip durduk. Peki nerde bu virgüllü, ondalıklı sayılar? İşte tam olarak burada 🙂 Python’da ondalıklı sayılarımızın veri tipi float olarak geçmektedir. Bu sayılara (-5.6, 89.55552, 3.2) gibi sayıları örnek verebiliriz.

x = 1.10
y = 1.0
z = -35.59985

print(type(x))    # <class 'float'>
print(type(y))    # <class 'float'>
print(type(z))    # <class 'float'>

Float veri tipinde e veya E ile 10 un katsayılarını belirtebilirsiniz.

x = 15e3
y = 12E4
z = -87.7e100

print(x)    # 35000.0
print(y)    # 120000.0
print(z)    # -8.77e+101

print(type(x))    # <class 'float'>
print(type(y))    # <class 'float'>
print(type(z))    # <class 'float'>

NOT: 0 sayısı integer bir değişkendir ama 0.7 float özellikte bir değişken tipidir.

4. Complex (Karmaşık Sayılar)

Matematikte gördüğümüz z == z.real + z.imag*1j fonksiyonu, yani karmaşık sayılar konusu aynı şekilde Python içinde de kullanılabilir bir halde. Bu veri tipine (2+3j, -5+1j) gibi sayıları örnek verebiliriz.

x = 3+5j
y = 5j
z = -5j

print(x)    # (3+5j)
print(y)    # 5j
print(z)    # (-0-5j)

print(type(x))    # <class 'complex'>
print(type(y))    # <class 'complex'>
print(type(z))    # <class 'complex'>

NOT: Bir complex veri tipinde sanal kısımlar j harfiyle belirtilir.

5. Tip Dönüşümleri

Bir veri tipi int() , float() , ve complex() fonksiyonları kullanılarak başka bir veri tipine dönüşüm yapılabilir.

5.1 Int veri Tipinden float Veri Tipine Dönüşüm

Python programlamada int veri tipinden float veri tipine çevirme işlemi için float() fonksiyonunu kullanabilirsiniz.

x = 3    # int
a = float(x)

print(a)            # 3.0
print(type(a))      # <class 'float'>

5.2 Float veri Tipinden int Veri Tipine Dönüşüm

Python programlamada float veri tipinden int veri tipine çevirme işlemi için int() fonksiyonunu kullanabilirsiniz.

x = 7.3    # float
a = int(x)

print(a)            # 7
print(type(a))      # <class 'int'>

Float veri tipinden int veri tipine dönüşüm yaparken elinizdeki float sayının en yakın olduğu taban veya tavan int sayıya dönüşmesi için round() fonksiyonunu kullanabilirsiniz.

x = 7.3
y = 7.5
z = 7.8

a = round(x)
b = round(y)
c = round(z)

print(a)    # 7
print(b)    # 8
print(c)    # 8

5.3 Int veri Tipinden complex Veri Tipine Dönüşüm

Python programlamada int veri tipinden complex veri tipine çevirme işlemi için complex() fonksiyonunu kullanabilirsiniz.

x = 3    # int
a = complex(x)

print(a)            # (3+0j)
print(type(a))      # <class 'complex'>

5.4 Float veri Tipinden complex Veri Tipine Dönüşüm

Python programlamada float veri tipinden complex veri tipine çevirme işlemi için complex() fonksiyonunu kullanabilirsiniz.

x = 5.7    # float
a = complex(x)

print(a)            # (5.7+0j)
print(type(a))      # <class 'complex'>

NOT: Complex veri tipindeki bir sayıyı başka bir veri tipine çeviremezsiniz.

6. Rastgele Sayı Üretme & Oluşturma

Python özünde rastgele sayılar üretmek için bir random() fonksiyonu barındırmaz. Fakat ek modüller ile rastgele sayı oluşturma işlemi yapılabilir. Bunun için öncelikle import random komutu ile gerekli kütüphaneyi kodumuza eklememiz gerekiyor. Aşağıdaki örneği inceleyebilirsiniz.

import random

print(random.randrange(1,10))

Bu örnek ile 1 ve 9 arasında rastgele sayılar üretebilirsiniz. Aşağıdaki örnek ile de bir tavan sayı belirleyip 0 ile o sayı arasında rastgele sayılar üretebilirsiniz.

import random
print(random.randrange(3))

Bu örnekte oluşabilecek sayılar sadece 0,1 ve 2 dir.

NOT: Fonksiyonlara geçmeden önce en çok merak edilen konulardan birisi olan değişken limitlerine ve bit uzunluklarına değinelim.

7. Max ve Min Sayı Veri Tipi Değerleri

Python 2.x de int değişken tipinde en büyük integer değerini şu şekilde görebiliriz;

>>> sys.maxint 
>>> //sys.maxsize olarakta kullanabilirsiniz
9223372036854775807

Bu sayıdan sonra gelen sayılar otomatikmen long integer değişken tipi olarak atanır. Bu örneği şu şekilde görebiliriz:

>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>

Python 3.x ile beraber ise artık bir limit söz konusu değildir. Nasıl yani? Bu, ne kadar bir hafızaya sahipseniz o kadar uzunlukta integer tanımlayabilirsiniz demektir. Böylece long integer kavramına gerek kalmadan sonsuz(kapasiteniz dahilinde) bir integer değişkenine sahip oluyoruz.

Peki bit uzunlukları nasıl öğrenilebilir? Bu sorunuzun cevabını küçük bir yerleşik fonksiyon ile kolayca cevaplayabiliyoruz. Nasıl mı?

>>> sayi = 1
>>> sayi.bit_length()
1

>>> sayi = 8
>>> sayi.bit_length()
3

>>> sayi = 538
>>> sayi.bit_length()
10

Gördüğünüz gibi yukarıdaki fonksiyon aracılığı ile nümerik değişkenlerinizin bit uzunluğunu öğrenebilirsiniz.

8. Matematiksel İşlemler ve Fonksiyonlar

Bu bölümde Python’da sayılar üzerinde kullanabileceğimiz operantları ve en çok kullanılan fonksiyonları inceleyeceğiz.

// Toplama İşlemi
>>> x + y

// Çıkarma İşlemi
>>> x - y

// Çarpma İşlemi
>>> x * y    

// Bölme İşlemi
>>> x / y

// Bölme İşlemi (Küsüratı siler)
>>> x // y

// Mod İşlemi
>>> x % y

// Sayıyı negatife çevirme
>>> -x

// Mutlak Değer
>>> abs(x)

// Tam Sayıya Çevirme
>>> int(x)

// Uzun Tam Sayıya Çevirme
>>> long(x)

// Ondalık Sayıya Çevirme
>>> float(x)

// Kompleks Sayı Oluşturma
>>> complex(x,y)

// Kompleks Sayının Eşleniği
>>> c.conjugate()

// Bölme ve Mod İşlemi (x // y, x % y)
>>> divmod(x, y)

// X in Y üssü (ikiside aynı işlemi yapar)
>>> pow(x, y)
>>> x**y

Böylece bu yazımızda Python sayılar ve temel fonksiyonlarla birlikte kullanımlarını öğrenmiş olduk. Tabi matematik söz konusu olunca daha yüzlerce fonksiyon Python bünyesinde yer alıyor ama hepsini bir konu altında inceleyemeyeceğimiz için sorularınızı yorum olarak alalım. Diğer yazılarımızda görüşmek üzere sağlıcakla kalın.