İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Basit Bir Hesap Makinası

N01
N01 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2017
Nereden:
Yer6dan
Yaş:
19
Mesajlar:
1.224
Konular:
100
Teşekkür (Etti):
306
Teşekkür (Aldı):
264
Ticaret:
(0) %
02-10-2017 16:44
#1
Basit Bir Hesap Makinası
Öncelikle Selamun Aleyküm,
Bu Derste Sizlere Python Dilinde Nasıl Hesap Makinası Yapılır,
Öncelikle IDLE’ mizi açıyoruz ve artık bir program yazacağımız için File -> New File sekmesinden yeni bir dosya oluşturuyoruz ve bu dosyaya aşağıdaki kodları yazıyoruz.
print("1-Toplama")
print("2-Çıkarma")
print("3-Bölme")
print("4-Çarpma")
print("5- Kare Al")
print("6- Kök Al")
print("q- Çıkış")

while True:
scanner = input("Lütfen yapmak istediğiniz işlemin numarasını seçiniz ")

if scanner == "q":
print("Çıkış")
break

elif scanner == "1":
scannerToplama1 = input("Toplamak istediğiniz 1. sayıyı giriniz: ")
scannerToplama2 = input("Toplamak istediğiniz 2. sayıyı giriniz: ")
sonuc = int(scannerToplama1) + int(scannerToplama2)
print(sonuc)

elif scanner == "2":
scannerCikarma1 = input("Çıkarma yapmak istediğiniz sayıyı giriniz: ")
scannerCikarma2 = input("Çıkarılacak sayıyı giriniz: ")
sonuc = int(scannerCikarma1)- int(scannerCikarma2)
print(sonuc)

elif scanner == "3":
scannerBolme1 = input("Bölünecek sayıyı giriniz: ")
scannerBolme2 = input("Bölmek istediğiniz sayıyı giriniz: ")
sonuc = int(scannerBolme1) / int(scannerBolme2)
print(sonuc)

elif scanner == "4":
scannerCarpma1 = input("Çarpmak istediğiniz 1. sayıyı giriniz: ")
scannerCarpma2 = input("Çarpmak istediğiniz 2. sayıyı giriniz: ")
sonuc = int(scannerCarpma1) * int(scannerCarpma2)
print(sonuc)

elif scanner == "5":
scannerKare = input("Karesin almak istediğiniz sayıyı giriniz: ")
sonuc = int(scannerKare) ** 2
print(sonuc)

elif scanner == "6":
scannerKok = input("Karekökünü almak istediğiniz sayıyı giriniz: ")
sonuc = int(scannerKok) ** 0.5
print(sonuc)

else:
print("Yanlış bir rakam girdiniz lütfen yeniden giriniz.")

Sonra Kaydetip Kullanıyoruz
---------------------
NEFES AL ZOMBİ
MxRohst - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2017
Mesajlar:
456
Konular:
0
Teşekkür (Etti):
4
Teşekkür (Aldı):
61
Ticaret:
(0) %
02-10-2017 16:47
#2
Güzel çalışma olmuş
Lisede aynısını bizede yatırmışlardı..
rohst Teşekkür etti.
N01
N01 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2017
Nereden:
Yer6dan
Yaş:
19
Mesajlar:
1.224
Konular:
100
Teşekkür (Etti):
306
Teşekkür (Aldı):
264
Ticaret:
(0) %
15-10-2017 16:38
#3
Alıntı:
MxRohst´isimli üyeden Alıntı Mesajı göster
Güzel çalışma olmuş
Lisede aynısını bizede yatırmışlardı..
Saol Devrem
---------------------
NEFES AL ZOMBİ
ByHanTR - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Mesajlar:
259
Konular:
5
Teşekkür (Etti):
4
Teşekkür (Aldı):
40
Ticaret:
(0) %
15-10-2017 17:03
#4
Güzelmis ama ben daha kısasını yazdım
--------------------- TÜRK olmak zordur, çünkü dünya ile savaşırsın.
TÜRK olmamak daha zordur, çünkü TÜRK ile savaşırsın...
DDOsman - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Nereden:
ÖTÜGEN
Mesajlar:
112
Konular:
4
Teşekkür (Etti):
8
Teşekkür (Aldı):
14
Ticaret:
(0) %
15-10-2017 17:03
#5
Güzel çalışma ellerine sağlık
b0mb - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Nereden:
İzmir
Yaş:
17
Mesajlar:
471
Konular:
64
Teşekkür (Etti):
143
Teşekkür (Aldı):
221
Ticaret:
(0) %
17-10-2017 00:32
#6
Merhabalar,

Öncelikle ellerinize sağlık, biraz boş vaktim olduğu için, daha güzel bir örnek yazmak istedim.

Sizin yazdığınız örnek ile çok basit düzeyde işlemler yapabiliyoruz, çok daha karmaşık işlemleri de yapabileceğimiz bir şeyler yazarsak daha güzel olur bence.

Bunu yapmak için, Python'un "eval()" fonksiyonundan yararlanacağız. Aslında bu fonksiyon ile kod çalıştırırız. "The eval function lets a python program run python code within itself."

Verdiğim linkte bir örnek gösterilmiş, aynı örneği göstererek devam edelim,

