6 Aralık 2011 Salı

Python Hesap Makinesi

while True:
import math
try:
print("--------------------------------------------")
x=int(input("Toplama-->1\nÇıkarma-->2\nÇarpma-->3\nBölme-->4\n"
"Karakök-->5\nYüzde Alma-->6\nProgramdan Çıkma-->0\nTercihiniz:"))
print("--------------------------------------------")
if x==1:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
toplam=sayı1+sayı2
print("Sonuc= ",toplam)
if x==2:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
cikarma=sayı1-sayı2
print("Sonuc= ",cikarma)
if x==3:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
carp=sayı1*sayı2
print("Sonuc= ",carp)
if x==4:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
böl=sayı1/sayı2
print("Sonuc= ",böl)
if x==5:
sayı1=int(input("Sayıyı Giriniz "))
karakök=math.sqrt(sayı1)
print("Sonuc= ",karakök)
if x==6:
sayı1=int(input("Sayıyı Giriniz "))
sayı2=int(input("Yüzde kaç "))
yuzde=(sayı1*sayı2)/100
print("Sonuc= ",yuzde)
if x==0:
break
if x<0 or x>6:
continue
except ZeroDivisionError:
print("Lütfen paydayı 0'dan farklı bir sayı giriniz!")
except ValueError:
print("Lütfen sayısal ifadeler girin!")


4 Aralık 2011 Pazar

Hata Ayıklama(raise)

Pythonda yazdığımız bir programda normalde kullanıcınınyaptığı işlemlerde hata vermese bile biz
istersek kullanıcıya hata mesajı verebiliriz.
Mesala bir toplama işleminde 3 ile işlem yapmak istemiyorsanız,

sayi=int(input("Birinci sayı: "))
sayi1=int(input("İkinci sayı: "))
if (sayi or sayi1)==3:
raise Exception("Bu programda 3 sayısınız kullanamazsınız!!!")
else:
print(sayi+sayi1)





bu kodlamayı yapmalısınız.Bu ne işimize yarar sorusuna gelince o sizin hayal gücünüze bağlı :D

Şimdi raise ile hem mesaj verelim hemde pythonun hatasını yazdıralım:

try:
bölünen = int(input("bölünecek sayı: "))
bölen = int(input("bölen sayı: "))
print(bölünen/bölen)

except ZeroDivisionError:
print("bir sayıyı 0'a bölemezsiniz")
raise






bu kodumuzda önce sayıları karşılaştıracak,eğer bölen 0 değilse sonucu ekrana yazacak.Eğer bölen 0
ise önce "bir sayıyı 0'a bölemezsiniz" bizim mesajımızı ardından pythonun kendine özgü hata mesajını
ekrana verecektir.

3 Aralık 2011 Cumartesi

Hata Ayıklama(except...as...)

Python'da hata mesajları 2 bölümden oluşur
1)Hatanın adı
2)Hatanın mesajı

Örneğin

ValueError: invalid literal for int() with base 10: 'x'

Burada "ValueError" bilidğimiz gibi hatanın adıdır."invalid literal for int() with base 10: 'x'"
kısmı ise hata mesajıdır.İstersek bizbu mesajı değiştirip kullanıcının anlayacağı şekle dönüştürebiliriz.


while True:
try:
x=int(input("Bir sayı Giriniz: "))
if x%2==0:
print("Girilen sayı çift sayıdır.")
else:
print("Girilen sayı tek sayıdır.")
except ValueError as hata:
print("Karakter Hatası\nPython'un verdiği hata:",hata)






kodumuzu açıklayacak olursak:
Kullanıcıdan bir sayı alan program,bu sayının 2'ye tam bölünüp bölünmedğini kontrol ediyor.Buradan
sonuç 0 ise if'in içindeki print ifadesini yazdırıyor.Eğer sonuç 0'dan farklı ise else ifadesi içindeki
print ifadesi içeriğini yazdırıyor.Eğer kullanıcı a,b,e,? gibi karakterler girerse son iki satırda
ValueError ile yakaladığımız yazım hatasını mesajını devreye koyuyor ve böylelikle kullanıcıyı
yönlendirmiş oluyor.

