Düzenli İfadelerin Derlenmesi

Yazar: Unknown Tarih: 10 Ağustos 2013 Cumartesi Yorum: (0)
compile() metodu
Bu konumuzda ifadelerimizi düzenledikten sonra işleme koyacağız.Peki bu derlemenin ne farkı var? diye sorarsak;
bilmemiz gereken en önemli özelliği programlarımızın daha hızlı çalışmalarını sağlamak.Tabiki bunu görebilmek için
büyük çapta projelerde çalışıyor olmamız lazım ki şu an için sadece nasıl kullanıldığını öğreneceğiz.

Önceki derslerdeki örnekleri biraz değiştirerek başlayalım:

>>> import re
>>> version=["python2.7","django1.0","php5.0","Android4.0"]
>>> Compiler=re.compile("[a-z]+[0-9]\.[0-9]")
>>> for i in version:
derli=Compiler.search(i)
if derli:
print derli.group()

kodumuz bu şekilde.Şimdi bunu açıklayalım.
İlk iki satır bilindik şeyler asıl iş üçüncü satırdaki "Compiler" değişkeni ile başlıyor.
Bir önceki konumuzda "Compiler" değişkeninde yaptığımız işlemi for döngüsü içinde yapıyorduk ve program her döngüye
başladığında "Compiler" değişkeni tekrar tekrar oluşturuyordu.Fakat burada yaptığımız ise tek bir sefer "Compiler"
değişkenini tanımladıktan sonra for döngüsü içinde kullanmmız gereken sadece search() metodu, bu metodda
aradıklarımızı bulmamızı sağlar.

Kodumuzu çalıştırdığımızda

python2.7
django1.0
php5.0
ndroid4.0

çıktılarını alırız.


compile() ile derleme seçenekleri

re.IGNORECASE veya re.I
Bu alt metodumuz büyük-küçük harf ayrımı yapmamızı sağlıyor.

>>> php=" Hypertext Preprocessor (Türkçe: Üstünyazı Önişlemcisi [1]) (Aslen: Personal Home Page - Kişisel Ana Sayfa) , genelağ için yaratılmış, sunucu taraflı, çok geniş kullanımlı, genel amaçlı, HTML içerisine gömülebilen betik ve programlama dilidir[1]. PHP, ilk kez Rasmus Lerdorf tarafından, web üzerinden sayfasına ziyaret edenleri izlemek amacıyla bir dizi Perl betiği kullanılarak geliştirilmişti. İnsanlar kısa zamanda bununla ilgilenmeye ve bu konuyla ilgili sorular sormaya başladıklarında, Rasmus kararını verdi ve bir betik motoru oluşturdu. Ayrıca formlara da destek verdi ve böylece PHP/F1'i biçimlendirmiş oldu. Adını duyurdukça bir grup yazılım geliştirmecinin dikkatini çekti ve böylece bir API oluşturuldu ve PHP3 ortaya çıktı. Daha sonraları yeniden ele alınması gerekti ve Zend motoru PHP4'ü yaratmış oldu. Artık PHP önünde pek engel bulunmuyordu, böylece PHP daha ünlenmeye başladı. Günümüzde PHP, bloglardan forumlara, portal sistemlerinden veri tabanlarına, yapay sinir ağlarından matematiksel sistemlere, sınıflardan fonksiyonlara her türlü işlevde kullanılır."
>>> derle=re.compile("PHP",re.IGNORECASE)
>>> print derle.findall(php)

şeklindeki kodumuzun çıktısı

['PHP', 'PHP', 'PHP', 'PHP', 'PHP', 'PHP', 'PHP']

olur.Örneği şu şekilde ve daha faklı şekillerde de kullanabiliriz.

>>> derle=re.compile("PHP+[0-9]",re.IGNORECASE)
>>> print derle.findall(php)

bu kodumuzun şıktısı ise

['PHP3', 'PHP4']

olacaktır.Bundan daha fazlası sizin ihtaycınıza kalmış.
php adlı yazı http://tr.wikipedia.org/wiki/PHP adresinden alınmıştır.

re.DOTALL veya re.S
Bu alt metodumuz ise "." sembolünü string olarak kabul ederek istediğimiz ifadeyi diğer satırlardada aramamızı sağlar

>>> example="deneme python.\n deneme python"
>>> print re.search("python.*",example).group()

şeklindeki kodumuz "." sembolünün gerçek rolünün kullanıldığı bir örnek ve sonucu da şu şekilde:

python.

Gördüğümüz gibi "\n" ifadesine kadar arama yaptı bir alt satıra geçip oradaki "python" ifadesini aramadı.
Şimdi bizim öğreneceğimiz kodu buna uyarlıyalım.

>>> example="deneme python.\n deneme python"
>>> derle=re.compile("python.*",re.DOTALL)
>>> nesne=derle.search(example)
>>> if nesne:
print nesne.group()

kodumuz bu şekilde ve sonucumuz ise

python.
 deneme python

re.UNICODE veya re.U
Tükrçe programlar yazabilmemiz için diğer seçeneklerden biri

>>> list=["şeker","şey","ğ","çatal","python"]
>>> for i in list:
nesne=re.search("\w*",i)
if nesne:
print nesne.group()

kodlarımız bize içinde Türkçe karakter bulunduğu için bize "php" ifadesinden başka bir sonuç döndürmeyecek.
Fakat kodumuzu şu şekilde düzeltirsek

>>> list=["şeker","şey","ğ","çatal"]
>>> derle=re.compile("\w*",re.UNICODE)
>>> for i in list:
nesne=derle.search(i)
if nesne:
print nesne.group()

bize Türkçe karakterdede arama olanağı sağlayacaktır.
Sonucumuz

şeker
şey
ğ
çatal
python



Özel Diziler

Yazar: Unknown Tarih: 17 Temmuz 2013 Çarşamba Yorum: (0)

Boşluk Karakterinin Yerini Turan Dizi: \s

Bu ifade karakter dizimizdeki boşluk karakterini bulmamızı sağlar.

import re
language=["python programlama","django web programlama","php web programlama","Android"]
for i  in language:
sonuc=re.search("[A-Za-z]+\s[A-Za-z]+",i)
if sonuc:
print sonuc.group()