Kod:
>>> x = 1
>>> eval('x + 1')
2
>>> eval('x')
1
Gördüğünüz üzere, başarılı bir şekilde kod çalıştırabiliyoruz. Hemen küçük bir hesap makinesi yazalım,

Kod:
while True:
    islem = raw_input('Isleminizi giriniz: ')
    sonuc = eval(islem)
    print islem
Yazdığımız programı çalıştırıp bir kaç deneme yapalım hemen,

Kod:
Isleminizi giriniz: 6 + 5
11
Isleminizi giriniz: (5 - 2) * 3
9
Isleminizi giriniz: ((6 - 2) / 2) ** 3
8
Ne kadar güzel, değil mi? İstediğimiz kadar karmaşık işlem yaptırabiliyoruz. Ama "eval()" fonksiyonu, sadece matematik işlemleri yapabiliyor diyemeyiz, önceden de bahsettiğimiz gibi kod çalıştırır. Bazı kötü niyetli kişiler, buraya masum bir matematik işlemi yazmaktansa, sisteme zarar verebilecek kod parçaları çalıştırabilir, hemen örnek verelim,

Kod:
Isleminizi giriniz: __import__('os').listdir(__import__('os').path.expanduser('~'))
['.store-pwd.json', '.designer', 'dotfiles', 'Videos', '.dbus', '.local', '.gtkrc-2.0', '.ssh', '.xsession-error
s', 'Pictures', '.fonts', '.gnupg', '.pythonhist', '.fehbg', '.viminfo', '.thumbnails', 'Manga', '.vim', 'screen
shot.py', '.kingsoft', '.python_history-02909.tmp', '.wget-hsts', '.cache', '.bash-it', '.bash_logout', '.bash_h
istory', '.bundle', '.bashrc', '.cxoffice', '.idlerc', '.rustup', 'Music', '.themes', '.profile', 'sqlmap', '.ge
m', '.bashrc.bak', '.icons', '.cargo', '.Xauthority', '.vimrc', '.dmrc', '.Skype', '.gconf', '.gitconfig', '.xse
ssion-errors.old', '.pki', '.conky', 'Steam', '.data', '.gksu.lock', '.wingpersonal6', 'VirtualBox VMs', 'Docume
nts', 'Templates', '.SpaceVim.d', '.config', '.nano', '.multirust', 'Desktop', '.Public', 'Workspace', '.python_
history', 'Downloads', '.steam', '.cedit.json']
Gördüğünüz gibi, sistemimin ana dizinindeki tüm dosyaları listeledi, aynı şekilde bu dosyaları silebilir veya bu dosyalardan herhangi birinin içeriğini değiştirebilir. İşte, "eval()" fonksiyonu doğru kullanılmadı mı ciddi bir güvenlik açığına yol açar, bu açığa "Code Injection" deniyor. Bunun hakkında detaylı araştırma yapabilirsiniz. Bir de bundan nasıl korunabileceğimizi düşünelim.

Aldığımız her stringi bir kontrolden geçirmeden "eval()" fonksiyonu ile kullanmazsak sorun olmayacaktır. Peki nasıl bir kontrolden geçirmeliyiz? En basit hali ile, "izin verilen karakterler" listesi oluştururuz ve aldığımız veri ile bu listeyi karşılaştırırız, eğer izin verilenlerin dışında bir karakter yer alıyorsa, hiçbir şey yapmadan başa döneriz. O halde, izin verilen karakterler şunlar olacak: "0123456789+-/*".

Kod:
izinli_karakterler = "0123456789+-/*. "

while True:
    islem = raw_input('Isleminizi giriniz: ')
    for i in islem:
        if i not in izinli_karakterler:
            quit()

    sonuc = eval(islem)
    print sonuc
Burada ise, kullanıcıdan alınan veri önce bir kontrolden geçiriliyor, eğer sorun olmazsa, kod çalıştırılıyor eğer kontrolden geçemezse, direk programı kapatıyor.
TomRiddleBlack Teşekkür etti.
ylnzkrt33 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2016
Mesajlar:
11
Konular:
1
Teşekkür (Etti):
8
Teşekkür (Aldı):
0
Ticaret:
(0) %
17-10-2017 01:12
#7
c++ için de verebilir misiniz
--------------------- ylnzkrt33
ByXray - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2017
Nereden:
Aydın
Mesajlar:
21
Konular:
4
Teşekkür (Etti):
0
Teşekkür (Aldı):
0
Ticaret:
(0) %
26-11-2017 18:53
#8
Eline Sağlık
BravE HearTs - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Nereden:
EMİRDAĞ
Mesajlar:
266
Konular:
33
Teşekkür (Etti):
1
Teşekkür (Aldı):
16
Ticaret:
(0) %
26-11-2017 19:04
#9
Yararlı Konu Emeğine Sağlık
DarkGuardian82 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2015
Nereden:
Database
Mesajlar:
2.133
Konular:
50
Teşekkür (Etti):
38
Teşekkür (Aldı):
211
Ticaret:
(0) %
26-11-2017 19:08
#10
Eline sağlık
--------------------- Eğer Hayvanların Bir Dini Olsaydı Kesinlikle Dinlerindeki Şeytan İnsan Olurdu ..

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı