{"id":3110,"date":"2020-07-28T17:24:51","date_gmt":"2020-07-28T17:24:51","guid":{"rendered":"https:\/\/www.atarikafa.com\/toplulukk\/d\/49-python-ile-hesap-makinesi\/"},"modified":"2020-07-28T17:24:51","modified_gmt":"2020-07-28T17:24:51","slug":"49-python-ile-hesap-makinesi","status":"publish","type":"post","link":"https:\/\/www.atarikafa.com\/topluluk\/d\/49-python-ile-hesap-makinesi\/","title":{"rendered":"Python \u0130le Hesap Makinesi"},"content":{"rendered":"<p><r> <\/p>\n<p>Arkada\u015flar bu konuda python ile yaz\u0131lm\u0131\u015f hesap makinesi kodlar\u0131n\u0131 payla\u015f\u0131yorum. <br \/>\nBu kodlar\u0131n pythona yeni ba\u015flayanlar i\u00e7in ger\u00e7ekten yararl\u0131 oldu\u011funu d\u00fc\u015f\u00fcn\u00fcyorum.  Bu konuyu a\u00e7mak <USERMENTION displayname=\"Lord_Tenebris17\" id=\"6\" username=\"Lord_Tenebris17\"><a class='bp-suggestions-mention' href='https:\/\/www.atarikafa.com\/topluluk\/members\/Lord_Tenebris17\/' rel='nofollow'>@Lord_Tenebris17<\/a><\/USERMENTION>  arkada\u015f\u0131m\u0131z taraf\u0131ndan a\u00e7\u0131lan konu ile akl\u0131ma geldi hem orada g\u00f6rd\u00fc\u011f\u00fcm eksikliklerden bahsetmek istiyorum hem de ger\u00e7ekten 4 i\u015flem \u00fczerinde \u00e7al\u0131\u015fan bir hesap makinesini payla\u015fmak istedim.<\/p>\n<p><\/p>\n<p>\u00d6ncelikle bahsetmek istedi\u011fim \u015fey kod yazmak satran\u00e7 oynamaya benzer siz her zaman kullan\u0131c\u0131dan bir ad\u0131m \u00f6nde olmal\u0131s\u0131n\u0131z bunu bize bilgisayar hocam\u0131z s\u00fcrekli s\u00f6ylerdi kar\u015f\u0131 taraftaki kullan\u0131c\u0131 her zaman program\u0131n\u0131zda a\u00e7\u0131k arayacak hatalar\u0131n\u0131z\u0131 bulmaya \u00e7al\u0131\u015facakt\u0131r bu y\u00fczden kullan\u0131c\u0131n\u0131n ataca\u011f\u0131 ad\u0131mlar\u0131 \u00f6nceden tahmin etmek \u00e7ok \u00f6nemlidir. Kullan\u0131c\u0131 sizin istedi\u011finiz veriyi her zaman girmeyebilir ya da yanl\u0131\u015fl\u0131kla program\u0131n algoritmas\u0131na uygun olmayan baz\u0131 arg\u00fcmalar\u0131 programa girebilir bu y\u00fczden program\u0131n\u0131za bu t\u00fcr olaylarla kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda nas\u0131l tepki verece\u011fini siz \u00f6nceden ayarlamal\u0131s\u0131n\u0131z di\u011fer t\u00fcrl\u00fc oldu\u011funda yorumlay\u0131c\u0131n\u0131z (bu durumda python) hata mesaj\u0131 d\u00f6nd\u00fcrecektir ve program kapanacakt\u0131r bu istenmeyen bir durumdur.<\/p>\n<p><\/p>\n<p>1)Bu b\u00f6l\u00fcm kullan\u0131c\u0131y\u0131 bilgilendirmek ve program\u0131 nas\u0131l kullanaca\u011f\u0131n\u0131 anlatmak i\u00e7in sizde mutlaka bu t\u00fcr a\u00e7\u0131klamalar\u0131 program\u0131n\u0131za koyunuz bu t\u00fcr a\u00e7\u0131klamalar kullan\u0131c\u0131n\u0131n i\u015fini kolay\u015ft\u0131racakt\u0131r<\/p>\n<p><\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956690-583835-ek-aciklama-2020-07-28-201751.png?ssl=1\" class=\"f-img-class\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956690-583835-ek-aciklama-2020-07-28-201751.png?ssl=1\" class=\"f-img-class\"><\/p>\n<p>2)\tBu b\u00f6l\u00fcm uzun uzun anlatt\u0131\u011f\u0131m\u0131z kar\u015f\u0131 taraf\u0131n say\u0131 haricinde bir karakter girmesini \u00f6nlemek i\u00e7in yap\u0131ld\u0131 bu i\u015f try exept bloklar\u0131yla \u00e7ok daha kolay bir \u015fekilde yap\u0131labilirdi ancak ben burada bir fonksiyon nas\u0131l kullan\u0131l\u0131r onu g\u00f6stermek ayr\u0131ca ASCII (birazdan nas\u0131l kulland\u0131\u011f\u0131m\u0131 a\u00e7\u0131klayaca\u011f\u0131m) kodlar\u0131yla baz\u0131 \u015feylerin nas\u0131l \u00e7\u00f6z\u00fclebilece\u011fini g\u00f6stermek istedim <br \/>\n*Kodun ba\u015f\u0131ndaki def, fonsiyon olu\u015fturmak i\u00e7in b\u00f6ylece ayn\u0131 kodu birden fazla yazmadan def in yan\u0131na yazd\u0131\u011f\u0131m\u0131z isimle yani say\u0131giri\u015f() ile kolayca \u00e7a\u011f\u0131rmam\u0131z\u0131 sa\u011flayaca\u011f\u0131z<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956783-967404-resim.png?ssl=1\" class=\"f-img-class\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956783-967404-resim.png?ssl=1\" class=\"f-img-class\"><\/p>\n<p>*Kontrol_1 de\u011fi\u015fkeni burada while d\u00f6ng\u00fcs\u00fcne giri\u015f \u00e7\u0131k\u0131\u015f i\u00e7in kullan\u0131ld\u0131 kontrol_1 s\u0131f\u0131rdan farkl\u0131 oldu\u011funda d\u00f6ng\u00fc k\u0131r\u0131lacak<\/p>\n<p><LIST><LI><s>* <\/s>kullan\u0131c\u0131n\u0131n girdi\u011fi karakter e\u011fer \u201c=\u201d ise program \u00e7\u0131k\u0131\u015f ifadesini d\u00f6nd\u00fcrecek  return burada fonsiyonu k\u0131rar ve parantez i\u00e7inde belirtti\u011finiz (\u201c\u00e7\u0131k\u0131\u015f\u201d)  arg\u00fcman\u0131 d\u00f6nd\u00fcr\u00fcr<\/LI> <\/p>\n<p>*sonras\u0131nda girdi\u011fimiz say\u0131n\u0131n karakter uzunlu\u011fnu denetledik burada say\u0131n\u0131n karakter uzunlu\u011fu 1den b\u00fcy\u00fckse for d\u00f6ng\u00fcs\u00fc ile her bir karakteri \u201ci\u201d de\u011fi\u015fkenine atad\u0131k ve say\u0131 veya ondal\u0131kl\u0131 say\u0131 girebilmek i\u00e7in nokta olup olmad\u0131\u011f\u0131n\u0131 kontrol ettik birden b\u00fcy\u00fck de\u011filse sadece say\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek yeterli oldu en sonda return ile d\u00f6ng\u00fcy\u00fc k\u0131rarak float yani ondal\u0131kl\u0131 \u015fekilde say\u0131y\u0131 i\u015fleme g\u00f6nderdik <br \/>\nNOT:<br \/>\n def fonksiyon atad\u0131\u011f\u0131ndan bu fonksiyonu ismiyle(bu durumda say\u0131giri\u015f()) \u00e7a\u011f\u0131rmad\u0131\u011f\u0131n\u0131z s\u00fcrece \u00e7al\u0131\u015fmaz fonsiyonlar\u0131 en \u00fcste yazmak fonksiyonu kodun her yerinde kullanmak a\u00e7\u0131s\u0131ndan \u00f6nemlidir<br \/>\npeki kontrol i\u015flemindeki ord() ne anlama geliyor?<br \/>\nord() fonkisyonu burada karakterlerin onluk sistemdeki g\u00f6sterimlerine denk gelmekte 46 noktaya 48 ile 57 aras\u0131 ise t\u00fcm rakamlara denk gelmekte (tablo wikipediyadan al\u0131n\u0131\u015ft\u0131r asl\u0131na oradan ula\u015fabilirsiniz)<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956863-211586-resim.png?ssl=1\" class=\"f-img-class\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956863-211586-resim.png?ssl=1\" class=\"f-img-class\"><\/p>\n<p>3)\tBu b\u00f6l\u00fcmde i\u015flemleri yapmaya ge\u00e7ebiliriz sonu\u00e7 ad\u0131nda bir de\u011fi\u015fken koyduk ve bu de\u011fi\u015fkenin amac\u0131 her seferinde i\u015flemi yap\u0131p bunun i\u00e7ine kaydetmek say\u0131 de\u011fi\u015fkeni say\u0131giri\u015f() fonksiyonundan ald\u0131\u011f\u0131m\u0131z veriyi tutmak i\u00e7in say\u0131lar listesi ise (toplamada ihtiya\u00e7 yok) \u00e7arpma b\u00f6lme ve \u00e7\u0131karma i\u015flemleri i\u00e7in say\u0131lar\u0131n tutulmas\u0131 i\u00e7in <br \/>\nE\u011fer kullan\u0131c\u0131 0 de\u011ferini girerse programdan i\u015flem yapmadan \u00e7\u0131k\u0131\u015f yap\u0131lacak bu y\u00fczden giri\u015f s\u0131f\u0131ra e\u015fit oldu\u011funda break ile d\u00f6ng\u00fc k\u0131r\u0131l\u0131yor<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956879-448393-resim.png?ssl=1\" class=\"f-img-class\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956879-448393-resim.png?ssl=1\" class=\"f-img-class\"><\/p>\n<p>4)<br \/>\n*art\u0131k programa i\u015flem yapt\u0131rmaya ge\u00e7ebiliriz burada t\u00fcm kodlar\u0131n temel mant\u0131\u011f\u0131 \u00e7ok basit oldu\u011fundan ayr\u0131nt\u0131ya fazla girmeyecem kodlarda len() fonsiyonu ile say\u0131lardan olu\u015fan listenin uzunlu\u011funu kontrol edip 2 den k\u00fc\u00e7\u00fck ise uyar\u0131 ekran\u0131 verilecek<br \/>\n *burada append listenin sonuna yeni say\u0131m\u0131z\u0131 eklemek i\u00e7in kullan\u0131ld\u0131<br \/>\n *hesaplamadan \u00f6nce sonuca listedeki ilk karakteri atad\u0131k sonras\u0131nda for d\u00f6ng\u00fcs\u00fc ile 1. Karakteri yan\u0131 sonuca atad\u0131\u011f\u0131m\u0131z ilk karakteri atlayarak di\u011fer say\u0131larla i\u015flemi devam ettirdik<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956910-870795-resim.png?ssl=1\" class=\"f-img-class\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956910-870795-resim.png?ssl=1\" class=\"f-img-class\"><br \/>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956917-429554-resim.png?ssl=1\" class=\"f-img-class\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.atarikafa.com\/topluluk\/assets\/files\/2020-07-28\/1595956917-429554-resim.png?ssl=1\" class=\"f-img-class\"><\/p>\n<p><\/p>\n<p>Arkada\u015flar herhangi bir sorunu olursa buradan yazabilirsiniz olabildi\u011fince cevaplar\u0131m programda hatalar yapm\u0131\u015f a\u00e7\u0131klar b\u0131rakm\u0131\u015f olabilirim program geli\u015ftirilmeye a\u00e7\u0131kt\u0131r bunu sadece copy paste yap\u0131p kullanmay\u0131n kendiniz yazmaya \u00e7al\u0131\u015f\u0131n herkesin d\u00fc\u015f\u00fcnceleri algoritmas\u0131 farkl\u0131 olabilir siz benden \u00e7ok daha farkl\u0131 d\u00fc\u015f\u00fcn\u00fcp kodlar\u0131 daha k\u0131sa ve daha efektif \u015fekilde yazabilirsiniz kodlara yeni eklemeler yaparak da kendizi geli\u015ftirebilirsiniz  mesela benim akl\u0131ma gelen \u00f6rne\u011fin \u00e7arpma i\u015fleminden sonra biri sonucu ba\u015fka bir say\u0131ya b\u00f6lmek istiyorsa sonucu akl\u0131nda tutup b\u00f6lme i\u015flemini se\u00e7ip \u00f6yle devam etmek zorunda siz bu sonucu hesaplat\u0131ktan sonra i\u015fleme devam edip etmek istemedi\u011fini sorup ba\u015fka i\u015flemle devam etmesini sa\u011flayabilirsiniz<\/p>\n<p><CODE><s>[code]<\/s>  <br \/>\nprint(&#8220;&#8221;&#8221;<br \/>\n          +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+                      <br \/>\n          |                      Hesap Makinesi Program\u0131na Ho\u015f Geldiniz                            |<br \/>\n          |                      Programdan \u00c7\u0131kmak \u0130\u00e7in 0&#8217;\u0131 tu\u015flay\u0131n\u0131z                             |<br \/>\n          |  hesaplama i\u015flemini ger\u00e7ekle\u015ftirmek i\u00e7in i\u015flem t\u00fcr\u00fcn\u00fcz\u00fc (\/,*,-,+) \u015feklinde belirtiniz  |<br \/>\n          | hesaplama i\u015fleminde sonuca ula\u015fmak i\u00e7in say\u0131 giri\u015f b\u00f6l\u00fcm\u00fcne = yaz\u0131p enter\u0131 tu\u015flay\u0131n\u0131z  |<br \/>\n          |               istedi\u011finiz kadar say\u0131 girebilirsiniz s\u0131n\u0131rlama yoktur                   |<br \/>\n          +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+    <br \/>\n&#8220;&#8221;&#8221;)<br \/>\ndef say\u0131giri\u015f():<br \/>\n    kontrol_1=0<br \/>\n    while kontrol_1 == 0:<br \/>\n        say\u0131= str(input(&#8220;l\u00fctfen i\u015fleme almak istedi\u011finiz say\u0131y\u0131 giriniz sonuca ula\u015fmak i\u00e7in e\u015fittiri(=) tu\u015flay\u0131n\u0131z:&#8221;))<br \/>\n        if say\u0131==&#8221;=&#8221;:<br \/>\n            return(&#8220;\u00e7\u0131k\u0131\u015f&#8221;)<br \/>\n        else:<br \/>\n            if len(say\u0131) &gt; 1:<br \/>\n                for i in say\u0131:<br \/>\n                    if not ((ord(i) &gt;= 48 and ord(i) &lt;= 57) or ord(i)==46):<br \/>\n                        kontrol_1 = 0<br \/>\n                        break<br \/>\n                    else:<br \/>\n                        kontrol_1 = 1<br \/>\n            else:<br \/>\n                if ord(say\u0131) &gt;= 48 and ord(say\u0131) &lt;= 57:<br \/>\n                    break<br \/>\n    return(float(say\u0131))<br \/>\nwhile True:<br \/>\n    sonuc = 0<br \/>\n    say\u0131 = 0<br \/>\n    say\u0131lar = []<br \/>\n    giris=input(&#8220;l\u00fctfen i\u015fleminizi se\u00e7iniz (+,-,*,\/) karakterlerini kullan\u0131n&#8221;)<br \/>\n    if giris==&#8221;0&#8243;:<br \/>\n        break<br \/>\n    elif giris==&#8221;+&#8221;:<br \/>\n        while say\u0131!=&#8221;\u00e7\u0131k\u0131\u015f&#8221;:<br \/>\n            sonuc+=say\u0131<br \/>\n            say\u0131=say\u0131giri\u015f()<br \/>\n        print(sonuc)<br \/>\n    elif giris==&#8221;-&#8220;:<br \/>\n        while True:<br \/>\n            say\u0131=say\u0131giri\u015f()<br \/>\n            if say\u0131!=&#8221;\u00e7\u0131k\u0131\u015f&#8221;:<br \/>\n                say\u0131lar.append(say\u0131)<br \/>\n            else:<br \/>\n                break<br \/>\n        if len(say\u0131lar) &gt;= 2:<br \/>\n            sonuc=say\u0131lar[0]<br \/>\n            for i in say\u0131lar[1:]:<br \/>\n                sonuc-=i<br \/>\n            print(sonuc)<br \/>\n        else:<br \/>\n            print(&#8220;l\u00fctfen en az iki say\u0131 girdi\u011finizden emin olun&#8221;)<br \/>\n    elif giris==&#8221;*&#8221;:<br \/>\n        while True:<br \/>\n            say\u0131=say\u0131giri\u015f()<br \/>\n            if say\u0131!=&#8221;\u00e7\u0131k\u0131\u015f&#8221;:<br \/>\n                say\u0131lar.append(say\u0131)<br \/>\n            else:<br \/>\n                break<br \/>\n        if len(say\u0131lar) &gt;= 2:<br \/>\n            sonuc=say\u0131lar[0]<br \/>\n            for i in say\u0131lar[1:]:<br \/>\n                sonuc*=i<br \/>\n            print(sonuc)<br \/>\n        else:<br \/>\n            print(&#8220;l\u00fctfen en az iki say\u0131 girdi\u011finizden emin olun&#8221;)<br \/>\n    elif giris==&#8221;\/&#8221;:<br \/>\n        while True:<br \/>\n            say\u0131=say\u0131giri\u015f()<br \/>\n            if say\u0131!=&#8221;\u00e7\u0131k\u0131\u015f&#8221;:<br \/>\n                say\u0131lar.append(say\u0131)<br \/>\n            else:<br \/>\n                break<br \/>\n        if len(say\u0131lar)&gt;=2:<br \/>\n            sonuc=say\u0131lar[0]<br \/>\n            for i in say\u0131lar[1:]:<br \/>\n                sonuc\/=i<br \/>\n            print(sonuc)<br \/>\n        else:<br \/>\n            print(&#8220;l\u00fctfen en az iki say\u0131 girdi\u011finizden emin olun&#8221;)<br \/>\n    else:<br \/>\n        print(&#8220;i\u015fleminizi do\u011fru se\u00e7ti\u011finize emin olun!!!!&#8221;)<br \/>\n  <e>[\/code]<\/e><\/CODE><\/p>\n<p><\/r><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Arkada\u015flar bu konuda python ile yaz\u0131lm\u0131\u015f hesap makinesi kodlar\u0131n\u0131 payla\u015f\u0131yorum. Bu kodlar\u0131n pythona yeni ba\u015flayanlar i\u00e7in ger\u00e7ekten yararl\u0131 oldu\u011funu d\u00fc\u015f\u00fcn\u00fcyorum. Bu konuyu a\u00e7mak @Lord_Tenebris17 arkada\u015f\u0131m\u0131z taraf\u0131ndan a\u00e7\u0131lan konu ile akl\u0131ma geldi hem orada g\u00f6rd\u00fc\u011f\u00fcm eksikliklerden bahsetmek istiyorum hem de ger\u00e7ekten 4 i\u015flem \u00fczerinde \u00e7al\u0131\u015fan bir hesap makinesini payla\u015fmak istedim. \u00d6ncelikle bahsetmek istedi\u011fim \u015fey kod yazmak [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[14],"tags":[],"class_list":["post-3110","post","type-post","status-publish","format-standard","hentry","category-yazilim"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/posts\/3110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/comments?post=3110"}],"version-history":[{"count":1,"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/posts\/3110\/revisions"}],"predecessor-version":[{"id":4387,"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/posts\/3110\/revisions\/4387"}],"wp:attachment":[{"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/media?parent=3110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/categories?post=3110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.atarikafa.com\/topluluk\/wp-json\/wp\/v2\/tags?post=3110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}