Hata Ayıklama(continue-else...finaly)

continue ifadesi üzerinde fazla durmadan sadece 1 örnek vererek geçeceğim.

while True:
x=input("Bir sayı giriniz: ")
if x=="çıkış":
break
if len(x)<5:
continue
print("En fazla 5 heneli bir sayı girebilirsiniz...")






bu programda amaç kullanıcıdan en fazla 5 haneli bir sayı almak.5 haneyi geçecek bir sayı yazarsa
bunu "En fazla 5 heneli bir sayı girebilirsiniz..." şeklinde uyarmak.Eğer 5 haneden daha az girerse
continue ifadesi ile programın başına geri döenere bizden tekrar yeni bir sayı girmemizi isteyecek.


else...finally...


else...finally... ifade try... except... ifadesinin bir bakıma devemı niteliğindedir.
Mesala bir bölme işlemini yapan program yazdığımızı varsayalım.Kullanıcı bu programda sayıda
girebilir diğer karakterlerdende girebilir.Bunu önlemek için except ValueError: ifadesini
kullnıyorduk.Ama kullanıcı paydayı 0 girdi diyelim o zaman ne olacak.Hangi sayı 0'a bölünür Ki?
Tabiki burada python kendi çapındaki hata mesajını ekrana yansıtacak.İşte bunun gibi 1.hatadan
sonraki hataları yakalamak için else...finally... ifadesini kullanıyoruz.Şunu sorabilirsinizi:
"try...except... aynı işi yapmıyor mu?" Bu soruya yanıt evet olacaktır.Ama eğer kodlamamızda
hataları gruplamak istersek else...finally... tercih edebiliriz.else...finally bir özelliğide
...finally kodundan önce herhangi bir hata verse bile bu koddan sonraki işlemleri
hiç hata vermemiş gibi işletmesidir.Şimdi bu yazdıklarımızı örenkle açıklayalım.

Örneğimiz bölme işleminin yapan program kodlamasıdır


try:
bölünen = int(input("bölünecek sayı: "))
bölen = int(input("bölen sayı: "))

except ValueError:
print("Bir Hata Oluştu!")

else:
try:
bölme=bölünen/bölen

except ZeroDivisionError:
print("Bir sayıyı 0'a bölemezsiniz!")
finally:
print(bölme)

2 Aralık 2011 Cuma

Hata Ayıklama(pass)

pass ifadesi Türkçe anlamı geçmektir.Pythonda kullanım bakımından
bu anlama benzemektedir:Görmezden gelmek

Bir örnek açıklayalım
Programımız kalvyeden girilen 10'dan küçük 5 sayının kareleri toplamını bulan programı yazalım

sayac=1
toplam=0
while sayac<=5: sayac=sayac+1 x=int(input("1'den 10'a kadar bir sayı giriniz: ")) if x>10:
pass
else:
toplam=toplam+x*x
print("Girilen sayıların KARELERİ TOPLAMI: ",toplam)




şimdi kodumuzu açıklamaya başlayalım.pass ifadesine kadar olan kısım önceki konudaki programa
benziyor.Program bizden bir sayı alıyor sonra bu sayının 10'dan büyük mü olduğunu kontrol ediyor,
eğer büyükse pass ile hiçbir işlem yapmadan sizden tekrar bir sayı girmenizi istiyor,eğer girdiğiniz
sayı 10'dan küçükse pass ifadesini atlayarak else kısmındaki kodları çalıştırarak girilen
sayıların karelerinin toplamını alıp ekrana yazıyor.

1 Aralık 2011 Perşembe

Hata Ayıklama(break)