kodlarını çalıştırdığımızda bizi vereceği karakter dizileri aşağıdaki gibidir;

python programlama
django web
php web

Gördüğünüz gibi bize burada boşluk ifadesinin kullanıldığı karakter dizileri geri döndürüldü.

Ondalık Sayıların Yerini Tutan Dizi: \d

Bu ifade karakter dizimizdeki ondalık sayı karakterini bulmamızı sağlar.
Örneği önceki derslerimizde şöyle bir ifade kullanıyorduk

karakter_dizisi=re.search("[0-9][A-Za-z]")

şeklinde ifade kullanmıştık.Buradaki amaç sayı ile başlayan ve harf karakterleriyle devam eden karakter dizilerini bulmaktı. İşte kodumuz tam burada öne çıkıyor.

version=["php5","python 2","python3","CSS 3","HTML5"]
for i in version:
sonuc = re.search("[A-Za-z]+\d+",i)
if sonuc:
print sonuc.group()

yukarıdaki kodumuz bize sonu sayı ile biten karakter dizilerini verecektir.

php5
python3
HTML5

Gördüğünüz gibi sonu sayısal ifade olan karakter dizilerimizi kolaylıkla bulduk.
Ama diyelim ki biz "CSS 3" bulmak istiyoruz.Küçük bir değişiklik ile onuda kolaylıkla bulabilir.

for i in version:
sonuc = re.search("[A-Za-z]+\s\d+",i)
if sonuc:
print sonuc.group()

kodunu çalıştırdığımızda bize çıktı olarak

python 2
CSS 3

2 çıktı verecektir.Burada dikkat edilmesi gereken kod => sonuc = re.search("[A-Za-z]+\s\d+",i)
Çünkü bu kodun içindeki boşluk(\s) dizisini sayısal ifade(\d) dizisinden sonra yazarsak, önce sayısal ifade arayacak sonra boşluk ifadesini arayacak.Fakat bizin karakter dizilerimiz içinde böyle bir karakter dizisi bulunmadığı için sonuç boş dönecektir.Bunu denemek için

for i in version:
sonuc = re.search("[A-Za-z]+\d\s+",i)
if sonuc:
print sonuc.group()

kodunu çalıştırarak sonucu görebilirsiniz.

Alfanümerik Karakterlerin Yerini Tutan Özel Dizi: \w

Bu ifade karakter dizimizdeki alfanümerik karakterleri ve "_" karakterini bulmamızı sağlar.

alfanumerik = "yukonit12_$"
print re.search("\w*",alfanumerik).group()

Yukarıdaki kodumuzu çalıştırdığımızda bize alfanumerik olmayan bir karaktere kadar olan alfanumerik karakter dizisini verdi.
Cümle biraz karışık gibi oldu ama bir sonraki örnekte daha iyi anlaşılacağını umuyorum.Bu kodumuzun çıktısı;

yukonit12_


Diğer bir örnek olarak şu kodlarımızı yazalım.

alfanumerik="yukonit12_python_$_php_%_asp"
print re.search("\w*",alfanumerik).group()

Kodlarımız bunlar şimdi bu kodlarımızı çalıştıralım ve sonucu görelim.

yukonit12_python_

Gördüğünüz gibi yukarıda bahsettitğim " bize alfanumerik olmayan bir karaktere kadar olan alfanumerik karakter dizisi " olayı
umarım burada daha iyi anlaşılmıştır.

Dersimizin sonuna gelmeden önce şu soruyu sorabiliriz: Peki bu harfleri büyük yazarsak ne olur?

"\s" ifadesi boşluk karakterinin yerini bulmamızı sağlarken, "\S" ifadesi boşluk karakteri olmayan karakter dizilerini bulmamızı sağlar.
"\d" ifadesi ondalık sayı karakterinin yerini bulmamızı sağlarken, "\D" ifadesi ondalık sayı karakteri olmayan karakter dizilerini bulmamızı sağlar.
"\w" ifadesi alfanümerik ve "_ "karakterinin yerini bulmamızı sağlarken, "\W" ifadesi alfanümerik olmayan ve " _ " karakteri bulunmayan karakter dizilerini bulmamızı sağlar.

Bunlarla ilgili örnekleri size bırakıyorum.Hatta bu dersteki örnekler üzerinde denerseniz sizin içi daha faydalı olur.
Bir sonraki derste görüşmek üzere...
Videolu Ders: 8 Python Fonksiyonlar

Videolu Ders: 8 Python Fonksiyonlar

Yazar: Unknown Tarih: 12 Temmuz 2013 Cuma Yorum: (0)
Python Fonksiyonlar( global, return, pass)

Eşleşme Nesnelerinin Metodları

Yazar: Unknown Tarih: 10 Temmuz 2013 Çarşamba Yorum: (0)
Group() metodu
Bu metodu daha önce işlediğimiz düzenli ifadelerde kullanmıştık.
Bu bölümde başka bir özelliğine daha değineceğiz.Bu özellik ise
bir karakter dizisini gruplamamızı sağlaması.

improt re
gruplanacak_yazi="django python dilinin web çatısıdır."
gruplama=re.search("(django) (python) (dilinin) (web) (çatısıdır)")
print gruplama.group()

kodlarını çalıştırdığımızda biz

django python dilinin web çatısıdır.

çıktısını verecektir.Bu çıktı oluşturduğumuz grubumuzun tamamıdır.
Grubumuzun bölümlerine erişmek için ise

print gruplama.group(3)

şeklinde yazdığımızda bu kodumuzun çıktısı 3. kelimemiz yani "dilinin" olacaktır.
Burada karıştırılmaması gerek konu indis numarasının 1'den başlaması.Daha önce gördüğümüz
listeler ile karıştırılmamalıdır.Örneğimizi biraz daha geliştirelim;

gruplama=re.search("(django) (python) (dilinin) (web çatısıdır)",gruplanacak_yazi)

şeklinde düzenledikten sonra grubumuzun 4.bölümünü çağıralım

print gruplama.group(4)

Kodumuzu çağırdıktan sonra biz verdiği çıktı "web çatısıdır" oldu.Yani grublamayı biz yönetbiliyoruz.

