Takip et

Giriş: Neden Basit Bir Hesap Makinesi Yapmalıyız?

Python öğrenme yolculuğunuzun 7. gününe hoş geldiniz! Bu heyecan verici aşamada, şimdiye kadar öğrendiğimiz tüm temel Python kavramlarını bir araya getirerek basit ama işlevsel bir hesap makinesi uygulaması geliştireceğiz. Bu proje, değişkenlerden koşullu ifadelere, döngülerden hata yönetimine kadar birçok konuyu pratik bir şekilde pekiştirmenizi sağlayacak.

Bugünkü amacımız, kullanıcıdan iki sayı ve bir işlem alıp sonucu ekrana yazdıran sağlam bir hesap makinesi oluşturmaktır. Bu rehberde adım adım ilerleyecek, her aşamada kod örnekleri ve açıklamalarla konuyu derinlemesine ele alacağız. Hazırsanız, kodlama maceramıza başlayalım!

Herhangi bir programlama dilinde yeniyseniz veya temel bilgilerinizi pekiştirmek istiyorsanız, basit bir hesap makinesi projesi mükemmel bir başlangıç noktasıdır. Peki, neden mi? Çünkü bu proje, programlamanın en temel yapı taşlarını pratik bir senaryo üzerinde birleştirmenize olanak tanır. Bir hesap makinesi geliştirmek, yalnızca teorik bilgiyi uygulamaya dökmekle kalmaz, aynı zamanda bir kullanıcının bakış açısıyla programınızın nasıl etkileşim kuracağını düşünmenizi de sağlar. Kullanıcıdan giriş almak, bu girişi işlemek, olası hataları öngörmek ve düzgün bir çıktı sunmak gibi temel süreçleri deneyimlersiniz. Bu beceriler, gelecekteki çok daha karmaşık projelerinizin temelini oluşturacaktır.

Ayrıca, bu proje sayesinde “problem çözme” yeteneğiniz gelişir. Hesap makinesi yapımı, size bir problemi (örneğin, iki sayıyı toplama) farklı aşamalara bölme ve her bir aşamayı kodla çözme fırsatı verir. Örneğin, sayılar nasıl alınır, hangi işlemi uygulayacağız, hatalı girişler nasıl engellenir gibi sorulara yanıt ararken, algoritmik düşünme becerilerinizi keskinleştirirsiniz. Bu, sadece Python için değil, genel olarak yazılım geliştirme kariyeriniz için hayati öneme sahip bir beceridir. Özetle, basit bir hesap makinesi, temel programlama mantığını kavrayan ve gerçek dünya uygulamalarına geçiş yapmak isteyen herkes için olmazsa olmaz bir adımdır. Dolayısıyla, bu “30 Gün Python Challenge” kapsamında bu projenin neden bu kadar önemli olduğunu anlamak, öğrenme motivasyonunuzu artıracaktır. Ek olarak, bu pratik uygulama sayesinde değişken tanımlama, veri türü dönüştürme ve koşullu mantık gibi konuların somut çıktılarını anında görebilirsiniz, bu da öğrenme sürecini çok daha keyifli ve akılda kalıcı hale getirir. Bu yüzden, şimdiye kadar öğrendiklerimizi bir araya getirme ve sağlam bir temel inşa etme zamanı.

Temel Kavramlar Nelerdir ve Nasıl Uygulanır?

Basit bir hesap makinesi oluşturmak için birkaç temel Python kavramına ihtiyacımız var. Bu kavramları doğru bir şekilde anlamak ve uygulamak, projemizin sağlam temeller üzerinde yükselmesini sağlayacaktır. Öncelikle, kullanıcıdan giriş almamız gerekiyor. Python’da bunu

input()

fonksiyonu ile yaparız. Ancak

input()

fonksiyonu her zaman bir metin (string) döndürdüğü için, sayısal işlemler yapmadan önce bu metni sayıya (integer veya float) dönüştürmemiz gerekir. Bu dönüşüm için

int()

veya

float()

