Bu konumda sizlere temel HTML kodlarını (ayrıntısıyla) ve tüm HTML kodlarının listesini vereceğim.
Öncelikle anlatım vs. tamamen bana aittir ve herkesin işine yarayacak bilgiler içermektedir.
Kod:
<html>
HTML'in açılış tagıdır.
Kod:
</html>
şeklinde kapatılır.Tüm HTML kodları bu iki tagın arasına yazılır.Bu iki tagın arasında PHP,ASP vb. kodlar çalışmaz. [Kodların tagları açılmadığı sürece]
Kod:
<!--...-->
HTML'de açıklama taglarıdır.
Kod:
<!-- Açıklama buraya yazılır. -->
şeklinde kullanılır.
Kod:
<!DOCTYPE>
Dosya tipini belirtmek için kullanılır.
Kod:
<head>
Dosya bilgilerini açıklayacağımız bölümdür.
Kod:
</head>
şeklinde kapatılır.
Kod:
<title>
kodu bu bölüme yazılır.
Kod:
<title>
Sayfa başlığıdır.
Kod:
<title>SAYFA BAŞLIĞINIZ</title>
şeklinde kullanılır.
Kod:
<body>
İçeriğin başlangıç kodudur.Bu koddan sonraki tüm kodlar ve yazılar sayfa içerisinde görüntülenir.
Kalın yazma kodudur.Bu tag içerisine yazılan yazılar BU ŞEKİLDE görüntülenir.
Kod:
<br />
Bir satır atlamak için kullanılır.
Kod:
<center>
Bu tagın içerisindeki kodlar ve yazılar ortalanarak yazılır.
Kod:
<div>
İçerik alanı belirlemek için kullanılır.Genellikle CSS kodlarına göre şekillendirilerek kullanılır.
Kod:
<fieldset>
Dörtgen biçiminde alan oluşturur.
Kod:
<legend>
kodu ile başlık atanır.
Kod:
<legend>
Dörtgen biçimindeki alana başlık koymak için kullanılır.Post bitlerde çok kullanılır.
Kod:
<form>
Form oluşturmak için kullanılır.
Kod:
<h1> ... <h6>
Başlık 1 ... Başlık 6 şeklinde başlıklar olarak yazmayı sağlar. 1'den 6'ya kadar vardır.Başlık 1 en büyük başlık 6 ise en küçük boyutlu başlıktır. CSS ile düzenlenebilir.
Kod:
<hr>
Şekildeki gibi yatay çizgi çekmek için kullanılır.
Meta tag sitenizi arama motorlarının ziyaretinde siteniz ile ilgili bilgileri sunması anlamına gelmektedir.kısaca siteniz ile ilgili tüm bilgiler ve belli başlı konular meta tag sayesinde arama motorlarına kolayca kayıt edilebilir ve meta tag sayesinde arama motorları sitenizi devamlı ziyaret eder.Metatag sitenizin özetidir.Binlerce dolara yaptırdığınız yada kişisel emek harcayarak yaptırdığınız sitenizi tanıtamıyor ve arama motorlarına ilave edemiyor iseniz öncelik ile bir metatag ın sitenizde olması gereklidir.Bir apartman kurmuş olabilirsiniz ama giriş kapısının anahtarı sizde yoksa o apartmana giremessiniz.Bir arama motoruda bu şekildedir.Siteniz ile ilgili bilgileri bu kodlar sayesinde alır.Bu kodlar ile ilerleyen zamanda sitenizi düzenli olarak ziyaret eder.
Kesinlikle bir meta tag olmadan sitenizi arama motorlarına kaydettirmeyiniz.
Bir metatagda neler bulunur;
1) Sitenizi tanıtan sitenizin içeriğine özgü kelimeler bulunur.
2) Hangi ülkeye ait bir site olduğunuz.
3) Arama motorlarının hangi sıklıklarla sitenizi ziyaret etmesi gerektiği(bu önemlidir yapmış olduğunuz yenilikler ve sitenize yeni eklemeler arama motorunun ilk ziyaretinden sonra yayınlanacaktır.)
4) Sitenizin ulaşacak bir mail adresinin olduğu
5) Hangi katogorilere yerleşmesi gerektiği.online satış yapan bir sitenin o alan ile ilgili bölüme yerleşmesini sağlar.
6) Bazı arama motorları sitenizin içeriğini kaydeder.Bazı arama motorları ise sadece meta taglarınızı kontrol eder ve bunu kaydeder.Düzgün çalışan bir metatag bu sebeb ile önemlidir.
7) index lenmesini istediğiniz herşeyi kaydettirebilir yada kaydettirmeyebilirsiniz.herşey sizin vereceğiniz komutlara bağlıdır.
Bunlar ilk akla gelenlerdir. Meta tag ın sayısız yararı vardır.Bu sebeb ile verimli bir kayıt almak istiyor iseniz öncelik ile size özel bir meta tag ın sitenize kurulması gerklidir.
örnek meta tag ;(basit siteler için örnek meta tag kırmızı ile yazılan alanları kendinize göre değiştiriniz.)
Yukarıdaki yazdığım bilgiler kimseye verilmemelidir. Özellikle Reg (kayıt) mailini kullanırken çok dikkatli olmalısınız. Kullanmazsanız siz kazançlı çıkarsınız. Domaininize el koymak isteyen birisi varsa Reg (kayıt) mailine erişim sağlamak isteyecektir. Reg mailinizi kullanmazsanız daha güvenli olur.
2. Adım
Saldırıyı gerçekleştirmek isteyen hacker, domainizi ele geçirmek için ” Brute – Attack ” yapabilir. Bu yüzden şifrenizin tanımsız olması gerekir. Şifrenizi oluştururken sadece harf ve sayı kullanmaktan kaçının. Örnek vermek gerekirse “” 3n0y3d!+ “” burda anlatmak istediğim gerekirse harf,sayı ve farklı karakterlerle kullanın. Örnekte Eno7 yazdık ve sonuna artı işareti koyduk.
3. Adım
Domaininizin whoisini çeken kişi, domaininizin süresi bittiğinde, sizin bilginiz olmadan, söz konusu domaini yeniden kendisi satın alabilir. Bu durumda daha dikkatli olmalısınız.
4. Adım
Yukarıda anlattığım gibi Reg mailinizin hack edilmesi sonucunda domaininizden olabileceğinizi söylemiştim. Bunun yanında;
> Gelen her maili okumayın
> Gelen maillerde bir linke tıklamanız istenirse mümkün olduğunuzca tıklamayınız. Şayet tıklarsanız size saldıran kişi cookielerinizi ele geçirebilir ve saldıran kişi cookieleri kullanarak hesabınıza erişim sağlayabilir.
5. Adım
Bu adımlar önerilerimle olacaktır.
> İyi bir AntiVirüs programını kullanınız ve bunun yanında işletim sisteminizin güvenlik duvarını etkin hale getiriniz.
> Gizli sorunuzun cevabını tanımsız hale getiriniz. Yakın arkadaşınızın bile tahmin edemeyeceği birşey yapınız. Örneğin soruda En Çok Sevdiğiniz Yemek yazıyorsa buna cevap olarak bir yemek ismi yerine mantıksız türden bir cevap yazınız.
-En Sevdiğiniz Yemek Nedir?
-Cevap: Eno7 Security
> Şifrenizi kimsenin tahmin edemeyeceği şekilde oluşturun. Uzun şifre oluşturmayın fakat güçlü şifreler oluşturun.
Son olarak bilgisayarınızın başından ayrılırken, cookieleri yani internet geçmişini temizleyiniz.
Yazar: admin - 09-07-2015, 09:58 PM - Forum: Ubuntu Linux
- Yorum Yok
BackTrack; Linux tabanlı CD'den başlatma seçenekli bir güvenlik kontrol işletim sistemi. İçerisindeki araçlar sayesinde birçok alanda (ağ, Windows) güvenlik testi yapmak mümkündür. Masaüstü ortamı olarak KDE ve GNOME kullanılmıştır. Ayrıca 64-bit(x64) ve 32-bit (x86) sürümleri de vardır. BackTrack yapımcıları 2013 yılında daha kararlı ve performanslı çalışabilen Kali Linux'u piyasaya çıkartmıştır.
Ayrica gunumuzde hack faaliyetlerinde sıkça kullanilmaktadir.
gibi bir komut verdiğinizde range(0, 10) çıktısı aldığınızı görüyorsunuz. Bu çıktı, verdiğimiz komutun 0 ile 10 arası sayıları elde etmemizi sağlayacağını belirtiyor, ama bu sayıları o anda bize göstermiyor. Daha önce verdiğimiz örneklerden de anlaşılacağı gibi, 0-10 aralığındaki sayıları görebilmek için
Kod:
range(10)
ifadesi üzerinde bir
Kod:
for
döngüsü kurmamız gerekiyor.
Kod:
range(10)
ifadesinin taşıdığı sayıları görebilmek için
Kod:
for
döngüsü kurmak tek seçenek değildir. Bu işlem için yıldızlı parametrelerden de yararlanabiliriz.
Kod:
print()
fonksiyonunu incelediğimiz derste yıldızlı parametrelerin nasıl kullanıldığını göstermiştik. Dilerseniz şimdi bu parametre tipini
Kod:
range()
fonksiyonuna nasıl uygulayabileceğimizi görelim:
>>> print(*range(10))
0 1 2 3 4 5 6 7 8 9
Kod:
print()
fonksiyonunun sep parametresi yardımıyla bu çıktıyı istediğiniz gibi düzenleyebileceğinizi biliyorsunuz. Mesela çıktıdaki sayıları birbirlerinden virgülle ayırmak için şöyle bir komut verebiliyoruz:
>>> print(*range(10), sep=", ")
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Böylece
Kod:
range()
fonksiyonunu enine boyuna incelemiş ve bu fonksiyonun ne işe yaradığını, nasıl kullanılacağını anlamamızı sağlayan örnekler vermiş olduk. Artık başka bir konuyu geçebiliriz.
pass Deyimi pass kelimesi İngilizcede ‘geçmek, pas geçmek’ gibi anlamlara gelir. Python’daki kullanımı da bu anlama oldukça yakındır. Biz bu deyimi Pyhon’da ‘görmezden gel, hiçbir şey yapma’ anlamında kullanacağız.
Dilerseniz
Kod:
pass
deyimini tarif etmeye çalışmak yerine bu deyimi bir örnek üzerinde açıklamaya çalışalım.
Hatırlarsanız yukarıda şöyle bir örnek vermiştik:
while True:
parola = input("parola belirleyin: ")
if not parola:
print("parola bölümü boş geçilemez!")
elif len(parola) in range(3, 8): #eğer parolanın uzunluğu 3 ile 8 karakter
#aralığında ise...
print("Yeni parolanız", parola)
break
else:
print("parola 8 karakterden uzun 3 karakterden kısa olmamalı")
Burada mesela eğer kullanıcı parolayı boş bırakırsa ‘parola bölümü boş geçilemez!’ uyarısı gösteriyoruz. Şimdi o
Kod:
if
bloğunu şöyle yazdığımızı düşünün:
while True:
parola = input("parola belirleyin: ")
if not parola:
pass
elif len(parola) in range(3, 8): #eğer parolanın uzunluğu 3 ile 8 karakter
#aralığında ise...
print("Yeni parolanız", parola)
break
else:
print("parola 8 karakterden uzun 3 karakterden kısa olmamalı")
Burada, eğer kullanıcı parolayı boş bırakırsa programımız hiçbir şey yapmadan yoluna devam edecektir. Yani burada
Kod:
pass
deyimi yardımıyla programımıza şu emri vermiş oluyoruz:
Alıntı:Eğer kullanıcı parolayı boş geçerse görmezden gel. Hiçbir şey yapmadan yoluna devam et!
Başka bir örnek daha verelim:
while True:
sayı = int(input("Bir sayı girin: "))
if sayı == 0:
break
elif sayı < 0:
pass
else:
print(sayı)
Burada eğer kullanıcı 0 sayısını girerse programımız sona erer (
Kod:
break
deyimini biraz sonra inceleyeceğiz). Eğer kullanıcı 0‘dan küçük bir sayı girerse, yani kullanıcının girdiği sayı eksi değerli ise,
Kod:
pass
deyimininin etkisiyle programımız hiçbir şey yapmadan yoluna devam eder. Bu koşulların dışındaki durumlarda ise programımız kullanıcının girdiği sayıları ekrana yazdıracaktır.
Yukarıda anlatılan durumların dışında,
Kod:
pass
deyimini kodlarınız henüz taslak aşamasında olduğu zaman da kullanabilirsiniz. Örneğin, diyelim ki bir kod yazıyorsunuz. Programın gidişatına göre, bir noktada yapmanız gereken bir işlem var, ama henüz ne yapacağınıza karar vermediniz. Böyle bir durumda
Kod:
pass
deyiminden yararlanabilirsiniz. Mesela birtakım
Kod:
if
deyimleri yazmayı düşünüyor olun:
if .....:
böyle yap
elif .....:
şöyle yap
else:
pass
Burada henüz
Kod:
else
bloğunda ne yapılacağına karar vermemiş olduğunuz için, oraya bir
Kod:
pass
koyarak durumu şimdilik geçiştiriyorsunuz. Program son haline gelene kadar oraya bir şeyler yazmış olacaksınız.
Sözün özü,
Kod:
pass
deyimlerini, herhangi bir işlem yapılmasının gerekli olmadığı durumlar için kullanıyoruz. İlerde işe yarar programlar yazdığınızda, bu
Kod:
pass
deyiminin göründüğünden daha faydalı bir araç olduğunu anlayacaksınız.
break Deyimi
Python’da
Kod:
break
özel bir deyimdir. Bu deyim yardımıyla, devam eden bir süreci kesintiye uğratabiliriz. Bu deyimin kullanıldığı basit bir örnek verelim:
>>> while True:
... parola = input("Lütfen bir parola belirleyiniz:")
... if len(parola) < 5:
... print("Parola 5 karakterden az olmamalı!")
... else:
... print("Parolanız belirlendi!")
... break
Burada, eğer kullanıcının girdiği parolanın uzunluğu 5 karakterden azsa, Parola 5 karakterden az olmamalı! uyarısı gösterilecektir. Eğer kullanıcı 5 karakterden uzun bir parola belirlemişse, kendisine ‘Parolanız belirlendi!’ mesajını gösterip,
Kod:
break
deyimi yardımıyla programdan çıkıyoruz.
Gördüğünüz gibi,
Kod:
break
ifadesinin temel görevi bir döngüyü sona erdirmek. Buradan anlayacağımız gibi,
Kod:
break
ifadesinin her zaman bir döngü içinde yer alması gerekiyor. Aksi halde Python bize şöyle bir hata verecektir:
SyntaxError: 'break' outside loop
Yani:
SözDizimiHatası: ``break`` döngü dışında ..
continue Deyimi
Kod:
continue
ilginç bir deyimdir. İsterseniz
Kod:
continue
deyimini anlatmaya çalışmak yerine bununla ilgili bir örnek verelim:
while True:
s = input("Bir sayı girin: ")
if s == "iptal":
break
if len(s) <= 3:
continue
print("En fazla üç haneli bir sayı girebilirsiniz.")
Burada eğer kullanıcı klavyede iptal yazarsa programdan çıkılacaktır. Bunu;
if s == "iptal":
break
satırıyla sağlamayı başardık.
Eğer kullanıcı tarafından girilen sayı üç haneli veya daha az haneli bir sayı ise,
Kod:
continue
ifadesinin etkisiyle:
>>> print("En fazla üç haneli bir sayı girebilirsiniz.")
satırı es geçilecek ve döngünün en başına gidilecektir.
Eğer kullanıcının girdiği sayıdaki hane üçten fazlaysa ekrana:
En fazla üç haneli bir sayı girebilirsiniz.
cümlesi yazdırılacaktır.
Dolayısıyla buradan anladığımıza göre,
Kod:
continue
deyiminin görevi kendisinden sonra gelen her şeyin es geçilip döngünün başına dönülmesini sağlamaktır. Bu bilgiye göre, yukarıdaki programda eğer kullanıcı, uzunluğu üç karakterden az bir sayı girerse
Kod:
continue
deyiminin etkisiyle programımız döngünün en başına geri gidiyor. Ama eğer kullanıcı, uzunluğu üç karakterden fazla bir sayı girerse, ekrana ‘En fazla üç haneli bir sayı girebilirsiniz,’ cümlesinin yazdırıldığını görüyoruz.
Örnek Uygulamalar
Python programlama dilinde döngülerin neye benzediğini öğrendik. Bu bölünde ayrıca döngülerle birlikte kullanabileceğimiz başka araçları da tanıdık. Şimdi dilerseniz bu öğrendiklerimizi pekiştirmek için birkaç ufak çalışma yapalım.
Karakter Dizilerinin İçeriğini Karşılaştırma
Diyelim ki elinizde şöyle iki farklı metin var:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
Siz burada, ilk_metin adlı değişken içinde bulunan, ama ikinci_metin adlı değişken içinde bulunmayan öğeleri ayıklamak istiyorsunuz. Yani bu iki metnin içeriğini karşılaştırıp, farklı öğeleri bulmayı amaçlıyorsunuz. Bu işlem için, bu bölümde öğrendiğimiz döngülerden ve daha önce öğrendiğimiz başka araçlardan yararlanabilirsiniz. Şimdi dikkatlice bakın:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
for s in ilk_metin:
if not s in ikinci_metin:
print(s)
Bu kodları bir dosyaya kaydedip çalıştırdığımızda şu çıktıyı alıyoruz:
a
a
ş
ş
a
Demek ki ilk_metin adlı değişkende olup da ikinci_metin adlı değişkende olmayan öğeler bunlarmış...
Bu kodlarda anlayamayacağınız hiçbir şey yok. Ama dilerseniz biz yine de bu kodları tek tek inceleyelim.
İlk olarak değişkenlerimizi tanımladık:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
Amacımız ilk_metin‘de olan, ama ikinci_metin‘de olmayan öğeleri görmek. Bunun için ilk_metin‘deki öğeleri tek tek ikinci_metin‘deki öğelerle karşılaştırmamız gerekiyor. Tahmin edebileceğiniz gibi, bir metnin bütün öğelerine tek tek bakabilmenin en iyi yolu
Kod:
for
döngülerini kullanmaktır. O halde döngümüzü yazalım:
for s in ilk_metin: #ilk_metin'deki, 's' adını verdiğimiz bütün öğeler için
if not s in ikinci_metin: #eğer 's' adlı bu öğe ikinci_metin'de yoksa
print(s) #'s' adlı öğeyi ekrana bas
Gördüğünüz gibi, döngüleri (
Kod:
for
), bool işleçlerini (not) ve aitlik işleçlerini (in) kullanarak, istediğimiz şeyi rahatlıkla yapabiliyoruz. Burada kullandığımız
Kod:
if
deyimi, bir önceki satırda
Kod:
for
döngüsü ile üzerinden geçtiğimiz öğeleri süzmemizi sağlıyor. Burada temel olarak şu üç işlemi yapıyoruz:
ilk_metin içindeki bütün öğelerin üzerinden geçiyoruz,
Bu öğeleri belli bir ölçüte göre süzüyoruz,
Ölçüte uyan öğeleri ekrana basıyoruz.
Elbette yukarıda yaptığımız işlemin tersini yapmak da mümkündür. Biz yukarıdaki kodlarda ilk_metin‘de olan, ama ikinci_metin‘de olmayan öğeleri süzdük. Eğer istersek ikinci_metin‘de olan, ama ilk_metin‘de olmayan öğeleri de süzebiliriz. Mantığımız yine aynı:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
for s in ikinci_metin: #ikinci_metin'deki, 's' adını verdiğimiz bütün öğeler için
if not s in ilk_metin: #eğer 's' adlı bu öğe ilk_metin'de yoksa
print(s) #'s' adlı öğeyi ekrana bas
Bu da bize şu çıktıyı veriyor:
u
ı
o
r
y
e
u
ı
r
u
e
e
e
u
Gördüğünüz gibi, yaptığımız tek şey, ilk_metin ile ikinci_metin‘in yerlerini değiştirmek oldu. Kullandığımız mantık ise değişmedi.
Bu arada, yukarıdaki çıktıda bizi rahatsız eden bir durum var. Çıktıda bazı harfler birbirini tekrar ediyor. Aslında temel olarak sadece şu harfler var:
u
ı
o
r
y
e
Ama metin içinde bazı harfler birden fazla sayıda geçtiği için, doğal olarak çıktıda da bu harfler birden fazla sayıda görünüyor. Ama tabii ki, eğer biz istersek farklı olan her harften yalnızca bir tanesini çıktıda görmeyi de tercih edebiliriz. Bunun için şöyle bir kod yazabiliriz:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
fark = ""
for s in ikinci_metin:
if not s in ilk_metin:
if not s in fark:
fark += s
print(fark)
Burada da anlayamayacağımız hiçbir şey yok. Bu kodlardaki bütün parçaları tanıyoruz. Herzamanki gibi öncelikle değişkenlerimizi tanımladık:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
Daha sonra fark adlı boş bir karakter dizisi tanımlıyoruz. Metinler içindeki farklı karakter dizilerini fark adlı bu karakter dizisi içinde depolayacağız.
Ardından da
Kod:
for
döngümüzü yazıyoruz:
for s in ikinci_metin: # ikinci_metin'de 's' dediğimiz bütün öğeler için
if not s in ilk_metin: # eğer 's' ilk_metin'de yoksa
if not s in fark: # eğer 's' fark'ta da yoksa
fark += s # bu öğeyi fark değişkenine ekle
print(fark) # fark değişkenini ekrana bas
Uyguladığımız mantığın ne kadar basit olduğunu görüyorsunuz. Bu kodlarda basitçe şu işlemleri yapıyoruz:
ikinci_metin değişkeni içindeki bütün öğelerin üzerinden tek tek geç,
Eğer bu değişkendeki herhangi bir öğe ilk_metin‘de ve fark‘ta yoksa o öğeyi fark‘a ekle.
Son olarak da fark‘ı ekrana bas.
Bu kodlarda dikkatimizi çeken ve üzerinde durmamız gereken bazı noktalar var. Burada özellikle fark değişkenine öğe ekleme işlemini nasıl yaptığımıza dikkat edin.
Python programlama dilinde önceden oluşturduğumuz bir karakter dizisini başka bir karakter dizisi ile birleştirdiğimizde bu işlem ilk oluşturduğumuz karakter dizisini etkilemez. Yani:
>>> a = 'istihza'
>>> a + '.com'
'istihza.com'
Burada sanki a adlı özgün karakter dizisini değiştirmişiz ve ‘istihza.com’ değerini elde etmişiz gibi görünüyor. Ama aslında a‘nın durumunda hiçbir değişiklik yok:
>>> a
'istihza'
Gördüğünüz gibi, a değişkeninin değeri hâlâ ‘istihza’. Bu durumun nedeni, birleştirme işlemlerinin bir değiştirme işlemi olmamasıdır. Yani mesela iki karakter dizisini birleştirdiğinizde birleşen karakter dizileri üzerinde herhangi bir değişiklik olmaz. Bu durumda yapabileceğimiz tek şey, karakter dizisine eklemek istediğimiz öğeyi de içeren yeni bir karakter dizisi oluşturmaktır. Yani:
>>> a = 'istihza'
>>> a = a + '.com'
>>> print(a)
istihza.com
Burada sanki değeri ‘istihza’ olan a adlı bir değişkene ‘.com’ değerini eklemişiz gibi görünüyor, ama aslında biz burada a değişkenini yok edip, ‘istihza.com’ değerini içeren, a adlı başka bir değişken tanımladık. Bu durumu nasıl teyit edeceğinizi biliyorsunuz:
>>> a = 'istihza'
>>> id(a)
15063200
>>> a = a + '.com'
>>> id(a)
15067960
Burada
Kod:
id()
fonksiyonunu kullanarak karakter dizilerinin kimliklerini sorguladık. Gördüğünüz gibi, isimleri aynı da olsa, aslında ortada iki farklı a değişkeni var. Kimlik numaralarının farklı olmasından anladığımıza göre, ilk başta tanımladığımız a değişkeni ile
Kod:
a = a + '.com'
satırıyla oluşturduğumuz a değişkeni birbirinden farklı.
Bu arada, eğer istersek yukarıdaki değer atama işlemini, önceki bölümlerde öğrendiğimiz değer atama işleçleri yardımıyla kısaltabileceğimizi de biliyorsunuz:
>>> a += '.com'
İşte ilk_metin ile ikinci_metin değişkenleri arasındaki farklı harfleri yalnızca birer kez yazdırmak için kullandığımız kodlarda da yukarıdaki işlemi yaptık:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
fark = ''
for s in ikinci_metin:
if not s in ilk_metin:
if not s in fark:
fark += s
print(fark)
Gördüğünüz gibi, önce boş bir fark değişkeni oluşturduk. Daha sonra bu değişkene
Kod:
for
döngüsü içinde yeni değerler atayabilmek (daha doğrusu atarmış gibi yapmak) için
Kod:
fark += s
gibi bir kod kullandık. Böylece for döngüsünün her dönüşünde s adını verdiğimiz herbir öğeyi tek tek fark değişkenine yolladık. Böylece program sonunda elimizde, farklı öğeleri yalnızca birer kez içeren fark adlı bir değişken olmuş oldu. Dediğimiz gibi, ilk başta tanımladığımız boş fark değişkeni ile, program sonunda farklı değerleri içeren fark değişkeni aslında aynı değil. Yani biz ilk fark değişkenine döngünün her dönüşünde yeni bir öğe eklemek yerine, döngünün her dönüşünde yeni bir fark değişkeni oluşturmuş oluyoruz. Ama programın sonunda sanki fark değişkenine her defasında yeni bir değer atamışız gibi görünüyor ve bu da bizim işimizi görmemize yetiyor...
Programın başındaki ve sonundaki fark değişkenlerinin aslında birbirinden farklı olduğunu teyit etmek için şu kodları kullanabilirsiniz:
ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh"
ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf"
fark = ""
print("fark'ın ilk tanımlandığı zamanki kimlik numarası: ", id(fark))
for s in ikinci_metin:
if not s in ilk_metin:
if not s in fark:
fark += s
print("fark'ın program sonundaki kimlik numarası: ", id(fark))
Gördüğünüz gibi, gerçekten de ortada iki farklı fark değişkeni var. Bu durumu
Kod:
id()
fonksiyonu yardımıyla doğrulayabiliyoruz.
Peki bu bilginin bize ne faydası var?
Şimdilik şu kadarını söyleyelim: Eğer o anda muhatap olduğunuz bir veri tipinin mizacını, huyunu-suyunu bilmezseniz yazdığınız programlarda çok kötü sürprizlerle karşılaşabilirsiniz. Birkaç bölüm sonra başka veri tiplerini de öğrendikten sonra bu durumu daha ayrıntılı bir şekilde inceleyeceğiz.
Bu arada, tahmin edebileceğiniz gibi yukarıdaki
Kod:
for
döngüsünü şöyle de yazabilirdik:
for s in ikinci_metin:
if not s in ilk_metin and not s in fark:
fark += s
Burada iki farklı
Kod:
if
deyimini iki farklı satırda yazmak yerine, bu deyimleri and işleci ile birbirine bağladık.
Bu örnek ile ilgili söyleyeceklerimiz şimdilik bu kadar. Gelin biz şimdi isterseniz bilgilerimizi pekiştirmek için başka bir örnek daha yapalım.
Dosyaların İçeriğini Karşılaştırma
Bir önceki örnekte karakter dizilerinin içeriğini nasıl karşılaştırabileceğimizi gösteren bir örnek vermiştik. Şimdi de, gerçek hayatta karşınıza çıkması daha olası bir durum olması bakımından, dosyaların içeriğini nasıl karşılaştıracağımıza dair bir örnek verelim.
Esasında karakter dizilerinin içeriğini birbirleriyle nasıl karşılaştırıyorsak, dosyaların içeriğini de benzer şekilde karşılaştırabiliriz. Mesela içeriği şu olan isimler1.txt adlı bir dosyamız olduğunu varsayalım:
Ahmet
Mehmet
Sevgi
Sinan
Deniz
Ege
Efe
Ferhat
Fırat
Zeynep
Hazan
Mahmut
Celal
Cemal
Özhan
Özkan
Yine içeriği şu olan bir de isimler2.txt adlı başka bir dosya daha olduğunu düşünelim:
Gürsel
Mehmet
Sevgi
Sami
Deniz
Ege
Efe
Ferhat
Fırat
Tülay
Derya
Hazan
Mahmut
Tezcan
Cemal
Özhan
Özkan
Özcan
Dilek
Amacımız bu iki dosyanın içeriğini karşılaştırıp, farklı öğeleri ortaya sermek. Dediğimiz gibi, bir önceki örnekte izlediğimiz yolu burada da takip edebiliriz. Dikkatlice bakın:
d1 = open("isimler1.txt") # dosyayı açıyoruz
d1_satırlar = d1.readlines() # satırları okuyoruz
for i in d2_satırlar:
if not i in d1_satırlar:
print(i)
d1.close()
d2.close()
Gerçekten de mantığın bir önceki örnekle tamamen aynı olduğunu görüyorsunuz. Biz henüz Python’da dosyaların nasıl işleneceğini öğrenmedik, ama daha önce gördüğümüz
Kod:
open()
fonksiyonu yardımıyla en azından dosyaları açabilecek kadar biliyoruz dosya işlemlerinin nasıl yürütüleceğini...
Burada farklı olarak
Kod:
readlines()
adlı bir metot görüyoruz. Biz burada bu metodun ayrıntılarına inmeyeceğiz, ama şimdilik dosya içeriğinin satırlar halinde okunmasını sağladığını bilelim yeter.
Bu arada, eğer çıktıda Türkçe karakterleri düzgün görüntüleyemiyorsanız
Kod:
open()
fonksiyonunun encoding adlı bir parametresi vasıtasıyla içeriği UTF-8 olarak kodlayabilirsiniz:
d1 = open("isimler1.txt", encoding="utf-8") # dosyayı açıyoruz
d1_satırlar = d1.readlines() # satırları okuyoruz
for i in d2_satırlar:
if not i in d1_satırlar:
print(i)
d1.close()
d2.close()
Bu şekilde Türkçe karakterleri düzgün bir şekilde görüntüleyebiliyor olmanız lazım. Eğer Windows’ta Türkçe karakterleri hala düzgün görüntüleyemiyorsanız encoding parametresinde ‘utf-8’ yerine ‘cp1254’ adlı dil kodlamasını kullanmayı deneyebilirsiniz:
encoding = "cp1254"
Yukarıdaki örneklerde bir içerik karşılaştırması yapıp, farklı öğeleri ayıkladık. Aynı şekilde benzer öğeleri ayıklamak da mümkündür. Bu işlemin nasıl yapılacağını az çok tahmin ettiğinizi zannediyorum:
d1 = open("isimler1.txt")
d1_satırlar = d1.readlines()
for i in d2_satırlar:
if i in d1_satırlar:
print(i)
d1.close()
d2.close()
Burada bir öncekinden farklı olarak
Kod:
if not i in d2_satırlar
kodu yerine, doğal olarak,
Kod:
if i in d2_satırlar
kodunu kullandığımıza dikkat edin.
Dosyalar üzerinde yaptığımız işlemleri tamamladıktan sonra
Kod:
close()
metodu ile bunları kapatmayı unutmuyoruz:
d1.close()
d2.close()
Karakter Dizisindeki Karakterleri Sayma
Yukarıdaki örneklerde içerik karşılaştırmaya ilişkin birkaç örnek verdik. Şimdi yine bilgilerimizi pekiştirmek için başka bir konuya ilişkin örnekler verelim.
Mesela elimizde şöyle bir metin olduğunu varsayalım:
Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı
tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,
isminin Python olmasına aldanarak, bu programlama dilinin, adını piton
yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama
dilinin adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini,
The Monty Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying
Circus adlı gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar
gerçek böyle olsa da, Python programlama dilinin pek çok yerde bir yılan
figürü ile temsil edilmesi neredeyse bir gelenek halini almıştır.
Yapmamız gereken bir istatistik çalışması gereğince bu metinde her harfin kaç kez geçtiğini hesaplamanız gerekiyor.
Bunun için şöyle bir program yazabiliriz:
metin = """Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı
tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,
isminin Python olmasına aldanarak, bu programlama dilinin, adını piton
yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin
adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty
Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı
gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa
da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil
edilmesi neredeyse bir gelenek halini almıştır."""
harf = input("Sorgulamak istediğiniz harf: ")
sayı = ''
for s in metin:
if harf == s:
sayı += harf
print(len(sayı))
Burada öncelikle metnimizi bir değişken olarak tanımladık. Ardından da kullanıcıya hangi harfi sorgulamak istediğini sorduk.
Bu kodlarda tanımladığımız sayı adlı değişken, sorgulanan harfi, metinde geçtiği sayıda içinde barındıracaktır. Yani mesela metin 5 tane a harfi varsa sayı değişkeninin değeri aaaaa olacaktır.
Sonraki satırlarda
Kod:
for
döngümüzü tanımlıyoruz:
for s in metin: # metin içinde 's' adını verdiğimiz herbir öğe için
if harf == s: # eğer kullanıcıdan gelen harf 's' ile aynıysa
sayı += harf # kullanıcıdan gelen bu harfi sayı değişkenine yolla
Dediğimiz gibi, sayı değişkeni, sorgulanan harfi, metinde geçtiği sayıda barındırıyor. Dolayısıyla bir harfin metinde kaç kez geçtiğini bulmak için sayı değişkeninin uzunluğunu yazdırmamız yeterli olacaktır:
print(len(sayı))
Dilerseniz yukarıdaki programı yazmak için daha farklı bir mantık da kullanabilirsiniz. Dikkatlice bakın:
metin = """Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı
tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,
isminin Python olmasına aldanarak, bu programlama dilinin, adını piton
yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin
adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty
Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı
gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa
da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil
edilmesi neredeyse bir gelenek halini almıştır."""
harf = input("Sorgulamak istediğiniz harf: ")
sayı = 0
for s in metin:
if harf == s:
sayı += 1
print(sayı)
Burada sayı değişkeninin ilk değeri 0 olarak belirledik. Döngü içinde de, sorgulanan harfin metin içinde her geçişinde sayı değişkeninin değerini 1 sayı artırdık. Dolayısıyla sorgulanan harfin metinde kaç kez geçtiğini bulmak için sayı değişkeninin son değerini yazdırmamız yeterli oldu.
Dosya içindeki Karakterleri Sayma
Dilerseniz bir önceki örnekte kullandığımız metnin program içinde bir değişken değil de, mesela bir dosyadan okunan bir metin olduğunu varsayalım şimdi:
hakkında = open("hakkında.txt", encoding="utf-8")
harf = input("Sorgulamak istediğiniz harf: ")
sayı = 0
for karakter_dizisi in hakkında:
for karakter in karakter_dizisi:
if harf == karakter:
sayı += 1
print(sayı)
hakkında.close()
Burada yaptığımız ilk iş elbette dosyamızı açmak oldu:
hakkında = open("a1.txt", encoding="utf-8")
Bu komutla, hakkında.txt adlı dosyayı UTF-8 kodlaması ile açtık. Daha sonra kullanıcıya, sorgulamak istediği harfi soruyoruz:
harf = input("Sorgulamak istediğiniz harf: ")
Ardından da sorgulanan harfin dosyada kaç kez geçtiği bilgisini tutacak olan sayı adlı bir değişken tanımlıyoruz:
sayı = 0
Sıra geldi
Kod:
for
döngümüzü tanımlamaya:
for karakter_dizisi in hakkında:
for karakter in karakter_dizisi:
if harf == karakter:
sayı += 1
Bu döngüyü anlamakta bir miktar zorlanmış olabilirsiniz. Her zaman söylediğimiz gibi, Python’da bir kod parçasını anlamanın en iyi yöntemi, gerekli yerlere
Kod:
print()
fonksiyonları yerleştirerek, programın verdiği çıktıları incelemektir:
for karakter_dizisi in hakkında:
print(karakter_dizisi)
#for karakter in karakter_dizisi:
# if harf == karakter:
# sayı += 1
Gördüğünüz gibi, ilk
Kod:
for
döngüsünün hemen sonrasına bir
Kod:
print()
fonksiyonu yerleştirerek bu döngünün verdiği çıktıları inceliyoruz. Bu arada, amacımıza hizmet etmeyen satırları da yorum içine alarak etkisizleştirdiğimize dikkat edin.
Çıktıya baktığımız zaman, şöyle bir durumla karşılaşıyoruz:
Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı
tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,
isminin Python olmasına aldanarak, bu programlama dilinin, adını piton
yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin
adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty
Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı
gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa
da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil
edilmesi neredeyse bir gelenek halini almıştır.
Burada herbir satır ayrı bir karakter dizisidir. Eğer herbir satırın ayrı bir karakter dizisi olduğunu daha net bir şekilde görmek istiyorsanız
Kod:
repr()
adlı özel bir fonksiyondan yararlanabilirsiniz:
for karakter_dizisi in hakkında:
print(repr(karakter_dizisi))
#for karakter in karakter_dizisi:
# if harf == karakter:
# sayı += 1
Bu kodlar bu kez şöyle bir çıktı verir:
'Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı\n'
'tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,\n'
'isminin Python olmasına aldanarak, bu programlama dilinin, adını piton\n'
'yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin\n'
'adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty\n'
'Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı\n'
'gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa\n'
'da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil\n'
'edilmesi neredeyse bir gelenek halini almıştır.'
Bu çıktıya çok dikkatlice bakın.
Kod:
repr()
fonksiyonu sayesinde Python’ın alttan alta neler çevirdiğini bariz bir biçimde görüyoruz. Karakter dizisinin başlangıç ve bitişini gösteren tırnak işaretleri ve \n kaçış dizilerinin görünür vaziyette olması sayesinde herbir satırın ayrı bir karakter dizisi olduğunu daha net bir şekilde görebiliyoruz.
Biz yazdığımız kodlarda, kullanıcıdan bir harf girmesini istiyoruz. Kullandığımız algoritma gereğince bu harfi metindeki karakter dizileri içinde geçen herbir karakterle tek tek karşılaştırmamız gerekiyor.
Kod:
input()
metodu aracılığıyla kullanıcıdan tek bir karakter alıyoruz. Kullandığımız
Kod:
for
döngüsü ise bize bir karakter yerine her satırda bir karakter dizisi veriyor. Dolayısıyla mesela kullanıcı ‘a’ harfini sorgulamışsa, ilk
Kod:
for
döngüsü bu harfin karşısına ‘Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcın’ adlı karakter dizisini çıkaracaktır. Dolayısıyla bizim bir seviye daha alta inerek, ilk
Kod:
for
döngüsünden elde edilen değişken üzerinde başka bir
Kod:
for
döngüsü daha kurmamız gerekiyor. Bu yüzden şöyle bir kod yazıyoruz:
for karakter_dizisi in hakkında:
for karakter in karakter_dizisi:
...
Böylece iç içe iki
Kod:
for
döngüsü oluşturmuş oluyoruz. İsterseniz bu anlattığımız şeyleri daha net görmek için yine
Kod:
print()
fonksiyonundan yararlanabilirsiniz:
hakkında = open("hakkında.txt", encoding="utf-8")
harf = input("Sorgulamak istediğiniz harf: ")
sayı = 0
for karakter_dizisi in hakkında:
for karakter in karakter_dizisi:
print(karakter)
# if harf == karakter:
# sayı += 1
#print(sayı)
karakter değişkenin değerini ekrana yazdırarak Python’ın alttan alta neler çevirdiğini daha net görebiliyoruz.
Kodların geri kalanında ise, kullanıcının sorguladığı harfin,
Kod:
for
döngüsü ile üzerinden geçtiğimiz karakter_dizisi adlı değişken içindeki karakterlerle eşleşip eşleşmediğini denetliyoruz. Eğer eşleşiyorsa, her eşleşmede sayı değişkeninin derini 1 sayı artırıyoruz. Böylece en elimizde sorgulanan harfin metin içinde kaç kez geçtiği bilgisi olmuş oluyor.
Son olarak da, ilk başta açtığımız dosyayı kapatıyoruz:
hakkında.close()