Yazılım

Python İle Hesap Makinesi

Arkadaşlar bu konuda python ile yazılmış hesap makinesi kodlarını paylaşıyorum.
Bu kodların pythona yeni başlayanlar için gerçekten yararlı olduğunu düşünüyorum. Bu konuyu açmak @Lord_Tenebris17 arkadaşımız tarafından açılan konu ile aklıma geldi hem orada gördüğüm eksikliklerden bahsetmek istiyorum hem de gerçekten 4 işlem üzerinde çalışan bir hesap makinesini paylaşmak istedim.

Öncelikle bahsetmek istediğim şey kod yazmak satranç oynamaya benzer siz her zaman kullanıcıdan bir adım önde olmalısınız bunu bize bilgisayar hocamız sürekli söylerdi karşı taraftaki kullanıcı her zaman programınızda açık arayacak hatalarınızı bulmaya çalışacaktır bu yüzden kullanıcının atacağı adımları önceden tahmin etmek çok önemlidir. Kullanıcı sizin istediğiniz veriyi her zaman girmeyebilir ya da yanlışlıkla programın algoritmasına uygun olmayan bazı argümaları programa girebilir bu yüzden programınıza bu tür olaylarla karşılaştığında nasıl tepki vereceğini siz önceden ayarlamalısınız diğer türlü olduğunda yorumlayıcınız (bu durumda python) hata mesajı döndürecektir ve program kapanacaktır bu istenmeyen bir durumdur.

1)Bu bölüm kullanıcıyı bilgilendirmek ve programı nasıl kullanacağını anlatmak için sizde mutlaka bu tür açıklamaları programınıza koyunuz bu tür açıklamalar kullanıcının işini kolayştıracaktır

2) Bu bölüm uzun uzun anlattığımız karşı tarafın sayı haricinde bir karakter girmesini önlemek için yapıldı bu iş try exept bloklarıyla çok daha kolay bir şekilde yapılabilirdi ancak ben burada bir fonksiyon nasıl kullanılır onu göstermek ayrıca ASCII (birazdan nasıl kullandığımı açıklayacağım) kodlarıyla bazı şeylerin nasıl çözülebileceğini göstermek istedim
*Kodun başındaki def, fonsiyon oluşturmak için böylece aynı kodu birden fazla yazmadan def in yanına yazdığımız isimle yani sayıgiriş() ile kolayca çağırmamızı sağlayacağız