fonksiyonlarını kullanırız. Genellikle, ondalıklı sayıları da desteklemek için

float()

tercih edilir.

İkinci olarak, programımızın farklı matematiksel işlemleri gerçekleştirmesi için matematiksel operatörlere ihtiyacımız var. Toplama için

+

, çıkarma için

-

, çarpma için

*

ve bölme için

/

operatörlerini kullanacağız. Bu operatörler, sayısal değerler üzerinde doğrudan çalışır ve bize bir sonuç döndürür. Örneğin,

sayi1 + sayi2

ifadesi, iki sayının toplamını verir. Dahası, kullanıcı hangi işlemi seçtiyse, o işleme göre farklı kod bloklarının çalışması gerekecektir. İşte tam bu noktada koşullu ifadeler, yani

if

,

elif

ve

else

devreye girer. Bu yapılar sayesinde, kullanıcının seçimine göre program akışını kontrol edebiliriz. Örneğin, kullanıcı "+" operatörünü seçtiyse toplama işlemini, "-" seçtiyse çıkarma işlemini gerçekleştiren kodu çalıştırabiliriz.

Üçüncü olarak, kod tekrarını önlemek ve programımızı daha modüler hale getirmek için fonksiyonları kullanacağız. Her bir matematiksel işlemi (toplama, çıkarma vb.) ayrı bir fonksiyon içinde tanımlamak, kodumuzu daha okunaklı ve yönetilebilir kılar. Ayrıca, bu fonksiyonlar daha sonra programımızın başka yerlerinde veya farklı projelerde kolayca tekrar kullanılabilir. Bir fonksiyon tanımlamak için

def

anahtar kelimesini kullanırız. Örneğin, iki sayıyı toplayan bir fonksiyon

def topla(a, b): return a + b

şeklinde tanımlanabilir. Son olarak, kullanıcıya işlemlerin sonucunu göstermek için

print()

fonksiyonunu kullanacağız. Tüm bu temel kavramlar bir araya geldiğinde, basit ama işlevsel bir hesap makinesi oluşturmak için gerekli altyapıyı sağlamış olacağız. Bu kavramları adım adım uygulayarak, ilk Python projemizi başarıyla tamamlayacağız.

Python'da Temel İşlemleri Nasıl Gerçekleştiririz?

Hesap makinemizin kalbini oluşturan temel işlemleri Python'da adım adım nasıl gerçekleştireceğimize odaklanalım. İlk adım, kullanıcıdan gerekli bilgileri almaktır: iki sayı ve hangi matematiksel işlemi yapmak istediği. Bu bilgileri alırken, kullanıcıdan gelen girdinin doğru formatta olduğundan emin olmak da önemlidir. Aksi takdirde, programımız hata verebilir.

Öncelikle, kullanıcıdan ilk sayıyı alalım. Bunu

input()

fonksiyonu ile yaparız ve ardından

float()

kullanarak sayıya dönüştürürüz:


sayi1 = float(input("İlk sayıyı girin: "))

Ardından, ikinci sayıyı aynı şekilde alırız:


sayi2 = float(input("İkinci sayıyı girin: "))

Şimdi sıra, hangi işlemi yapacağımızı sormaya geldi. Kullanıcının +, -, *, veya / gibi geçerli bir operatör girmesini bekliyoruz:


islem = input("Yapmak istediğiniz işlemi seçin (+, -, *, /): ")

Tüm girdileri aldıktan sonra,

if-elif-else

koşullu ifadeler kullanarak kullanıcının seçtiği işleme göre matematiksel işlemi gerçekleştireceğiz. Her bir olası işlem için ayrı bir koşul kontrolü yaparız:


if islem == '+':
    sonuc = sayi1 + sayi2
elif islem == '-':
    sonuc = sayi1 - sayi2
elif islem == '*':
    sonuc = sayi1 * sayi2
elif islem == '/':
    sonuc = sayi1 / sayi2
else:
    print("Geçersiz işlem! Lütfen +, -, *, veya / seçin.")
    sonuc = None # Geçersiz işlemde sonuç olmasın

