Süleyman ÖĞREKÇİ
suleymanogrekci.wordpress.com

Pythona Giriş

Bu derste pythonda isimler ile değerleri tanıyacağız ve python ile ilk programlarımızı yazacağız

1. Merhaba Dünya

Yeni bir programlama dili öğrenilirken yazılan ilk programın hello world olması adettir. Adete uyalım ve ekrana "Merhaba dünya" mesajını yazacak python programını yazalım. Python o kadar yüksek seviye bir dildir ki bu programı yazmak için tek satır kod kullanacağız:

In [1]:
print "Merhaba dünya.."
Merhaba dünya..
Yorumlar

Python dilinde program kodunda bir # karakteri ile karşılaşılırsa o satırın geri kalanı değerlendirilmez. Örneğin aşağıdaki program ile yukarıdaki hello world uygulaması bire-bir aynı şekilde çalışır.

In [2]:
#şimdi ilk programımızı yazacağız
print "Merhaba dünya.."
Merhaba dünya..
UTF-8 Karakterler

Terminal ile çalıştıracaksanız kullanacağımız kodlar hata mesajı döndürecektir, çünkü utf-8 karakterler kullanıyoruz. Python varsayılan olarak sadece ascii karakterlerle çalışmaya ayarlanmıştır.

İsterseniz bir deneyelim.

In [3]:
%%writefile scripts/hello.py
#şimdi ilk programımızı yazacağız
print "Merhaba dünya.."
Overwriting scripts/hello.py

Yukarıdaki komut bir python komutu değildir, ilk satırdan sonrasını belirtilen dosyaya kaydeden bir Jupyter komutudur, üzerinde durmayın. Bu komutla programımızı bir dosya olarak kaydettik, scripts klasörü içinde hello.py olarak. Şimdi çalıştırmayı deneyelim, aşağıdaki kumut da bir Jupyter komutudur.

In [4]:
! python scripts/hello.py
  File "scripts/hello.py", line 1
SyntaxError: Non-ASCII character '\xc5' in file scripts/hello.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Yukarıdai komutla az önce kaydettiğimiz hello.py dosyasını python ile çalıştırdık. Gördüğünüz gibi dosyanın ilk satırında ascii olmayan karakterlerin var olduğundan yakınan bir hata mesajı aldık. İkinci satırda da aynı sorun var ama interpreter ilk hata aldığı yerde durdu.

Eğer utf-8 ile çalışacaksak program kodlarının ilk satırına # -*- coding: utf-8 -*- komutunu girmemiz gerekir. Dikkat edelim, # ile başlamasına rağmen bu satır yorum değildir ve python interpreter tarafından değerlendirilir. CoCalc Jupyter notebook için buna ihtiyaç yoktur, dolayısıyla kullanmayacağız.

Yine de bir deneyelim, az önce hata aldığımız dosyaya bu saturu ekleyerek yeniden kaydedip çalıştırmayı deneyelim.

In [5]:
%%writefile scripts/hello2.py
# -*- coding: utf-8 -*-
#şimdi ilk programımızı yazacağız
print "Merhaba dünya.."
Overwriting scripts/hello2.py
In [6]:
! python scripts/hello2.py
Merhaba dünya..

Gördüğünüz gibi sorunsuz bir şekilde çalıştırdık programımızı.

2. Değişkenler

Programlama dillerinde sıklıkla veriler kısa bir isimle adlandırılıp daha sonra bu isimle çağrılır. Bu isimlere değişken deriz.

Pythonda değişken tanımlama işlemi eşittir işareti (=) ile yapılır, örnek olarak hello world programımızda bir değişken tanımlayalım.

In [7]:
mesaj = "Merhaba dünya"
print mesaj
Merhaba dünya

Yukarıdaki örnekte "Merhaba dünya.." ifadesini mesaj adında bir değişken olarak tanımladık, dikkat edelim değişkenin adı mesaj, değeri "Merhaba dünya..". Değişken ismi olarak istediğimiz ismi seçebiliriz, ama birkaç kural var. Öncelikle değişken isimleri ascii harfler, rakamlar ve alt tirelerden oluşabilir. Boşluk içeremez ve rakam ile başlayamaz. Ayrıca aşağıdaki kelimeler değişken ismi olarak seçilemez:

False      class      finally    is         return
None       continue   for        lambda     try
True       def        from       nonlocal   while
and        del        global     not        with
as         elif       if         or         yield
assert     else       import     pass
break      except     in         raise

Bunlara pythonda anahtar kelimeler denir, özel anlamları vardır.

Tanımladığımız değişkeni çağırırken ismini doğru yazmazsak, yani aslında var olmayan bir değişken çağırırsak python bize bir hata verir. Bu tür hatalara NameError hatası denir.

In [8]:
print masaj
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-32ec0653191e> in <module>()
----> 1 print masaj

NameError: name 'masaj' is not defined

Gördüğünüz gibi masaj adında bir değişkenin tanımlı olmadığını belirten bir NameError hatası aldık. masaj değil mesaj idi değişkenin adı.

In [9]:
print mesaj
Merhaba dünya

3. İsimler ve Değerler

Bir python programında kodun her bir kelimesi genellikle ya bir isimdir (name), ya bir değerdir (value), ya bir anahtar kelimedir (keyword) ya da bir operatördür (=, +, - gibi).

Anahtar kelimeleri az önce gördük, operatörler de açık, ayrıca ileride tanıyacağız. Bizim için şimdi önemli olan isim ve değerler.

Son hazırladğımız hello world programını hatırlayın, orada mesaj bir isim ve "Merhaba dünya" bir değerdir. name = value ifadesi name adında bir değişken tanımlamamıza ve onun değerini value olarak atamamızı sağlar.

name kısmını nasıl girebileceğimizi az önce gördük, bir sonraki derste value nasıl girilir bahsedeceğiz. Şimdi küçük birkaç deneme yapın, örneğin "Merhaba dünya.." değeri yerine 'Merhaba' veya Merhaba değerlerini atamayı deneyin.

In [10]:
mesaj = 'Merhaba'
print mesaj
Merhaba
In [11]:
mesaj = Merhaba
print mesaj
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-11-de253e84fabf> in <module>()
----> 1 mesaj = Merhaba
      2 print mesaj

NameError: name 'Merhaba' is not defined

Gördüğünüz gibi mesaj = Merhaba değişken ataması bize hata döndürdü, bir NameError. Hata mesajına bakarsak bize Merhaba adında bir değişken tanımlanmadı diyor.

Yani python bu durumda Merhaba kelimesini bir değer olarak değil, bir değişken ismi olarak değerlendirdi. Daha önce böyle bir değişken tanımlamadığımız için doğal olarak hata verdi.

Bir kelimeyi veya cümleyi tek veya çift tırnak işaretleri arasında girersek bu bir değer (sıklıkla veri diyeceğiz) olarak değerlendirilir.

Başka denemeler yapalım, örneğin harfler değil rakamlar kullanalım.

In [12]:
mesaj1 = 2
mesaj2 = "2"
print mesaj1
print mesaj2
2
2

Gördüğünüz gibi bir rakamı tırnak içerisinde de yazsak tırnak kullanmadan da yazsak python onu bir değer olarak algılıyor ve sorunsuz bir atama yapıyor.

Yazdırdığımızda çıktıları aynı olsada mesaj1 ve mesaj2 değişkenlerinin değerleri aynı değildir, aralarında dağlar kadar fark var. Sonraki derste göreceğiz bunları, şimdilik aşağıdaki ipucuyla yetinin..

In [13]:
print mesaj1 * 3
print mesaj2 * 3
6
222