# # Python Sayılar

Python veri tiplerine genel bir baktıktan sonra ilk veri tip kategorimiz olan **Python Sayılar** ile derslerimize devam ediyoruz. Python programlama dilinde sayısal tiplerde üç adet veri tipimiz mevcut olup bunlar şunlardır; Bu üç değişken sayı tipi için küçük bir örnek verelim hemen:

```python
a = 5        # int
b = 46.53    # float
c = 3j       # complex
```

Değişkenlerimizin hangi veri tipinde olduğunu öğrenmek için **type()** fonksiyonunu kullandığımızı hatırlıyorsunuz. Öyleyse hemen yukarıdaki örnekte yer alan değişkenlerin tipini teyit edelim.

```python
print(type(a))    # <class 'int'>
print(type(b))    # <class 'float'>
print(type(c))    # <class 'complex'>
```

## 1. Int Veri Tipi

Python sayısal veri tiplerinden olan **int** (integer) veri tipi konumuzla başlayalım.

{% hint style="info" %}
Bir `int` değişken sonsuz uzunlukta pozitif ve negatif tam sayılardan oluşabilir. Sadece ondalık değerlere sahip olamaz.
{% endhint %}

```python
x = 10
y = 35656222554887711
z = -3255522

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

## 2. Float Veri Tipi

Python sayısal veri tiplerinden olan **float** (floating point number) veri tipi ile devam ediyoruz.

{% hint style="info" %}
Bir `float` değişken bir veya daha fazla uzunluktaki küsüratlı basamağa sahip pozitif ve negatif sayılardan oluşabilir.
{% endhint %}

```python
x = 1.10
y = 1.0
z = -35.59985

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

{% hint style="info" %}
Float veri tipinde `e` veya **E** ile 10 un katsayılarını belirtebilirsiniz.
{% endhint %}

```python
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'>
```

## 3. Complex Veri Tipi

Python sayısal veri tiplerinden olan **complex** veri tipi ile devam ediyoruz.

{% hint style="info" %}
Bir **complex** veri tipinde sanal kısımlar **j** harfiyle belirtilir.
{% endhint %}

```python
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'>
```

## 4. Tip Dönüşümleri

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

### 4.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.

```python
x = 3    # int

a = float(x)

print(a)            # 3.0

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

### 4.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.

```python
x = 7.3    # float

a = int(x)

print(a)            # 7

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

{% hint style="info" %}
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.
{% endhint %}

```python
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
```

### 4.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.

```python
x = 3    # int

a = complex(x)

print(a)            # (3+0j)

print(type(a))      # <class 'complex'>
```

### 4.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.

```python
x = 5.7    # float

a = complex(x)

print(a)            # (5.7+0j)

print(type(a))      # <class 'complex'>
```

{% hint style="warning" %}
Complex veri tipindeki bir sayıyı başka bir veri tipine çeviremezsiniz.
{% endhint %}

## 5. 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.

```python
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.

```python
import random
print(random.randrange(3))
```

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

## 6. Matematiksel İşlemler ve Fonksiyonlar

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

```python
# 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)

# 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://derslik.kerteriz.net/python-dersleri/temel-dersler/python-sayilar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