Yukarıdaki kod bloğu, kullanıcının girdiği işleme göre uygun matematiksel operatörü kullanarak sonucu hesaplar. Eğer kullanıcı geçersiz bir işlem girerse, ekrana bir hata mesajı yazdırılır. Son olarak, eğer bir sonuç hesaplanabildiyse, bu sonucu kullanıcıya göstermemiz gerekir:


if sonuc is not None:
    print("Sonuç:", sonuc)

Bu temel yapı, hesap makinemizin en basit halini oluşturur. Ancak, bu kod parçası henüz hata yönetimi gibi önemli bir özelliği içermemektedir. Örneğin, kullanıcı sayı yerine metin girerse veya bölme işleminde ikinci sayıyı sıfır girerse programımız çökecektir. Bu durumları bir sonraki bölümde ele alacağız. Bu ilk adım, programın ana mantığını anlamak için kritik öneme sahiptir. Kullanıcıdan veri almak, bu veriye göre karar vermek ve bir çıktı sunmak, hemen hemen her programın temel döngüsüdür. Bu yapıyı kurmak, sonraki aşamalara geçiş için sağlam bir temel oluşturur. Ayrıca, bu basit kod bloğunu defalarca test ederek farklı girdi kombinasyonlarının nasıl çalıştığını gözlemlemek, programlama bilginizi pekiştirecektir. Bu sayede, daha karmaşık yapıları inşa etmeden önce temel akışı tam olarak kavrayabilirsiniz.

Gelişmiş Bir Hesap Makinesi İçin Fonksiyonel Yapılar Nasıl Kurulur?

Basit bir hesap makinesi oluşturduk, ancak kodumuz henüz çok modüler veya kullanıcı dostu değil. Her işlemi ayrı bir fonksiyon içinde tanımlayarak ve ana program akışını bir döngü içine alarak hesap makinemizi daha gelişmiş ve kullanışlı hale getirebiliriz. Fonksiyonel yapı, kodun tekrar kullanılabilirliğini artırır, bakımı kolaylaştırır ve olası hataların izole edilmesine yardımcı olur.

Öncelikle, her bir matematiksel işlem için ayrı bir fonksiyon tanımlayalım. Bu fonksiyonlar, iki sayıyı argüman olarak alacak ve ilgili işlemin sonucunu döndürecek:


def topla(x, y):
    return x + y

def cikar(x, y):
    return x - y

def carp(x, y):
    return x * y

def bol(x, y):
    if y == 0:
        return "Sıfıra bölme hatası!"
    return x / y

Gördüğünüz gibi,

bol()

fonksiyonunda sıfıra bölme hatasını ele almak için basit bir kontrol ekledik. Bu, hata yönetiminin ilk adımıdır ve programımızın daha kararlı çalışmasını sağlar. Şimdi, bu fonksiyonları kullanarak ve kullanıcıya sürekli işlem yapma imkanı sunan bir ana döngü oluşturalım. Bu döngü, kullanıcı "çıkış" gibi bir komut verene kadar çalışmaya devam edecek.


while True:
    print("\nLütfen bir işlem seçin:")
    print("1. Toplama (+)")
    print("2. Çıkarma (-)")
    print("3. Çarpma (*)")
    print("4. Bölme (/)")
    print("5. Çıkış")

    secim = input("Seçiminiz (1/2/3/4/5): ")

    if secim in ('1', '2', '3', '4'):
        try:
            sayi1 = float(input("İlk sayıyı girin: "))
            sayi2 = float(input("İkinci sayıyı girin: "))
        except ValueError:
            print("Geçersiz giriş! Lütfen sayısal bir değer girin.")
            continue # Döngünün başına dön

        if secim == '1':
            print(f"{sayi1} + {sayi2} = {topla(sayi1, sayi2)}")
        elif secim == '2':
            print(f"{sayi1} - {sayi2} = {cikar(sayi1, sayi2)}")
        elif secim == '3':
            print(f"{sayi1} * {sayi2} = {carp(sayi1, sayi2)}")
        elif secim == '4':
            sonuc_bolme = bol(sayi1, sayi2)
            if isinstance(sonuc_bolme, str): # Hata mesajı ise
                print(sonuc_bolme)
            else:
                print(f"{sayi1} / {sayi2} = {sonuc_bolme}")
    elif secim == '5':
        print("Hesap makinesinden çıkılıyor...")
        break # Döngüyü sonlandır
    else:
        print("Geçersiz seçim. Lütfen 1, 2, 3, 4 veya 5 girin.")