Groups() Metodu
Bu metodumuz bizim grupladığımız düzenli ifademizi demet haline çevirerek bize sunar.Bir önceki örnekle
devam edersek sadece çıktı alıcağımız yerdeki "group" koduna "s" ekliyeceğiz.

.
.
.
print gruplama.groups()

kodumuz bize şu şekilde bir çıktı verecektir:

('django', 'python', 'dilinin', 'web \xe7at\xfds\xfdd\xfdr')

buradaki 4 ifademizdeki "web" kelimesinden sonraki bölümdeler Türkçe karakter uyumsuzluğu olduğu için
çıkmaktadır.Aslında "\xe7at\xfds\xfdd\xfdr" ifadesinin anlamı "çatısıdır".

bir sonraki dersete görüşmek üzere

Düzenli İfadeler - 5

Yazar: Unknown Tarih: 21 Ocak 2013 Pazartesi Yorum: 2


$ (Dolar)
Bir Önceki derste gördüğümüz ^(şapka) metakarakterinin ilk özelliğinin ters işlevine sahiptir.
Yani ^(şapka), karakter arama işlemini karakter topluluğunun başında yapıyordu, $(dolar)'da ise
aranacak karakter topluluğunun sonunda arama yapıyor.
Örnek verelim:

1.Örnek

>>> import re
>>> y=['deneme','söyleme','kaleme','makine','toplantı','kaşıntı','mırıntı']
>>> for i in y:
if re.search('me$',i):
print i


deneme
söyleme
kaleme

2.Örnek

>>> for i in y:
if re.search('e$',i):
print i


deneme
söyleme
kaleme
makine

3.Örnek

>>> for i in y:
if re.search('tı$',i):
print i


toplantı
kaşıntı
mırıntı


import re ile re kütüphanemizi eklemiş olduk.
1.örnekte sonu "me" ile biten kelimeleri buldurduk.
2.örnekte is sonu "e" ile biten kelimeleri buldurduk.
3.örnekte ise sonu "tı" ile biten kelimeleri buldurduk.


\ (Ters Bölme İşareti)
Bu metakarakter bildiğimiz kaçış dizisi ifadesidir.Bunu burada kullanmamızın sebebi ise özel karakterin
çıktısını alabilmek için.Örneğin az önceki konu olan $(dolar) işaretini el alalım.


>>>for i in liste:
if re.match('[0-9]+$',i):
print i

şeklinde bir kod yazarsek ekrana herhangi bir çıktı vermeyecek.Çünkü bizim sayı ile biten karakter dizisini
aradığımızı zannedecek, fakat bizim amacımız $(Dolar) fiyatlarını bulmak olduğu için yukarıdaki kodu
şöyle değiştiriyoruz:


>>> for i in liste:
if re.match('[0-9]+\$',i):
print i


10$
35$

Görüldüğü gibi istediğimiz sonuca ulaştık.

|(Dik Çizgi)
Bu metakarakterimizde birden falza düzenli ifadeyi eşleştirmemizde işimize yarıyor.Örneğin "de" ile başlayan ve "me" ile biten karakter dizilerini arayalım;


>>>y=['deneme','söyleme','kaleme','makine','toplantı','kaşıntı','mırıntı']
>>> for i in y:
if re.search('^de|me$',i):
print i


deneme
söyleme
kaleme

yada "ka" ile başlayan veya "ı" ile biten karakter dizilerini arayalım;


>>> for i in y:
if re.search('^ka|ı$',i):
print i


kaleme
toplantı
kaşıntı
mırıntı



ve son olarak bir örnek daha yaparak bu dersi sonlandıralım.

>>> import re
>>> import urllib
>>> url='http://www.pythondili.blogspot.com'
>>> f=urllib.urlopen(url)  //Bu kodu yazdıktan sonra biraz beklemeniz lazım çünkü programın siteye ulaşması biraz zaman(10sn) alıyor.
>>> for i in f:
nesne=re.search('.+',i)
if nesne:
print nesne.group()

Çıktı olarak "Python İle İp Bulma" yazımda verdiğim linki buldu: Kaynak


Bu son örneğimizde pythondili.blogspot.com içindeki yazıların içinde verilen linkleri aratmaktayız.
Bu kodun url='http://www.pythondili.blogspot.com' kısmını url='http://pythondili.blogspot.com/2013/01/duzenli-ifadeler-4.html' olarak değiştirdiğimizde sadece o yazı içerisinde link var mı yok mu kontrol eder.

Düzenli İfadeler - 4

Yazar: Unknown Tarih: 20 Ocak 2013 Pazar Yorum: (0)

{} (küme parantezi)
Bu metakarakter sayesinde, istediğimiz bir karakteri istediğimiz kadar yineletmemizi sağlıyor.


>>>import re
>>> liste=['st','sat','saat,','zaaat',]
>>>for i in liste:
if re.match("sa{2}t",i):
print i

saat


ilk örneğimizde 2 a harfi olan saat kelimesini buldurduk.



>>> for i in liste:
if re.match("za{3}t",i):
print i


zaaat

bu örneğimizdede 3 a harfi olan zaat kelimesini bulduk

Bu metakarakterimizin diğer bir özelliğide {0,2} şeklinde yazarak en az ve en çok ne kadar
tekrar etmesini belirtebiliriz

>>> for i in liste:
if re.match("sa{0,2}t",i):
print i


st
sat
saat


aynı sonucu şu kodlarlada alabiliriz;


>>> for i in liste:
if re.match("sa*t",i):
print i


st
sat
saat

sonuç aynı fakat burada herhangi bir sınır olmadığı için saaaaaat kelimesini listeye eklediğimizde
bu kelimeyide çıktı verecektir.Bir önceki dersten hatırlayalım.

^ (Şapka)
Bu metakarakterimizin 2 özelliği var.Bunlar ilki bir karakter dizisini en başındaki verileri sorgulamak:

>>> x=['VC10DD','FF33GG','WW44EE','QQ11QQ']
>>> for i in x:
ara=re.search("^[A-Z]+[0-9]",i)
if ara:
print ara.group()


VC1
FF3
WW4
QQ1



İkincisi ise " hariç " anlamında kullanımı:

>>>x.appen('4fbPY91')
>>> for i in x:
ara=re.match("[0-9A-Z][^a-z]+",i)
if ara:
print ara.group()


VC10DD
FF33GG
WW44EE
QQ11QQ

gördüğünüz gibi burada sonrada eklediğimiz "4fbPY91" elemanını çıktıda vermedi.Çünkü biz match
metoduyla aranacak kriterleri şöyle belirledik:

[0-9A-Z]=aranacak değerin en başında bir sayı veya büyük harf olmalı şartı
[^a-z]=belirlediğimiz sayı veya büyük har şartından sonra ^(şapka) metakarakterimizin ikinci özelliği
olan haric tutma özelliği ile küçük harf olmaması şartını sağlıyor.
+ =Bu karakterimizde ise yukarıdaki küçük harf olayının tekrar etmesi şartını sağlıyor yani
sayı veya büyük harften sonra ne kadar küçük harf gelirse gelsin yinede bu karakter topluluğunu almayacak.

Bu ^(şapka) metakarakterimizin dahil etmeme özelliğini şöylede kullanabiliriz:

>>> for i in x:
ara=re.search("[0-9A-Z][^a-z]+",i)
if ara:
print ara.group()


VC10DD
FF33GG
WW44EE
QQ11QQ
PY91

Görüldüğü gibi burada "4fbPY91" elemanımızın başında sayı olmasına rağmen sonraki karakterler küçük harf
olduğu için ilk üç karakteri çıkararak sonr 4 karakteri bize verdi

Düzenli İfadeler-3

Yazar: Unknown Tarih: 11 Eylül 2012 Salı Yorum: (0)
+(Artı)

Bu karakterimiz * karakteriyle benzerdir.Fakat * karakteriyle kendisinden önceki 0 veya daha fazla
sayıda tekrar eden karakterleri buluyor.+ işareti ise kendisinden önce 1 veya daha fazla olan
karakterleri bulamamızı sağlıyor.

Örnek:

>>> liste=["batman", "catwoman", "zorman", "man"]

>>> for i in liste:
if re.match(".+man",i):
print i

batman
catwoman
zorman

Görüğümüz gibi burada "man" kelimesinin çıktısını vermedi.Bunun neden ".+man" yazmış olmamızdır.
Ama * karakteriyle kullanılan sonuçta ise;

>>> for i in liste:
if re.match(".*man",i):
print i


batman
catwoman
zorman
man

"man" kelimesini ekrana verdi.


Şimdi bu +(Artı) karakterimizle ilgili biraz örnekler verelim:


*(Yıldız) Karakteriyle
>>> liste=["dv","dev","deev","deeeev","deveeeee"]
>>> for i in liste:
if re.match("de*v",i):
print i


dv
dev
deev
deeeev
deveeeee


+(Artı) Karakteriyle
>>> for i in liste:
if re.match("de+v",i):
print i


dev
deev
deeeev
deveeeee


?(Soru İşareti) 

Bu karakterimiz *(Yıldız) ve +(Artı) işaretinin birleşimi şeklinde belirtebiliriz.
Hemen örnekleyelim:

*(Yıldız) Karakteriyle
>>> liste=["dv","dev","deev","deeeev","deveeeee"]
>>> for i in liste:
if re.match("de*v",i):
print i


dv
dev
deev
deeeev
deveeeee


+(Artı) Karakteriyle
>>> for i in liste:
if re.match("de+v",i):
print i


dev
deev
deeeev
deveeeee

?(Soru İşareti) Karakteriyle
>>> for i in liste:
if re.match("de?v",i):
print i


dv
dev
deveeeee

Gördüğümüz gibi ?(Soru İşareti) Karakteri d ile v arasındaki e karakterinden hiç geçmeyen kelimeleri ve 1 defa geçen kelimeleri buldu.

Pythonla IP adresimizi öğrenelim

Yazar: Unknown Tarih: Yorum: (0)
# -*- coding: utf-8 -*-
import urllib2
import socket

url="http://droidpark.com/whatismyip/"

hostname=socket.gethostname()

lanip=socket.gethostbyname(socket.gethostname())

try:
adresiAl=urllib2.urlopen(url)
wanip=adresiAl.read()
adresiAl.close()
except IOError:
print "Şuanda ip adresiniz alamıyoruz";
wanip="Error!";

print "*"*10;
print "Makine adi : %s" % hostname
print "WAN IP Adresi : %s" % wanip
print "LAN IP Adresi : %s" % lanip
print "*"*10


Kaynak

Düzenli İfadeler -2-

Yazar: Unknown Tarih: 19 Şubat 2012 Pazar Yorum: 2
Metakarakterler
Bu başlık altında python'da metakarakter olarak adlandırılan []  .  *  +  ?  {}  ^  $  |  ()  \
bu karakterleri göreceğiz.Giriş olarak kısa bir örnek yapalım

>>> import re
>>> liste=["turgay","turgut","özkan","özcan","özhan","kemal","dündar"]
>>> for i in liste:
    nesne=re.search("öz[chk]an",i)
    if nesne:
        print (nesne.group())

özkan
özcan
özhan

şeklinde bir örnek ile [] işareti ile belli bir harf aralıklarını içeren isimleri bulduk.Şimdi
bun karakterlerini işleyelim.

[] Köşeli Parantez
Giriş kısmındada bağsettiğimiz gibi belli bir karakteri yada belli bir aralığı araştırır.

Şimdi önceki yazımda anlattığım match metoduyla bir örnek yapalım...

>>> import re
>>> x=["1php","2python","perl","java","3jquery","4css","c/c++"]
>>> for y in x:
    if re.match("[0-9]",y):
        print (y)

1php
2python
3jquery
4css

yaptığımız örnek,sayı ile başlayan karakter dizilerini match metoduyla bulmak.
Eğer istersek if re.match("[0-9]",y): ifadesini if re.match("[A-Z]",y): şeklinde değiştirerek
har ile başlayan karakter dizilerini ekrana yazdırabiliriz.Ama tabi bu büyük hat aramsı yapacağı için
bizim örneğimizde çalışacak şekli if re.match("[a-z]",y): şeklindedir.

