Python Kullanıcıdan Veri Alma İşlemleri

Şimdiye kadar python dilinin statik diyebileceğimiz konuları üzerinde durduk. Kullanıcılar ile hiç etkileşime girmedik. Bundan sonra anlatacağımız konularda kullanıcı ile etkileşimli konular da olacaktır. Yani statik bir uygulamayı aslında dinamikleştiren kodları işlemeye başlayacağız.

Bu bölümde input() ve raw_input() fonksiyonlarını ve bu fonksiyonlar arasındaki temel farkları inceleyelim.

raw_input() Fonksiyonu

raw_input() fonksiyonu kullanıcıdan veri alınmasını sağlar.

#!/usr/bin/env python

# -*- coding: utf-8 -*-

isim= raw_input(“İsminizi Yazınız”)

print isim

Yukarıdaki örnekte kullanıcıdan raw_input() fonksiyonu ile kullanıcıdan ismini yazması istenmiştir. İstenildiği takdirde kullanıcıdan istenilen bilgi belirtilmek zorunda değildir. Yani raw_input() fonksiyonunun içini boş bırakabilirsiniz ama kullanıcıdan istenen bilgilerin doğruluğu açısından boş bırakmak doğru olmayacaktır.

Raw_input() fonksiyonunu daha iyi anlamak için kullanıcıdan iki sayı alalım ve onları toplayalım:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

sayi1=raw_input(“Birinci sayıyı giriniz.”)

sayi1=raw_input(“İkinci sayıyı giriniz.”)

toplam= sayi1 + sayi2

print toplam

Kullanıcının 5 ve 3 girdiğini farzedelim.

Ekran Çıktısı:

Birinci sayıyı giriniz:5

Birinci sayıyı giriniz:3

53

Yukarıda 8 yerine 53 yazdığını gördük. Bunun sebebi ise python dilinin girilen bütün değerleri karakter dizisi olarak algılamasıdır. Bu da demek oluyor ki yukarıdaki gibi bir kullanım python için doğru bir kullanım değildir.

Programı aşağıdaki gibi değiştirirsek sorun ortadan kalkar:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

sayi1=raw_input(“Birinci sayıyı giriniz.”)

sayi1=raw_input(“İkinci sayıyı giriniz.”)

toplam= int(sayi1) + int(sayi2)

print toplam

Ekran Çıktısı:

Birinci sayıyı giriniz:5

Birinci sayıyı giriniz:3

8

Yukarıdaki programda böyle bir kullanım olmasının sebebi pythonda bazı değişkenlerin kullanılırken dönüştürülmesidir.

İnput() Fonksiyonu

İnput() fonksiyonu kullanıcıdan veri alınmasını sağlayan fonksiyondur.

#!/usr/bin/env python

# -*- coding: utf-8 -*-

sayi1=input(“Birinci sayıyı giriniz.”)

sayi1=input(“İkinci sayıyı giriniz.”)

toplam= (sayi1) + (sayi2)

print toplam

Ekran Çıktısı:

Birinci sayıyı giriniz:5

Birinci sayıyı giriniz:3

8

Yukarıdaki örnekte kullanıcıdan aldığımız verileri herhangi bir dönüştürme işlemi yapmadan toplama işlemini gerçekleştirdik. İnput() fonksiyonu göndereceğimiz değerleri sayı olarak tutacağı için dönüştürme işlemine gerek yoktur.

#!/usr/bin/env python

# -*- coding: utf-8 -*-

isim=input(“Adınızı yazınız.”)

Yukarıdaki gibi bir kullanımda ise aşağıdaki hatayı alırız.

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "<string>", line 1, in <module>

NameError: name 'isim' is not defined

</module></string></module></stdin>

NOT:İnput() fonksiyonu kullanımında dikkat edilmesi gereken bir diğer husus ise güvenlik açıklarıdır. İnput() fonksiyonu kullanıcıdan komut beklediği için bazı güvenlik sorunları teşkil eder.

#!/usr/bin/env python

# -*- coding: utf-8 -*-

isim=input(“İsminizi Giriniz”)

print isim

Yukarıdaki gibi bir kullanımda input() fonksiyonu kullanıcıdan komut bekliyor. Kullanıcı bu komut esnasında birçok değişkeni işleme sokabilir hatta işletim sistemi komutlarını devreye sokarak ciddi tehlikelere sebep olabilir. Örneğin dosyalar üzerinde değişiklik yapabilir. Python developerlar bunu engellemek için genelde raw_input() fonksiyonunu kullanırlar.