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
Ö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!!!!”)
A
👌
güzel anlatım ama
böyle olmaz resim olarak kod olarak yapıştır kodları