. Nokta
Bu metakarakteri yeni satır karakteri dışındaki karakterlerin yerini tutar.

>>>liste=['sema', 'sena', 'sefa', 'semra', 'sene']
>>> for i in liste:
    if re.match("se.a",i):
        print(i)

sema
sena
sefa

yukarıdaki örnek bir dizi oluşturup,dizi için de "se" ile başlayıp "a" ile biteni veya devam edeni
bulmasını istedik.Burada .nokta m,n,f karakterlerinin yerini tutarak işlemi gerçekleştirdi.
Eğer şöyle bir örnek yaparsanız

>>> liste=["ahmet","mehmet","samet",]
>>> for i in liste:
    if re.match(".met",i):
        print(i)

şeklindeki örnek hiç bir çıktı vermeyecek.Çünkü ilk örnektede olduğu gibi bu metakarakter tek
karakterin yerini tutar.

* Yıldız
Bu metakarakter, kendisinden önce gelen bir ifade kalıbını 0 veya daha fazla karakterde eşleştirir.
Yani .nokta karakterinin çoğulu gibi düşünebiliriz.

>>> liste=["at","sat","saat","kat","tat","strafor"]
>>> liste.append("strafor")
>>> for i in liste:
    if re.match("sa*t",i):
        print (i)

sat
saat
strafor

Bu örnekte yaptığımızı açıklamak gerekirse,s ile başlayan karakter dizilerini bulmak diyebiliriz.
Burada s ile başlayıp a ile devam eden karakter dizilerini buldu.Ama strafor ne alaka diyebilirsiniz.
Tanımda da dediğimiz gibi 0 veya daha fazla eşleştirme yapar.

Düzenli İfadeler / Regular Experessions

Yazar: Unknown Tarih: 16 Şubat 2012 Perşembe Yorum: (0)
Evet yeni bir konuya geçiş yapıyoruz.
Düzenli ifadeler her programlama dilinde oluduğu gibi pythonda da karşımıza çıkıyor.
Ama söylemeliyim ki python'nun belkide en karmaşık konusu.Ama elimden geldiğince basite indirgeyip
anlatmaya çalışacağım.Bu kadar konuşmadan sonra başlayalım...

Başlangıç olarak  re modülünü programa çağırmamız gerekiyor ki daha öncede yaptığımız gibi

>>>import re

Bunun arkasından dir(re) komutu ile kullanacağımız metodları ekrana yazdırabiliriz.
Gördüğünüz gibi biraz fazla.Tabiki hepsini anlatmayacağım ama bu anlatmayacaklarımın işinize
yaramayacağı anlamına gelmez.

Match() Metodu
Bu metod daha önce işlediğimiz split() ve startswith() metodlarıyla aynı işlevdedir.
Görevi ise bir karakter dizisi içinde bir kelime aramamızı sağlar fakat aradığımız kelime karakter
dizisinin başında olması gerekir.

>>> x="python dilini öğreniyorum"
>>> re.match("python",x)
<_sre.SRE_Match object at 0x0000000002D7C5E0>

Gördüğümüz gibi burada python kelimesi karakter dizimiz içinde var fakat python'nun bize döndürdüğü
mesaj pekde anlaşılır değil ama aradığımız kelimenin karakter dizisinin içinde varolduğunu söylüyor

Ama şunu yazarsak

>>> re.match("dilini",x)

herhangi bir çıktı ekrana gelmeyecektir.Aslında gelecektir fakat bunu görmek için kodun başına sadece
print ifadesini eklemek yeterli olacaktır.Peki karakter dizimizde "dilini" kelimesi var neden mesaj
vermedi derseniz match metdounun açıklama kısmının son cümlesine bakmanızı tavsiye ederim.

Split ve startswith ile aynı işlevde demiştik

>>> a.split()[0]=="python"
True
>>> a.split()[0]=="dilini"
False

>>> a.startswith("python")
True
>>> a.startswith("dilini")
False

Eğer amaç karakter dizisi başında bulunan bir kelimeyi bulmaksa Split ve startswith metodları kullanılmalıdır.
Çünkü Split ve startswith, match metodundan daha hızlıdırlar.

>>> y="abcdefg"
>>> re.match("abc")
<_sre.SRE_Match object at 0x0000000002E8C5E0>

>>> re.match("abcdef",y)
<_sre.SRE_Match object at 0x0000000002E8C648>

print (re.match("abcg",y))
none

Ama sitersek arattığımızda ne bulunduğunu da görebiliriz

>>> re.match("abcg",y)
>>> a="django,pythonnun çatısıdır"
>>> b=re.match("django",a)
>>> b.group()
'django'

Evet hemen bir programa yazalım

import re
x=input("Bir kelime giriniz: ")
y=re.match("python",x)
if y:
    print ("Kelimeniz (",y.group(),")ile başlıyor")
else:
    print ("Kelimeniz python ile başlamıyor")

bu programı yazıp masaüstünüze kaydedip deneyin ve siz de daha farklı programlar yazmayı deneyin ki
bu dersler dersler bir işe yarasın :)

Search() Metodu
Bu metod ile de karakter dizimizin tamammında arama yapabiliriz

>>>a="python dilinde en karışık konu düzenli ifadeler."
>>>re.search("ifadeler",a)
<_sre.SRE_Match object at 0x0000000002E2C648>

Bu kodla ilgili bir program yazarsak

import re
x=input("Bir cümle giriniz: ")
y=re.search("http://www.",x)
if y:
    print("cümlenizde internet adresi bulundu")
else:
    print("cümlenizde herhengi bir internet adresi yok")

Findall() Metodu
Bu metod ise yine search metodunun yaptığı işi yapar,ayrıca kelimenin karakter dizisi içinde
kaç tane olduğunu biz gösterir.

>>> import re
>>> z="Python'un son derece kolay okunabilir olması düşünülmüştür. Bu yüzden örneğin küme parantezleri yerine girintileme işlemi kullanılır. Hatta bazı durumlarda girintileme işlemine dahi gerek kalmadan kodun ilgili bölümü tek satırda yazılabilir. Böylece Python, program kodunuzu en az çaba ile ve hızlıca yazmanıza imkân tanır. Sade sözdizimi ile diğer programlama dillerinden üstündür."
>>> re.findall("python",z)
['Python', 'Python']