Bu yapı, hesap makinemize sadece temel işlevsellik kazandırmakla kalmaz, aynı zamanda kullanıcı dostu bir menü sunar ve sürekli hesap yapma imkanı verir.

while True

döngüsü sayesinde, kullanıcı "5" tuşlayıp çıkana kadar programımız çalışmaya devam eder. Her döngüde kullanıcıya seçenekler sunulur ve seçimine göre ilgili fonksiyon çağrılır. Ayrıca,

try-except

bloğunu kullanarak sayı girişi sırasında oluşabilecek

ValueError

hatalarını da yakalıyoruz. Bu sayede, kullanıcı yanlışlıkla metin girdiğinde program çökmez, bunun yerine bir hata mesajı gösterir ve döngünün başına geri döner. Bu yaklaşım, programımızın genel kararlılığını ve kullanıcı deneyimini önemli ölçüde iyileştirir. Ayrıca, her bir işlemin ayrı bir fonksiyon içinde olması, gelecekte yeni işlemler (örneğin, üs alma, karekök) eklemek istediğimizde kodun ana yapısını bozmadan kolayca entegre etmemizi sağlar. Fonksiyonel programlama prensiplerini uygulamak, karmaşık sistemler geliştirirken size büyük avantajlar sağlayacaktır. Kodunuzu daha düzenli, test edilebilir ve sürdürülebilir hale getirir.

Hata Yönetimi ve Kullanıcı Deneyimi Nasıl İyileştirilir?

Herhangi bir yazılımda hata yönetimi, uygulamanın sağlamlığını ve kullanıcı deneyimini doğrudan etkileyen kritik bir unsurdur. Hesap makinemiz için de bu durum geçerlidir. Kullanıcılar her zaman beklediğimiz gibi girdi sağlamayabilirler. Örneğin, sayı yerine metin girebilir veya bölme işleminde ikinci sayıyı sıfır olarak belirtebilirler. Bu senaryoları doğru bir şekilde ele almazsak, programımız beklenmedik bir şekilde çökecek ve kullanıcı için olumsuz bir deneyim yaratacaktır. Python'da hata yönetimi için

try-except

bloklarını kullanırız.

Yukarıdaki gelişmiş hesap makinesi örneğinde,

try-except ValueError

bloğunu zaten sayılar için kullanmıştık. Bu blok, kullanıcının

float()

fonksiyonuna dönüştürülemeyen bir metin girmesi durumunda oluşacak

ValueError

hatasını yakalar. Örneğin, kullanıcı "on" veya "abc" gibi bir metin girdiğinde,

ValueError

tetiklenir ve

except

bloğundaki kod çalışır. Bu sayede, programımız çökmez, bunun yerine kullanıcıya "Geçersiz giriş! Lütfen sayısal bir değer girin." gibi açıklayıcı bir mesaj gösterir ve

continue

anahtar kelimesi ile döngünün bir sonraki iterasyonuna geçer, böylece kullanıcı tekrar deneme şansı bulur.


try:
    sayi1 = float(input("İlk sayıyı girin: "))
    sayi2 = float(input("İkinci sayıyı girin: "))
except ValueError:
    print("Geçersiz giriş! Lütfen sayısal bir değer girin.")
    continue # Sayısal olmayan girişlerde döngünün başına dön

Bir diğer önemli hata durumu ise sıfıra bölmedir. Matematikte bir sayıyı sıfıra bölmek tanımsızdır ve Python'da bu durum

