Python Mini Proje: Hesap Makinesi
Python kullanarak basit bir hesap makinesi projesinin nasıl geliştirileceğini adım adım öğrenin.
Harika bir başlangıç projesi! Python ile basit bir hesap makinesi yapmak, `input()`, `print()`, `if/elif/else` koşullu ifadeler ve temel hata yönetimini öğrenmek için mükemmel bir yoldur.
İşte adım adım bir basit hesap makinesi projesi ve açıklamaları:
---
## Python ile Basit Hesap Makinesi Projesi
Bu proje, kullanıcıdan iki sayı ve bir işlem (toplama, çıkarma, çarpma, bölme) alarak sonucu ekrana yazdıran basit bir hesap makinesidir.
### Temel Özellikler:
1. **Girdi Alma:** Kullanıcıdan iki sayı ve yapılacak işlemi alır.
2. **İşlem Yapma:** Seçilen işleme göre hesaplamayı yapar.
3. **Sonuç Gösterme:** Hesaplama sonucunu ekrana yazdırır.
4. **Hata Yönetimi:**
* Geçersiz işlem girildiğinde uyarı verir.
* Sayı yerine metin girildiğinde uyarı verir.
* Sıfıra bölme hatasını yakalar.
5. **Tekrar Çalıştırma:** Kullanıcının birden fazla işlem yapmasına olanak tanır.
### Adım Adım Kod Oluşturma ve Açıklamaları:
#### 1. Kullanıcıdan Girdi Almak
Kullanıcıdan sayıları ve işlemi almak için `input()` fonksiyonunu kullanacağız. Sayıları `float()` ile ondalıklı sayıya çevirmeyi unutmayalım, aksi takdirde string olarak kalırlar.
```python
# Kullanıcıdan ilk sayıyı al
sayi1_str = input("İlk sayıyı girin: ")
# Kullanıcıdan işlemi al
islem = input("İşlem seçin (+, -, *, /): ")
# Kullanıcıdan ikinci sayıyı al
sayi2_str = input("İkinci sayıyı girin: ")
```
#### 2. Sayısal Değerlere Dönüştürme ve Hata Yönetimi (try-except)
Kullanıcı sayı yerine bir metin girerse program çöker. Bunu engellemek için `try-except` bloğunu kullanırız.
```python
try:
sayi1 = float(sayi1_str)
sayi2 = float(sayi2_str)
except ValueError:
print("Hata: Lütfen geçerli sayılar girin.")
# Burada programdan çıkabilir veya tekrar denemesini isteyebiliriz.
# Şimdilik basitçe bir uyarı verelim.
exit() # Programı sonlandır.
```
#### 3. İşleme Göre Hesaplama Yapma (if-elif-else)
`if`, `elif` (else if) ve `else` kullanarak kullanıcının seçtiği işleme göre farklı hesaplamalar yapacağız.
```python
if islem == '+':
sonuc = sayi1 + sayi2
elif islem == '-':
sonuc = sayi1 - sayi2
elif islem == '*':
sonuc = sayi1 * sayi2
elif islem == '/':
if sayi2 == 0: # Sıfıra bölme kontrolü
print("Hata: Bir sayı sıfıra bölünemez!")
exit()
else:
sonuc = sayi1 / sayi2
else:
print("Hata: Geçersiz işlem! Lütfen +, -, *, / işlemlerinden birini seçin.")
exit()
# Sonucu yazdırma (eğer bir hata oluşmadıysa)
if 'sonuc' in locals(): # Sadece 'sonuc' değişkeni tanımlandıysa yazdır
print("Sonuç:", sonuc)
```
#### 4. Tekrar Çalıştırma Özelliği (while döngüsü)
Hesap makinesinin tek bir işlem yerine birden fazla işlem yapabilmesi için tüm kodu bir `while True` döngüsünün içine alıp kullanıcıya "Başka bir işlem yapmak ister misiniz?" diye soracağız.
```python
while True:
# ... tüm yukarıdaki kod buraya gelecek ...
devam = input("Başka bir işlem yapmak ister misiniz? (evet/hayır): ")
if devam.lower() != 'evet': # 'evet' dışındaki her şeye hayır diyelim
print("Hesap makinesi kapatılıyor.")
break # Döngüyü sonlandır
```
---
### Tam Kod (Hepsi Bir Arada):
Şimdi tüm bu parçaları bir araya getirelim. Daha düzenli olması için ana mantığı bir fonksiyona koyabiliriz.
```python
def hesap_makinesi():
"""Basit bir hesap makinesi fonksiyonu."""
print("Python ile Basit Hesap Makinesi")
print("-" * 30)
while True:
sayi1_str = input("İlk sayıyı girin (çıkmak için 'q'): ")
if sayi1_str.lower() == 'q':
break
islem = input("İşlem seçin (+, -, *, /): ")
sayi2_str = input("İkinci sayıyı girin: ")
try:
sayi1 = float(sayi1_str)
sayi2 = float(sayi2_str)
except ValueError:
print("Hata: Lütfen geçerli sayılar girin.")
continue # Döngünün başına dön, tekrar sayı iste
sonuc = None # Sonuc değişkenini başlangıçta None olarak ayarla
if islem == '+':
sonuc = sayi1 + sayi2
elif islem == '-':
sonuc = sayi1 - sayi2
elif islem == '*':
sonuc = sayi1 * sayi2
elif islem == '/':
if sayi2 == 0:
print("Hata: Bir sayı sıfıra bölünemez!")
continue # Döngünün başına dön
else:
sonuc = sayi1 / sayi2
else:
print("Hata: Geçersiz işlem! Lütfen +, -, *, / işlemlerinden birini seçin.")
continue # Döngünün başına dön
# Eğer bir sonuç hesaplanabildiyse ekrana yazdır
if sonuc is not None:
print("Sonuç:", sonuc)
print("-" * 30)
devam = input("Başka bir işlem yapmak ister misiniz? (evet/hayır): ")
if devam.lower() != 'evet':
print("Hesap makinesi kapatılıyor.")
break
# Programı başlat
if __name__ == "__main__":
hesap_makinesi()
```
### Kodun Açıklaması:
1. **`def hesap_makinesi():`**: Hesap makinesi mantığını bir fonksiyon içine aldık. Bu, kodun daha düzenli ve tekrar kullanılabilir olmasını sağlar.
2. **`while True:`**: Bu döngü, kullanıcı 'q' veya 'hayır' diyene kadar hesap makinesinin çalışmasını sağlar.
3. **`sayi1_str = input(...)`**: Kullanıcıdan ilk sayıyı alır.
4. **`if sayi1_str.lower() == 'q': break`**: Kullanıcı 'q' yazarsa programdan çıkılmasını sağlar. `.lower()` metni küçük harfe çevirir, böylece 'Q' veya 'q' fark etmez.
5. **`islem = input(...)`**: Yapılacak işlemi alır.
6. **`sayi2_str = input(...)`**: İkinci sayıyı alır.
7. **`try-except ValueError:`**:
* `try` bloğu içindeki kod denenir. `float()` fonksiyonu string'i sayıya çevirmeye çalışır.
* Eğer `sayi1_str` veya `sayi2_str` sayıya çevrilemezse (örneğin "abc" girilirse), `ValueError` hatası oluşur.
* `except ValueError:` bloğu bu hatayı yakalar ve kullanıcıya bir hata mesajı gösterir.
* `continue` anahtar kelimesi, döngünün o anki iterasyonunu atlar ve `while True` döngüsünün başına geri döner, böylece kullanıcıdan tekrar girdi alınır.
8. **`sonuc = None`**: `sonuc` değişkenini başlangıçta `None` (hiçbir değer) olarak ayarladık. Bu, işlem başarılı bir şekilde yapılana kadar bir değerinin olmadığını belirtir.
9. **`if/elif/else` blokları**:
* `islem` değişkeninin değerine göre ilgili matematiksel işlem yapılır.
* **Bölme İşlemi (`/`) İçin Ek Kontrol**: `if sayi2 == 0:` ile ikinci sayının sıfır olup olmadığı kontrol edilir. Sıfıra bölme matematiksel olarak tanımsız olduğu için hata mesajı verilir ve `continue` ile yeni bir işleme geçilir.
* Geçersiz bir işlem girilirse (`+`, `-`, `*`, `/` dışında), hata mesajı gösterilir ve `continue` ile tekrar girdi istenir.
10. **`if sonuc is not None:`**: Eğer yukarıdaki işlemlerden biri başarılı bir şekilde çalıştıysa ve `sonuc` değişkeni bir değer aldıysa, bu değer ekrana yazdırılır.
11. **`devam = input(...)`**: Kullanıcıya başka bir işlem yapmak isteyip istemediği sorulur.
12. **`if devam.lower() != 'evet': break`**: Kullanıcı 'evet' dışında bir şey girerse (`hayır`, `n`, `exit`, vs.), döngü `break` ile sonlandırılır ve program kapanır.
13. **`if __name__ == "__main__":`**: Bu yapı, kodun doğrudan çalıştırıldığında `hesap_makinesi()` fonksiyonunu çağırmasını sağlar. Eğer bu dosya başka bir Python dosyası tarafından içe aktarılırsa (`import`), bu blok çalışmaz. Bu, Python'da yaygın bir iyi uygulama şeklidir.
---
Bu basit hesap makinesi projesi, Python'ın temel yapı taşlarını anlamak için harika bir örnektir. Daha sonra bu projeyi grafiksel kullanıcı arayüzü (GUI) ekleyerek, daha fazla işlem türü ekleyerek veya işlem geçmişini kaydederek geliştirebilirsin!
Son Paylaşımlar
-
Python Temelleri Genel Tekrar
14:39:24 - 13/12/2025 -
Python Performans İpuçları
14:38:59 - 13/12/2025 -
Python’da Temiz Kod Yazma
14:38:28 - 13/12/2025 -
Python Mini Proje: Sayı Tahmin Oyunu
14:37:58 - 13/12/2025 -
Python Mini Proje: Hesap Makinesi
14:37:31 - 13/12/2025