Alfanümerik Ne Demek?
Geçen gün istihza.com‘un ziyaretçi istatistiklerini incelerken bir şey dikkatimi çekti. İstisnasız her gün “alfanümerik nedir?”, “alfanümerik”, “alfanümerik ne demek?”, “alfanümerik karakter nedir?” gibi Google sorgulamaları yoluyla insanlar istihza.com’a ulaşıyor!…
Şu ana kadar insanların, Google’de yaptıkları aramaların sonuçları aracılığıyla istihza.com’a ulaşmasını sağlayan ilk 5 sorgu dizisi şöyle:
1. istihza
2. python
3. alfanümerik karakter nedir
4. alfanümerik nedir
5. alfanümerik karakter
“alfanümerik” kelimesini içeren arama sorguları daha alt sıralarda başka şekillerde de yer alıyor…
“alfanümerik” konusunun bu kadar merak edildiğini görünce bununla ilgili bir açıklama yapayım dedim…
Efenim, karakterler üçe ayrılır:
1. alfabetik karakterler
2. nümerik karakterler
3. alfanümerik karakterler
“alfabetik” karakterler, adından da az çok anlaşılacağı gibi, alfabedeki harflerin ta kendisidir. Mesela “a”, “b”, “e”, “j”, vb…
Sayılar ve “_?=*” gibi simgeler alfabetik değildir.
Bir karakterin alfabetik olup olmadığını anlamak için Python’da isalpha() adlı fonksiyondan yararlanabilirsiniz:
>>> "a".isalpha() True
Demek ki “a”, alfabetik bir karakter dizisi imiş… Bir de şuna bakalım:
>>> "1".isalpha() False
Demek ki “1″ alfabetik bir karakter değilmiş…
Şöyle bir örnek vererek durumu biraz daha netleştirelim:
>>> for i in "abc234_?=*jkl": ... if i.isalpha(): ... print "%s alfabetik bir karakter dizisidir"%i ... else: ... print "%s alfabetik bir karakter dizisi değildir"%i ... a alfabetik bir karakter dizisidir. b alfabetik bir karakter dizisidir. c alfabetik bir karakter dizisidir. 2 alfabetik bir karakter dizisi değildir. 3 alfabetik bir karakter dizisi değildir. 4 alfabetik bir karakter dizisi değildir. _ alfabetik bir karakter dizisi değildir. ? alfabetik bir karakter dizisi değildir. = alfabetik bir karakter dizisi değildir. * alfabetik bir karakter dizisi değildir. j alfabetik bir karakter dizisidir. k alfabetik bir karakter dizisidir. l alfabetik bir karakter dizisidir.
Ancak burada dikkat edilmesi gereken bir nokta var. Mesela şu örneğe bir bakalım:
>>> "ğ".isalpha() False
Gördüğünüz gibi, isalpha() fonksiyonu Türkçe karakterleri doğru değerlendiremiyor… Bu sorunun üstesinden gelmek için Türkçe karakter dizilerini unicode olarak tanımlamanız gerekir:
>>> u"ğ".isalpha() True
Sadece tek bir karakterin değil, birden fazla karakterden oluşan dizilerin alfabetik olup olmadığını da denetleyebiliriz. Örneğin:
>>> "istihza".isalpha() True
Burada “istihza” karakter dizisi tamamen alfabetik karakterlerden oluştuğu için, “istihza” kelimesi alfabetiktir diyoruz…
Bir de şuna bakalım:
>>> "istihza.com".isalpha() False
“istihza.com” karakter dizisi içinde alfabetik olmayan bir karakter bulunduğu için (“.” karakteri), bu karakter dizisi alfabetik değildir. Dolayısıyla bir karakter dizisinin alfabetik olabilmesi için, o karakter dizisini oluşturan bütün karakterlerin alfabetik olması gerekir. Tek bir alfabetik olmayan karakter dizisi dahi işi bozar…
Bu arada, içinde Türkçe karakterler geçen bir karakter dizisinin alfabetik olup olmadığını denetlerken bu karakter dizisini unicode olarak tanımlamayı unutmuyoruz:
>>> "ışık".isalpha() False
Doğrusu şöyle olacak:
>>> u"ışık".isalpha() True
Gelelim “nümerik” karakterlere…
“nümerik” karakterler “alfabetik” karakterlerin tersidir. Buna göre, sayıları temsil eden karakterlere “nümerik” adı verilir. Örneğin 1, 2, 5, 10, 20 sayıları “nümerik” karakterlerdir.
Bir karakterin nümerik olup olmadığını isdigit() fonksiyonunu kullanarak denetleyebiliriz:
>>> "1".isdigit True
Ama:
>>> "a".isdigit() False
Alfabetik karakter dizilerindeki “ya hep ya hiç” kuralı nümerik karakter dizileri için de geçerlidir. Yani bir karakter dizisinin nümerik olabilmesi için, o karakter dizisini oluşturan bütün karakterlerin nümerik olması gerekir. Tek bir nümerik olmayan karakter dahi, o karakter dizisinin nümerik olmamasına yol açacaktır…
Sıra geldi asıl konumuza. Yani “alfanümerik” karakterlere…
“alfanümerik” karakterler, yukarıda anlattığımız “alfabetik” ve “nümerik” karakterlerinin birleşimidir. Yani içinde hem alfabetik hem de nümerik karakterler barındıran dizilere “alfanümerik” karakter dizileri adı verilir. Tabii sadece alfabetik ve sadece nümerik karakterler barındıran diziler de aynı zamanda birer alfanümerik karakter dizisidir…
Tek bir karakter için konuşmak gerekirse, alfabetik veya nümerik olan karakterlere “alfanümerik” adı verilir.
Bir karakterin alfanümerik olup olmadığını Python’daki “isalnum()” adlı fonksiyon yardımıyla denetleyebiliriz.
Dilerseniz bu açıklamaları birkaç örnekle taçlandıralım:
>>> "a".isalnum() True
Demek ki “a”, alfanümerik bir karaktermiş.
>>> "1".isalnum() True
Demek ki “1″ de alfanümerik bir karaktermiş…
Buradan şu sonuçları çıkarabiliriz:
- Bütün alfabetik karakterler aynı zamanda birer alfanümerik karakterdir. – Bütün nümerik karakterler de aynı zamanda birer alfanümerik karakterdir.
- Bütün alfanümerik karakterler aynı zamanda birer alfabetik karakter OLMAYABİLİR.
- Bütün alfanümerik karakterler aynı zamanda birer nümerik karakter de OLMAYABİLİR.
Birden fazla karakterden oluşan dizilerin durumuna da bakalım isterseniz:
>>> "abc124".isalnum() True >>> "istihza.com".isalnum() False
Gördüğünüz gibi, “istihza.com” karakter dizisi içindeki “.” karakterinden ötürü karakter dizimiz alfanümerik olma özelliği taşıyamıyor. Bir karakter dizisinin alfanümerik olabilmesi için, barındırdığı bütün karakterlerin alfanümerik olması gerekir…
Son Yorumlar