>>> c="Python programalama diline başlayalı çok olmadıki,pythonu sevmeye başladım"
>>> re.findall("python",c)
['python']

Yukarıda 2 tane örnek verdim.Fakat bunların ikisindede 2 tane python yazısı olamsına rağmen
birincisinde 2 tane python yazısı bul ikincisinde ise 1 tane.Bunun nedeni ise findall aranınlan
kelimeye tam olarak uyanı arar ve büyük küçük harf farkı bunu etkiler.

Karakter Dizi Metodları-4

Yazar: Unknown Tarih: 3 Şubat 2012 Cuma Yorum: (0)
Partition metodu
Bu metod ile bir karakter dizisini belli bir ölçüte göre ayırabiliriz.

>>> a="bartın"
>>> a.partition("rt")
('ba', 'rt', 'ın')

>>> a.partition("b")
('', 'b', 'artın')

Eğer aratacağımız karakter, bizim karakter dizimiz içinde yok ise

>>> a.partition("P")
('bartın', '', '')

RPartition metodu
Partition metodu ile aynı görevde olup tek farkı Partition metodu soldan sağa RPartition metodu
ise sağdan sola doğru okuma yapar.

>>> a.rpartition("n")
('bartı', 'n', '')

Strip Metodu
Bu metod ise karakter dizimizin başında ve sonunda yer alan boşluk ve yeni satır gibi karakterleri
kaldırır.

>>> b="   Yönetim Bilişim Sistemleri   "
>>> b.strip()
'Yönetim Bilişim Sistemleri'

RStrip Metodu
Bu metod ise strip metodunun sağdece sonuna yani sağındaki boşluk ve yeni satır karakterleri kaldırır.

>>> b.rstrip()
'   Yönetim Bilişim Sistemleri'

LStrip Metodu
Bu metodda karakter dizimizin başında yani solundaki boşluk ve yeni satır karakterleri kaldırır.

>>> b.lstrip()
'Yönetim Bilişim Sistemleri   '

Splitlines Metodu
Bu metod ile karakter dizimizde yeni satır noktalarından itibaren keserek, bunları bir liste
haline çevirebilmemizi sağlıyor.

>>> c="Yönetim\nBilişim\nSistemleri"
>>> c.splitlines()
['Yönetim', 'Bilişim', 'Sistemleri']

Split Metodu
Bu metod join() metoduna benzemektedir.join() metoduyla bir listenin öğelerini karakter dizisi
şekline çeviriyorduk.Split() ie bu işlemin tam tersini yapıyor.

>>> f="Python programlama dili"
>>> f.split()
['Python', 'programlama', 'dili']

Bu şekilde ayırabildiği gibi

>>> f.split(",")
['Python programlama dili']

şeklindede birleştirebilir.
Diğer bir özelliği ise bir karakter dizisini kaç kez kesme işleminin uygulanmasını belirlememiz

>>> site="wwww.pythondili.blogspot.com"
>>> site.split(".",2)
['wwww', 'pythondili', 'blogspot.com']

görüldüğü gibi karakter dizimizdeki . alanlarından 2 tanesinde ayırma işlemi yaptı.Eğer
site.split(".",3) yapsaydık

>>> site.split(".",3)
['wwww', 'pythondili', 'blogspot', 'com']

eğer ayıracağımız karakter, bizim karakter dizimizde yok ise

>>> site.split(",",3)
['wwww.pythondili.blogspot.com']

ayırma işlemi yapmayacaktır.

Karakter Dizi Metodlar-3

Yazar: Unknown Tarih: 21 Ocak 2012 Cumartesi Yorum: (0)
Expandtabs metodu
Bu metod ile karakter dizimizdeki sekme boşluklarının büyüklüğünü artırabiliyoruz.

>>> x="python\töğreniyorum."
>>> x.expandtabs(5)
'python    öğreniyorum.'

FIND metodu
Bu metod ile bir karakter dizisi içindeki bir karakterin kaçıncı konumda olduğunu bize söylüyor.

>>> a="Python kolay bir dil"
>>> a.find("o")
4

