ana sayfa > Python > Alfanümerik Ne Demek?

Alfanümerik Ne Demek?

Çarşamba, 04 Kas 2009

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…

admin Python , ,

  1. İsmail
    Cuma, 06 Kas 2009 zamanında 16:04 | #1

    Bide şu python decorator konusunda bi yazı yazıp bizi aydınlatsan ne güzel olur be kardeşim.

  2. aycan
    Cumartesi, 07 Kas 2009 zamanında 11:07 | #2

    benden baska adresini bildiği bir siteyi google aracılığı ile giren varmı diye merak ederdim. Demekki birçok kişi kullanıyormuş. http://www.istihza.com yazmak zor geliyor neyapayım. Ctrl+K istihza enter bence en kolay yol.

  3. acilll
    Pazartesi, 04 Oca 2010 zamanında 18:41 | #3

    peki ben kullanıcını girdii string terimi incelemek istersem nolcak?yani
    kullanıcann girdii deeri string tipteki firstname e aldm firstname.isalpha() diince olmuo yardımcı olursan sevinirm …

  4. Pazartesi, 04 Oca 2010 zamanında 19:03 | #4

    Şu şekilde olmuyor mu?

    #-*- coding: utf-8 -*-
    firstname = raw_input(“adınız: “)
    print unicode(firstname, “utf-8″).isalpha()

  5. acilll
    Çarşamba, 06 Oca 2010 zamanında 23:04 | #5

    ben string yerine char tipte dizi yaparak istediimi yaptım ama simdi baska bi sorunum war … space e basıldıında bunu alpha olarak tanımlıabilirmyz??// ” “.isalpha() yaptım ama olmaddı…???

  6. Çarşamba, 06 Oca 2010 zamanında 23:31 | #6

    C’de “char” diye bir veri tipi var, ama Python’da böyle bir veri tipi hatırlamıyorum… Python’da tek bayt içeren karakterlere de “string” (karakter dizisi) deniyor. Neyse.. Boşluk karakteri alfanümerik bir karakter olmadığı için ” “.isalpha() gibi bir kod doğal olarak “False” çıktısı verecektir. Eğer “alfanümerik” kavramının içeriğini değiştirmek istiyorsanız, kendinize özgü bir “isalpha()” fonksiyonu tanımlamalısınız…

  7. acilll
    Cuma, 08 Oca 2010 zamanında 22:40 | #7

    hmmm peki yardımların için tesekkürler :)

  1. şimdilik geri bağlantı yok