ZeroDivisionError

olarak adlandırılır.

bol()

fonksiyonumuzda bu durumu basit bir

if

kontrolü ile zaten ele almıştık:


def bol(x, y):
    if y == 0:
        return "Sıfıra bölme hatası!"
    return x / y

Bu yaklaşım, hatayı bir metin mesajı olarak döndürerek programın çökmesini engeller. Ana döngüde bu geri dönen değerin tipini kontrol ederek kullanıcıya doğru mesajı gösterebiliriz. Hata yönetimi sadece programın çökmesini engellemekle kalmaz, aynı zamanda kullanıcıya sorunun ne olduğunu açıklayarak daha iyi bir deneyim sunar. Açıklayıcı hata mesajları, kullanıcıların hatalarını anlamalarına ve düzeltmelerine yardımcı olur. Sonuç olarak,

try-except

bloklarını kullanarak beklenmedik durumları ele almak, sıfıra bölme gibi matematiksel anormallikleri kontrol etmek ve kullanıcılara net geri bildirimler sağlamak, basit bir hesap makinesini bile çok daha profesyonel ve kullanışlı hale getirir. Bu, geliştirme sürecinin ayrılmaz bir parçası olmalıdır.

Uzman İpucu: Hata mesajlarınızı kullanıcı dostu hale getirin. Teknik terimler yerine, kullanıcının anlayabileceği basit ve açıklayıcı ifadeler kullanmak, uygulamanızın kullanım kolaylığını artırır.

Gerçek Dünya Senaryoları: Hesap Makinesi Mantığı Nerelerde Kullanılır?

Basit bir hesap makinesi geliştirmek, yalnızca Python öğrenme yolculuğunuzda önemli bir adımdır, aynı zamanda bu projenin temel mantığı, gerçek dünyadaki sayısız uygulamada karşımıza çıkar. Sanmayın ki, sadece toplama-çıkarma yapan bir araca ihtiyaç duyulur. Aslında, temel aritmetik işlemlerin ve koşullu mantığın birleşimi, pek çok karmaşık sistemin temelini oluşturur. Örneğin, finans sektöründe bir banka uygulaması düşünün. Müşterilerin kredi hesaplamaları, faiz oranlarının uygulanması, ödeme planlarının oluşturulması veya birikim hedeflerinin belirlenmesi gibi işlemler, temel olarak toplama, çıkarma, çarpma ve bölme işlemlerinin bir kombinasyonudur. Burada kullanıcıdan alınan veriler (kredi miktarı, faiz oranı, vade) işlenir ve belirli koşullara (ödeme gecikti mi, ek ücret var mı) göre farklı sonuçlar üretilir. Bu, doğrudan bir hesap makinesi mantığıdır.

Bir başka örnek, e-ticaret siteleridir. Bir online alışveriş sitesinde sepetinize ürün eklediğinizde, toplam fiyat, kargo ücreti, indirimler ve vergiler otomatik olarak hesaplanır. Her bir ürünün fiyatı toplanır, belirli bir kampanya kodu girildiyse indirim uygulanır, bölgesel vergi oranları çarpılır ve son bir toplam elde edilir. "Eğer sepet 100 TL'nin üzerindeyse kargo ücretsiz", "Eğer indirim kodu geçerliyse %10 indirim uygula" gibi koşullu ifadeler de bu süreçte aktif rol oynar. Bu tamamen bir hesap makinesinin genişletilmiş halidir.

Endüstriyel otomasyon ve mühendislik alanlarında da benzer senaryolarla karşılaşırız. Bir üretim hattındaki robotun hareketlerini veya bir sensörden gelen verileri işleyen bir sistem, sürekli olarak matematiksel hesaplamalar yapar. Örneğin, sıcaklık sensöründen gelen değer belirli bir eşiği aştığında (koşullu ifade), soğutma sistemini devreye sokmak (bir fonksiyonu çağırmak) veya üretim hızını ayarlamak (bir değeri çarpmak/bölmek) gibi kararlar alınır. Tüm bunlar, en temel seviyede, bir hesap makinesinin işleyişine benzer bir mantıkla çalışır.