*Kontrol_1 değişkeni burada while döngüsüne giriş çıkış için kullanıldı kontrol_1 sıfırdan farklı olduğunda döngü kırılacak

  • * kullanıcının girdiği karakter eğer “=” ise program çıkış ifadesini döndürecek return burada fonsiyonu kırar ve parantez içinde belirttiğiniz (“çıkış”) argümanı döndürür
  • *sonrasında girdiğimiz sayının karakter uzunluğnu denetledik burada sayının karakter uzunluğu 1den büyükse for döngüsü ile her bir karakteri “i” değişkenine atadık ve sayı veya ondalıklı sayı girebilmek için nokta olup olmadığını kontrol ettik birden büyük değilse sadece sayı olup olmadığını kontrol etmek yeterli oldu en sonda return ile döngüyü kırarak float yani ondalıklı şekilde sayıyı işleme gönderdik
    NOT:
    def fonksiyon atadığından bu fonksiyonu ismiyle(bu durumda sayıgiriş()) çağırmadığınız sürece çalışmaz fonsiyonları en üste yazmak fonksiyonu kodun her yerinde kullanmak açısından önemlidir
    peki kontrol işlemindeki ord() ne anlama geliyor?
    ord() fonkisyonu burada karakterlerin onluk sistemdeki gösterimlerine denk gelmekte 46 noktaya 48 ile 57 arası ise tüm rakamlara denk gelmekte (tablo wikipediyadan alınıştır aslına oradan ulaşabilirsiniz)

    3) Bu bölümde işlemleri yapmaya geçebiliriz sonuç adında bir değişken koyduk ve bu değişkenin amacı her seferinde işlemi yapıp bunun içine kaydetmek sayı değişkeni sayıgiriş() fonksiyonundan aldığımız veriyi tutmak için sayılar listesi ise (toplamada ihtiyaç yok) çarpma bölme ve çıkarma işlemleri için sayıların tutulması için
    Eğer kullanıcı 0 değerini girerse programdan işlem yapmadan çıkış yapılacak bu yüzden giriş sıfıra eşit olduğunda break ile döngü kırılıyor

    4)
    *artık programa işlem yaptırmaya geçebiliriz burada tüm kodların temel mantığı çok basit olduğundan ayrıntıya fazla girmeyecem kodlarda len() fonsiyonu ile sayılardan oluşan listenin uzunluğunu kontrol edip 2 den küçük ise uyarı ekranı verilecek
    *burada append listenin sonuna yeni sayımızı eklemek için kullanıldı
    *hesaplamadan önce sonuca listedeki ilk karakteri atadık sonrasında for döngüsü ile 1. Karakteri yanı sonuca atadığımız ilk karakteri atlayarak diğer sayılarla işlemi devam ettirdik


    Arkadaşlar herhangi bir sorunu olursa buradan yazabilirsiniz olabildiğince cevaplarım programda hatalar yapmış açıklar bırakmış olabilirim program geliştirilmeye açıktır bunu sadece copy paste yapıp kullanmayın kendiniz yazmaya çalışın herkesin düşünceleri algoritması farklı olabilir siz benden çok daha farklı düşünüp kodları daha kısa ve daha efektif şekilde yazabilirsiniz kodlara yeni eklemeler yaparak da kendizi geliştirebilirsiniz mesela benim aklıma gelen örneğin çarpma işleminden sonra biri sonucu başka bir sayıya bölmek istiyorsa sonucu aklında tutup bölme işlemini seçip öyle devam etmek zorunda siz bu sonucu hesaplatıktan sonra işleme devam edip etmek istemediğini sorup başka işlemle devam etmesini sağlayabilirsiniz

    [code]
    print(“””
    +—————————————————————————————-+
    | Hesap Makinesi Programına Hoş Geldiniz |
    | Programdan Çıkmak İçin 0’ı tuşlayınız |
    | hesaplama işlemini gerçekleştirmek için işlem türünüzü (/,*,-,+) şeklinde belirtiniz |
    | hesaplama işleminde sonuca ulaşmak için sayı giriş bölümüne = yazıp enterı tuşlayınız |
    | istediğiniz kadar sayı girebilirsiniz sınırlama yoktur |
    +—————————————————————————————-+
    “””)
    def sayıgiriş():
    kontrol_1=0
    while kontrol_1 == 0:
    sayı= str(input(“lütfen işleme almak istediğiniz sayıyı giriniz sonuca ulaşmak için eşittiri(=) tuşlayınız:”))
    if sayı==”=”:
    return(“çıkış”)
    else:
    if len(sayı) > 1:
    for i in sayı:
    if not ((ord(i) >= 48 and ord(i) <= 57) or ord(i)==46):
    kontrol_1 = 0
    break
    else:
    kontrol_1 = 1
    else:
    if ord(sayı) >= 48 and ord(sayı) <= 57:
    break
    return(float(sayı))
    while True:
    sonuc = 0
    sayı = 0
    sayılar = []
    giris=input(“lütfen işleminizi seçiniz (+,-,*,/) karakterlerini kullanın”)
    if giris==”0″:
    break
    elif giris==”+”:
    while sayı!=”çıkış”:
    sonuc+=sayı
    sayı=sayıgiriş()
    print(sonuc)
    elif giris==”-“:
    while True:
    sayı=sayıgiriş()
    if sayı!=”çıkış”:
    sayılar.append(sayı)
    else:
    break
    if len(sayılar) >= 2:
    sonuc=sayılar[0]
    for i in sayılar[1:]:
    sonuc-=i
    print(sonuc)
    else:
    print(“lütfen en az iki sayı girdiğinizden emin olun”)
    elif giris==”*”:
    while True:
    sayı=sayıgiriş()
    if sayı!=”çıkış”:
    sayılar.append(sayı)
    else:
    break
    if len(sayılar) >= 2:
    sonuc=sayılar[0]
    for i in sayılar[1:]:
    sonuc*=i
    print(sonuc)
    else:
    print(“lütfen en az iki sayı girdiğinizden emin olun”)
    elif giris==”/”:
    while True:
    sayı=sayıgiriş()
    if sayı!=”çıkış”:
    sayılar.append(sayı)
    else:
    break
    if len(sayılar)>=2:
    sonuc=sayılar[0]
    for i in sayılar[1:]:
    sonuc/=i
    print(sonuc)
    else:
    print(“lütfen en az iki sayı girdiğinizden emin olun”)
    else:
    print(“işleminizi doğru seçtiğinize emin olun!!!!”)
    [/code]

    1. CemilARAZ Temmuz 28, 2020 at 17:37

      @omeraraz#235 Güzel anlatım ağzına daha doğrusu parmaklarına sağlık

    2. CemilARAZ Temmuz 28, 2020 at 17:50

      A

    3. EfeHidir Temmuz 28, 2020 at 19:22

      👌

    4. omeraraz Temmuz 28, 2020 at 19:22

      @EfeHidir#244 😃

    5. atarikafa Temmuz 28, 2020 at 19:52

      güzel anlatım ama
      böyle olmaz resim olarak kod olarak yapıştır kodları

    6. omeraraz Temmuz 28, 2020 at 19:55

      @atarikafa#247 abi normalde run kısmını atacaktım ss olarak ama kısım kısım anlatarak gitmek istedim normalde kod satırı şeklindede atabilirim ama en altta kodları belirttim diye yapmak istemedim abi zaten bunu okuyup ilgilinen kişi direk olarak kodu kopyala yapıştır yapacağı için ama birdahakine öyle yapmaya özen gösteririm

    7. omeraraz Temmuz 28, 2020 at 19:57

      @atarikafa#247 aslında birazda kurallara uygun yazmak istedim bu arada teşekkür ederim abi

    Bir yanıt yazın

    Write Reply...
     
     
    Araç çubuğuna atla