Gördüğümüz gibi "o" harfinin kaçıncı karakter(0'dan başladığını hatırlayalım) olduğunu bize verdi.
Ama "Python" dilinden sonra bir "o" harfi olan kelimemiz daha var.Ama python solda sağa doğru
okuma yaptığı için ilk "o" harfinin bulunduğu değeri verdi.

eğer arama yaptığımız harf yok ise -1 değerini bize döndürecektir.


>>> a="Python"
>>> a.find("i")
-1

Python bize aralık olarak arama yapmada imkanı veriyor:

>>> a="Python kolay bir dil"
>>> a.find("n",0,6)
5

Bu örnekte 0 ile 6. karakterler arasını araştırp bize "n" harfinin kaçıncı karakter olduğunu
söylemesini istedik.

Rfind metodu
Bu metod find metodu ile aynı görevi yapar fakat tek farkı karakter dizilerini soldan sağa değilde
sağdan sola doğru okur.

>>> a="python"
>>> a.rfind("p")
0


İndex metodu
find() metodu ile aynı işelve sahiptir.Tek değişik yönleri;fin() metodu bir karakteri bulamadığında
-1 değerini döndürür,index() metodu ise hata mesajı.

rindex metodu
Bu da index metodunun soldan sağa yaptığı okuma işini sağdan sola yapmaktadır.

join metodu
Bu metod karakter dizimizdeki her karakter arasına yeni bir karakter ekleme imkanı verir.

>>> a="python"
>>> "-".join(a)
'p-y-t-h-o-n'


>>> a=["php","jquery","ajax","android","python","c#","c++","java"]
>>> ":".join(a)
'php:jquery:ajax:android:python:c#:c++:java'


translate metodu
Bu metodu anlatmak hem karışık hemde zor olduğu için bu metodu istihza.com'dan alıntı yapacağım.


str.maketrans ve translate Metotları

Bu iki metot birbiriyle bağlantılı olduğu için, bunları bir arada göreceğiz.

Diyelim ki elimizde bir karakter dizisi var ve biz bu karakter dizisini şifrelemek istiyoruz. Bunun için şöyle bir kod yazdığımızı varsayalım:

sözlük = {"a":"0",
          "b":"1",
          "c":"2",
          "ç":"3",
          "d":"4",
          "e":"5",
          "f":"6",
          "g":"7",
          "ğ":"8",
          "h":"9",
          "ı":"a",
          "i":"b",
          "j":"c",
          "k":"ç",
          "l":"d",
          "m":"e",
          "n":"f",
          "o":"g",
          "ö":"h",
          "p":"ı",
          "r":"i",
          "s":"j",
          "ş":"k",
          "t":"l",
          "u":"m",
          "ü":"n",
          "v":"o",
          "y":"ö",
          "z":"p",
          " ":" "}

kardiz = "python programlama dili"

şifreli = ""
for i in kardiz:
        şifreli = şifreli + sözlük[i]

print(şifreli)

Bu kodu çalıştırdığımız zaman şöyle bir çıktı alırız:

ıöl9gf ıig7i0ed0e0 4bdb

Aslında bu çıktıda “python programlama dili” yazıyor. Biz yukarıdaki kodlar yardımıyla karakter dizimizi şifreledik. Python, yazdığımız sözlüğü temel alarak “p” harfi gördüğü yere “ı” harfini; “y” harfi gördüğü yere “ö” harfini, “t” gördüğü yere “l” harfini... yerleştiriyor. Böylece karakter dizimizin çıplak gözle anlaşılmasını engelleyecek bir çıktı veriyor bize. İsterseniz yukarıdaki kodları bir fonksiyon olarak tanımlayıp çok daha verimli bir hale getirebiliriz:

sözlük = {"a":"0",
          "b":"1",
          "c":"2",
          "ç":"3",
          "d":"4",
          "e":"5",
          "f":"6",
          "g":"7",
          "ğ":"8",
          "h":"9",
          "ı":"a",
          "i":"b",
          "j":"c",
          "k":"ç",
          "l":"d",
          "m":"e",
          "n":"f",
          "o":"g",
          "ö":"ğ",
          "p":"h",
          "r":"ı",
          "s":"i",
          "ş":"j",
          "t":"k",
          "u":"l",
          "ü":"m",
          "v":"n",
          "y":"o",
          "z":"ö",
          " ":" "}

def sifrele(kardiz):
        şifreli = ""
        for i in kardiz:
                şifreli = şifreli + sözlük[i]

        return şifreli

print(sifrele("python programlama dili"))

Fonksiyonumuzu bir kez bu şekilde tanımladıktan sonra sadece sifrele() fonksiyonunu kullanarak karakter dizilerimizi şifreleyebiliriz:

>>> print(sifrele("merhaba dünya"))

e5i9010 4nfö0

Burada bazı sorunlar olduğu açık. Mesela sözlük içinde tanımlanmamış karakter kullanıldığında programımız hata verecektir. Ayrıca açıkçası bu kodlar biraz “kalabalık” görünüyor göze...

İsterseniz yukarıdaki işlemi daha sade ve performanslı bir biçimde yapmanın bir yolu vardır Python’da...

Bunun için str.maketrans() ve translate() metotlarından yararlanacağız. Şu kodlara bir bakalım:

kaynak_dizi = "abcçdefgğhıijklmnoöprsştuüvyz"
hedef_dizi =  "0123456789abcçdefgğhıijklmnoö"
çeviri_nesnesi = str.maketrans(kaynak_dizi, hedef_dizi)

kardiz = "python programlama dili"

sonuç = kardiz.translate(çeviri_nesnesi)

print(sonuç)

Burada yaptığımız şey çok basit. Öncelikle “kaynak_dizi” adında bir karakter dizisi oluşturduk. Amacımız bir karakter dizisi içindeki karakterleri başka karakterlere dönüştürmek. İşte bu “kaynak_dizi” adlı karakter dizisi özgün kaynak dizimizin karakterlerini temsil ediyor. Alt satırdaki “hedef_dizi” adlı karakter dizisi ise, kaynak dizi içindeki karakterlerin dönüştürüleceği karakterleri gösteriyor. Bu iki karakter dizisini, bir üstteki kodlarda sözlük halinde yazmıştık. Buradaki “kaynak_dizi” adlı karakter dizisi bir önceki kodlardaki sözlüğün “anahtar”larının (keys), “hedef_dizi” adlı karakter dizisi ise sözlüğün “değer”lerinin (values) yerini tutuyor.

Karakter dizilerimizi tanımladıktan sonra str.maketrans() metodunu kullanarak bir “çeviri nesnesi” oluşturacağız. Oluşturacağımız bu çeviri nesnesi, biraz önce tanımladığımız “kaynak_dizi” ve “hedef_dizi” adlı karakter dizilerinin öğelerini birbiriyle eşleştirme vazifesi görecek. Zaten “str.maketrans(kaynak_dizi, hedef_dizi)” satırı bu vazifeyi gözler önüne seriyor... Bu arada maketrans() metodunu, öteki metotlardan farklı olarak str.maketrans() şeklinde kullandığımıza özellikle dikkat edin.

Hemen ardından çeviri işlemine tabi tutacağımız karakter dizimizi yazdık. Bu karakter dizimiz “python programlama dili”.

Daha sonra da “sonuç” adlı bir değişken içinde translate() metodundan faydalanarak yukarıda oluşturduğumuz “çeviri_nesnesi”ni bu metoda argüman olarak veriyoruz. Bu metot, “kardiz” adlı karakter dizisini alıp, yukarıda “çeviri_nesnesi” içinde belirlediğimiz formüle göre çeviri işlemine tabi tutuyor ve ortaya şifrelenmiş bir karakter dizisi çıkarıyor...

Karakter Dizi Metodları -2

Yazar: Unknown Tarih: 14 Aralık 2011 Çarşamba Yorum: (0)
Ljust
Bu metod karakter dizisinin sağında boşluk bırakarak,karakter dizisinin sola yaslanmasını sağlar.

>>> "python".ljust(10)
'python '

ikinci bir örnek ise

>>> "python".ljust(10,"*")
'python****'

şeklinde ek ifadeler ekleyebiliriz

Rjust
Bu metod karakter dizisinin solunda boşluk bırakarak,karakter dizisinin sağa yaslanmasını sağlar.

>>> "python".rjust(10,"*")
'****python'

Zfill
Bu metod da önceki işlediğimiz 2 metoda benzer bir görevi vardır.Zfill() metodu ile sayıların
soluna istedeğimiz kadar 0 yerleştirebiliriz

>>> x=7
>>> x="7"
>>> x.zfill(2)
'07'

şeklinde 0 sayısını eklememizi sağlar.

Replace
Bu metod python metodları içinde en çok işimize yarayacak metod olacak.replace() metodu ile bir
karakter dizisi içindeki karakterleri,başka bir karakter ile değiştirebiliriz.

>>> cumle="python dilini öğreniyorum"
>>> cumle.replace("i","ı")
'python dılını öğrenıyorum'

Startswith
Bu metod ile karakter dizilerimizin belli bir harfle veya karakterle başlayıp başlamadığını
öğrenebiliriz.

>>> x="elma"
>>> x.startswith("e")
True
>>> a="python"
>>> a.startswith("a")
False

Endswith
Bu metod da bir önceki metodun tam tersi görevi yapmaktadır.Yani bir karakter dizisinin hangi
karakter yada harfle bittiğini bulmamızı sağlar.

>>> x="python"
>>> x.endswith("p")
False
>>> x.endswith("n")
True

Count
Bu metod ile karakter dizimizin içerisinde bir karakterden kaç tane olduğunu bulmamızı sağlar.

>>> x="film,dizi,sinema"
>>> x.count("i")
4

Isalpha
Bu metod ile karakter dizimizin alfabetik olup olmadığını kontrol edebiliriz.

>>> x="python"
>>> x.isalpha()
True
>>> x="number1"
>>> x.isalpha()
False

İsdigit
Bu metod da bir önceki metodun ters işlemini yani girilen karakter dizsinin sayısal olup olmadığını
öğrenmemizi sağlar.

>>> x="123asd456"
>>> x.isdigit()
False
>>> x="456123789"
>>> x.isdigit()
True

Isalnum
Bu metod bir karakter dizisinin alfanümerik olup olmadığı hakkında bize bilgi verir.

>>> x="123asd456"
>>> x.isalnum()
True
>>> x="123/"
>>> x.isalnum()
False

Islower ve Isupper
Islower karakter dizisinin tamamının küçük harflerden oluşup oluşmadığını denetlememizi sağlar.
Isupper ise karakter dizisinin tamamının büyük harferden oluşup oluşmadığını denetlememizi sağlar.

>>> sehir="Bartın"
>>> sehir.islower()
False
>>> sehir="bartın"
>>> sehir.islower()
True


>>> sehir="Bartın"
>>> sehir.isupper()
False
>>> sehir="BARTIN"
>>> sehir.isupper()
True

Istitle
Bu metod ile karakter dizimizin ilk harfinin büyük olup olmadığını öğrenebiliriz.

>>> bolum="yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim Bilişim Sistemleri"
>>> bolum.istitle()
True

Isspace
Bu metod ile karakter dizimizin boşluktan oluşup oluşmadığını denetleyebiliriz.

>>> x=" "
>>> x.isspace()
True
>>> x="Python Programlama Dili"
>>> x.isspace()
False

Karakter Dizi Metodları -1

Yazar: Unknown Tarih: 10 Aralık 2011 Cumartesi Yorum: (0)
Listeler konusunda bu konuya benzer bir konu işlemiştik.Ama artık pythonda ilerlediğimize göre
daha complex terimler göremenin vakti geldi.
Öcelikle göreceğimiz metodları ekrana yazdırmakla başlayalım

>>> dir("")
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser',
'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate',
'upper', 'zfill']

tabii bunların hepsini işlemeyceğiz.İşelemeyceklerimizi gruplandıracak olursak '__xxx__' şeklinde
önünde ve sonunda alt tire olanlardır.Çünkü bunlar özel metodlara girmektedir.Bunların farklı
kapsam alanları var.Bunların dışındaki metodları göreceğiz.

Capitalize
Bu metod ile cümlelerimizin,kelimelerimizin yada daha geniş kapsamıyla karakter dizilerinin ilk
harfini büyütmemize yardımcı oluyor.


>>> "python".capitalize()
'Python'


Upper
Bu metod ile küçük harflerden oluşan karakter dizisinin bütün harflerini büyültmemizi sağlıyor


>>> "python".upper()
'PYTHON'


Eğer bu metodda Türkçe karakter kullanırken hata alıyorsanız ayrıca birkaç işlem yapmamız gerekiyor.Örneğin

>>>"şennur".upper()
'\xc\x9fEKER'

gibi bir durum ile karşılaşıyorsanız

>>>import locale
>>>locale.setlocale(locale.LC_ALL,"")

şeklindek locale modülünü eklememiz gerekir.Ve sonra

>>>print u"şennur".upper()
'ŞENNUR'

burada kullandığımız u harfi unicode adlı bir veri tipini ifade ediyor.Şimdilik bunu dönüştürücü
şeklinde bilsek yeterli ileride göreceğiz zaten.

Lower
Bu metodda upper() metodunun tam tersini yani büyük harfi küçük harfe dönüştürüyor.

>>> "PYTHON".lower()
'python'


tıpkı upper metodunda da olduğu gibi Türkçe karakter sorunu için yine aynı işlemi yapmamız gerekecek.

Swapcase
Bu metod ise harfin o andaki durmunun tam ters haline dönüştürür.

>>> "PyThOn".swapcase()
'pYtHoN'

Title
capitalize() metodunun bütün kelimelerin baş harflerini büyük yapar.

>>> "python programlama öğreniyorum".title()
'Python Programlama Öğreniyorum'

Center
Karakter dizisinin sağında ve solunda programcının belirlediği sayı kadar boşluk bırakır.

>>> "python".center(12)
' python '

center() metodunun ikinci bir kullanımıda

>>> "python".center(12,"*")
'***python***'

şeklindede kullanabilmemizdir.
Python Hesap Makinesi

Python Hesap Makinesi

Yazar: Unknown Tarih: 6 Aralık 2011 Salı Yorum: (0)
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!")