Vaka Analizi: Küçük Bir İşletmede Stok Takibi ve Fiyatlandırma

Diyelim ki, küçük bir el sanatları dükkanı sahibisiniz. Ürünlerinizin maliyetini, satış fiyatını, kar marjını ve stok durumunu takip etmek istiyorsunuz. Manuel olarak yapmak yerine, Python ile basit bir otomasyon aracı geliştirebilirsiniz. Bu araç, temelde bir hesap makinesi mantığına dayanır:

  • Maliyet Hesaplama: Her bir ürünün ham madde maliyeti, işçilik maliyeti ve genel giderler toplanır.
  • Fiyatlandırma: Maliyet üzerine belirli bir kar marjı (%X) eklenerek satış fiyatı belirlenir.
    satis_fiyati = maliyet * (1 + kar_marji_yuzdesi / 100)

  • İndirim Uygulama: Belirli dönemlerde veya toplu alımlarda indirimler uygulanır.
    indirimli_fiyat = satis_fiyati * (1 - indirim_yuzdesi / 100)

  • Stok Güncelleme: Bir ürün satıldığında stoktan düşülür, yeni ürün eklendiğinde stoka eklenir.
    yeni_stok = mevcut_stok - satilan_miktar

  • Sipariş Kontrolü: Stok belirli bir seviyenin altına düştüğünde (örneğin 5 adetten az kaldığında) otomatik olarak uyarı verir veya yeni sipariş önerir.
    if mevcut_stok < 5: print("Stok azaldı, sipariş ver!")

Bu senaryoda, programımız kullanıcıdan ürün bilgileri, maliyetler, kar marjları gibi verileri alır, bu veriler üzerinde temel aritmetik işlemler yapar ve belirli koşullara göre (stok seviyesi, indirim geçerliliği) farklı çıktılar veya uyarılar üretir. Gördüğünüz gibi, bir hesap makinesinin temel operasyonları ve koşullu mantığı, iş dünyasında somut ve değerli çözümler üretmek için nasıl kullanılabileceğini gösterir. Bu örnekler, basit bir hesap makinesi projesinin sadece bir alıştırma olmadığını, aynı zamanda çok daha büyük ve karmaşık sistemlerin yapı taşlarını oluşturduğunu açıkça ortaya koymaktadır.

Hesap Makinesini Daha İleriye Taşımak: GUI ve Ek Özellikler Nelerdir?

Şu ana kadar geliştirdiğimiz hesap makinesi konsol tabanlı bir uygulamadır, yani tüm etkileşimler metin tabanlı komut satırı üzerinden gerçekleşir. Ancak modern uygulamalar genellikle daha sezgisel ve görsel bir kullanıcı arayüzü (GUI - Graphical User Interface) sunar. Python, Tkinter, PyQt veya Kivy gibi kütüphaneler aracılığıyla GUI uygulamaları geliştirmek için güçlü araçlar sunar. Bir GUI, kullanıcıların butonlara tıklayarak, metin kutularına veri girerek veya menülerden seçim yaparak programla etkileşim kurmasını sağlar. Bu, özellikle son kullanıcılar için çok daha dostane bir deneyim sunar.

Örneğin, Tkinter ile basit bir hesap makinesi arayüzü oluşturmak, sayıları ve işlemleri girmek için butonlar ve sonucu göstermek için bir metin alanı kullanmayı gerektirir. Her bir buton (0-9 ve +, -, *, /) bir olayı tetikler ve bu olaylar, konsol tabanlı versiyonda yazdığımız matematiksel fonksiyonları çağırır. Bu, kullanıcının klavye ile sayıları yazmak yerine fareyle tıklamasını sağlar, bu da hata yapma olasılığını azaltır ve genel kullanım kolaylığını artırır. GUI geliştirme,

event-driven programming