Python'da break özel bir deyimdir.Bu deyim ile devam etmekte olan bir programı kesintiye uğratabiliriz.
Daha öncede kullandğımız bu deyim programın belli bir yerinden sonra,programı sonlandırmamızı
sağlıyordu.
Şimdi ise bunu hata yakalamada kullanacağız.

Örneğin;

Klavyeden girilen 5 sayının 10'dan küçük sayıların toplamını bulan programı kodlayalım

sayac=1
toplam=0
while sayac<=5: sayac=sayac+1 try: sayi=int(input("sayı :")) if sayi<=10: print ("Girilen sayı-->",sayi)
toplam=toplam+sayi
print("Girilen sayılarn toplamı: ",toplam)
else:
print("Girilen sayı 10'dan büyüktür,lütfen 10'dan küçük sayı giriniz.")
continue
except ValueError:
break


Şimdi bu kodu açıklayalım.Kodda daha önceden görmediğimiz hiç yeni kod yok.
İlk öncelikle bir "sayac" şeklinde bir değişken belirledim.Bunun nedeni ise programın bizden 5 tane
sayı aldığında programdan çıkmamazı sağlayacak."continue" komutuyla her girdiğimiz sayıda başa dönmesini
sağladık.Buraya kadar her şey çok güzel.Kullanıcı olduda yanlışlıka "a" harfi yada "3e" gibi bir şey yazdı.
Bunun neticesinde hiçbir uyarı almadan programdan çıkacaktır ve programı yeniden başlatması gerekecektir.

14 Kasım 2011 Pazartesi

Dosya İşlemleri 4 (Dosyanın Farklı Yerlerine Veri Ekleme)

Dosyanın herhangi bir yerine satır ekleme

Şimdiye kadar ki örneklerde dosya sonuna ekleme yaptık.
Bu dersimizde satırın herhangi bir yerine eklme yapmayı göreceğiz.

İlk öncelikle bir kaynak dosyamız olacak.Örneğin dosyamızın içeriği

1.satır
2.satır
3.satır
4.satır

ismide "kaynak.txt" olsun.Öce bu dosyayı açalım.

>>>kaynakdosya=open("C:/Users/kullanıcı_adı/Desktop/kaynak.txt")

Bu dosyayı okuma kipinde açtıktan sonra bu dosyadan veriyi
okuyup başka bir hedef dosyaya bu okuduklarımızı yazmak.Şimdide hedef dosyayı oluşturalım.

>>>hedefdosya=open("C:/Users/kullanıcı_adı/Desktop/hedef.txt","w")

hedef dosyamızı oluşturduktan sonra gelelim şimdi kaynak dosyadan veri okumaya.

>>>verioku=kaynakdosya.readlines()

böylelikle kaynak dosya üzerinde okuma işlemini tanımlamı olduk.
Şimdi gelelim okuduğumuz dosyadan verileri hedefdosyamıza yazmaya.

>>> for satirlar in oku[:2]:
hedefdosya.write(satirlar)

Burada yaptığımız işlem ise verioku değişkeniyle okuduğumuz verilerden,hedef dosya üzerine
sadece 0. ve 1. satırları aldık.Niye 0. satır dediğimizi açıklamaya gerek var mı bilmiyorum ama
diziler 0. terimden başlıyorlardı.(hatırlatma olsun)
Şimdi de aldığımız bu 2 satırdan sonra ne yazdıracağımızı yazdıralım.

>>>hedefdosya.write("Python Öğreniyorum\n")

böylelikle yazdırmayı istediğimiz metni yazdırmış olduk.Şimdi kaynak dosyada kalan diğer verileri
hedefdosyaya yazdıralım

for satirlar in oku[2:]:
hedefdosya.write(satirlar)

ve kalan verileride yazdırdığımıza göre artık dosyaları kapatabiliriz.

>>>kaynakdosya.close()
>>>hedefdosya.close()


böylelikle dosya işlemlerini bitirmiş oluyoruz.İyi çalışmalar