(olay tabanlı programlama) kavramını da beraberinde getirir. Yani, programınız belirli bir olayın (buton tıklaması, metin kutusu değişimi) gerçekleşmesini bekler ve bu olay olduğunda önceden tanımlanmış bir fonksiyonu çalıştırır. Bu, mantıksal olarak konsol uygulamamızdaki

if-elif

yapısının görsel bir karşılığıdır.

Ek özellikler açısından ise, hesap makinemize birçok yeni işlev ekleyebiliriz. Örneğin:

  • Gelişmiş Matematiksel Fonksiyonlar: Karekök alma, üs alma, trigonometrik fonksiyonlar (sin, cos, tan), logaritma, mod alma gibi işlemler eklenebilir. Python'ın
    math

    modülü bu tür fonksiyonları hazır olarak sunar.

  • Hafıza Fonksiyonları: Kullanıcının daha önceki sonuçları saklamasına ve gerektiğinde kullanmasına olanak tanıyan "MR" (Memory Recall), "M+" (Memory Add) gibi hafıza fonksiyonları eklenebilir.
  • Parantez Desteği: Daha karmaşık matematiksel ifadeleri
    (2 + 3) * 4

    gibi işleyebilme yeteneği, hesap makinesinin gücünü artırır. Bu, genellikle

    parsing

    (ayrıştırma) algoritmaları gerektiren daha ileri bir konudur.

  • Geçmiş Kaydı: Yapılan işlemleri ve sonuçları bir listede göstermek, kullanıcıların önceki hesaplamalarına kolayca bakmasını sağlar.
  • Bilimsel Mod: Özel semboller ve daha fazla matematiksel işlem içeren ayrı bir "bilimsel mod" sunulabilir.

Mobil uyumluluk konusuna gelince, eğer hesap makineniz bir web uygulaması olarak tasarlanacaksa (örneğin Flask veya Django ile), o zaman kullanıcı arayüzünün farklı ekran boyutlarına uyum sağlaması için

CSS Media Query

'ler kullanmanız gerekecektir. Bu, uygulamanızın cep telefonundan tablete, oradan da masaüstü bilgisayara kadar her cihazda düzgün görünmesini sağlar. Örneğin, buton boyutlarını veya düzenini ekran genişliğine göre ayarlayabilirsiniz:


/* styles.css */
@media (max-width: 600px) {
    .calculator-container {
        width: 90%;
        margin: 10px auto;
    }
    .calculator-button {
        padding: 15px;
        font-size: 1.2em;
    }
}

@media (min-width: 601px) {
    .calculator-container {
        width: 400px;
        margin: 50px auto;
    }
    .calculator-button {
        padding: 20px;
        font-size: 1.5em;
    }
}

Eğer bir mobil uygulama olarak geliştiriliyorsa (örneğin Kivy ile), bu kütüphaneler genellikle farklı ekran boyutlarına otomatik olarak uyum sağlama mekanizmalarına sahiptir. Gördüğünüz gibi, basit bir hesap makinesi fikri bile, görsel arayüzler, gelişmiş fonksiyonlar ve farklı cihazlara uyumluluk gibi birçok ileri düzey konuya kapı aralamaktadır. Bu, programlama yolculuğunuzda keşfedebileceğiniz sonsuz imkanların sadece bir başlangıcıdır.

Sonuç: 30 Günlük Python Maceramızın Hesap Makinesi Durağı Neler Öğretti?

Python'daki 30 günlük meydan okumamızın "Basit Hesap Makinesi" durağına başarıyla ulaştık. Bu proje, sadece temel matematiksel işlemleri gerçekleştiren bir araçtan çok daha fazlasını temsil ediyor. Bu süreçte, şimdiye kadar öğrendiğimiz birçok temel programlama kavramını somut bir uygulama üzerinde bir araya getirme ve pekiştirme fırsatı bulduk. Kullanıcıdan veri almak için

input()

fonksiyonunu, bu verileri işlemek için

float()

ile tür dönüştürmeyi öğrendik. Program akışını kontrol etmek amacıyla

if-elif-else

koşullu ifadelerin ne kadar güçlü olduğunu gördük. Ayrıca, kod tekrarını önlemek, programımızı daha okunabilir ve yönetilebilir kılmak için fonksiyonları nasıl tanımlayacağımızı ve kullanacağımızı öğrendik.

En önemlisi, programımızın beklenmedik durumlarla (geçersiz girişler, sıfıra bölme) nasıl başa çıkacağını gösteren

try-except

bloklarıyla hata yönetiminin temellerini attık. Bu, sadece bir hesap makinesi projesi için değil, geliştireceğiniz herhangi bir sağlam uygulama için vazgeçilmez bir beceridir. Gerçek dünya senaryolarıyla, bu temel hesaplama mantığının finansal uygulamalardan e-ticarete, hatta endüstriyel otomasyona kadar ne kadar geniş bir alanda kullanılabileceğini de kavradık. Bu proje, "problemi parçalara ayırma", "algoritmik düşünme" ve "kodla çözüm üretme" becerilerinizi önemli ölçüde geliştirdi. Dahası, konsol tabanlı bir uygulamadan görsel bir arayüze (GUI) geçişin ve mobil uyumluluğun temel konseptlerini de inceleyerek, gelecekteki projeleriniz için ufuk açıcı bilgiler edindik.

Bu hesap makinesi, Python'daki ilk önemli adımlarınızdan biriydi. Buradan öğrendikleriniz, daha karmaşık veri yapıları, dosya işlemleri, veritabanı etkileşimleri ve web geliştirme gibi ileri düzey konulara geçerken size sağlam bir temel oluşturacaktır. Unutmayın, her büyük yazılım projesi, bu tür küçük, iyi tanımlanmış adımlarla başlar. Kendinize güvenin, pratik yapmaya devam edin ve kodlama maceranızın tadını çıkarın!

Sıkça Sorulan Sorular

1. Hesap makinesini çalıştırdığımda "ValueError" alıyorum, neden?

Cevap: Bu genellikle, sayı girmesi beklenen yere sayısal olmayan bir değer (örneğin bir metin veya sembol) girdiğinizde meydana gelir.

float()

fonksiyonu, dönüştüremediği bir metinle karşılaştığında bu hatayı fırlatır. Kodunuzdaki

try-except ValueError

bloğu bu durumu yakalar ve size uyarı verir. Tekrar sayısal bir değer girmeyi deneyin.

2. Hesap makinesine yeni işlemler (örneğin üs alma) nasıl ekleyebilirim?

Cevap: Yeni bir işlem eklemek için öncelikle o işlem için yeni bir fonksiyon tanımlamanız gerekir. Örneğin,

def us_alma(x, y): return x ** y

. Ardından, ana döngüdeki işlem seçim menüsüne yeni bir seçenek ekleyin (örneğin "5. Üs Alma") ve

if-elif

bloğuna bu seçeneği karşılayacak yeni bir koşul ekleyerek yeni fonksiyonunuzu çağırın. Bu, kodunuzun modüler yapısının esnekliğini gösterir.

3. Hesap makinesinin sonucunu ondalık basamaklarla sınırlayabilir miyim?

Cevap: Evet, sonucu

round()

fonksiyonu veya f-string formatlama ile sınırlayabilirsiniz. Örneğin, sonucu iki ondalık basamağa yuvarlamak için

print(f"Sonuç: {sonuc:.2f}")

kullanabilirsiniz. Bu, özellikle bölme işlemleri gibi durumlarda uzun ondalıklı sayıların okunabilirliğini artırır.

4. Programdan çıkmak için neden "break" kullanıyoruz?

Cevap:

break

ifadesi, bulunduğu döngüyü hemen sonlandırmak için kullanılır. Hesap makinemizde, kullanıcı "5. Çıkış" seçeneğini seçtiğinde,

while True

döngüsünün sonsuz çalışmasını engellemek ve programı düzgün bir şekilde kapatmak için

break

kullanırız. Bu, kullanıcıya program üzerinde kontrol sağlar.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version