{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Koşullu Durumlar - if-else koşullu durumları\n", "Şimdiye kadar Pythondaki temel veritiplerini öğrendik ve gerekli temelleri aldık. Artık bundan sonra çok daha eğlenceli konular göreceğiz ve elle tutulur programlar yazmaya başlayacağız. Bu konuda ilk olarak Python programlarının çalışma mantığını göreceğiz ve daha sonrasında koşullu durumları anlamaya çalışacağız.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Python Programlarının çalışma mantığı\n", "\n", "Python programları çalışmaya başladığı zaman kodlarımız yukardan başlayarak teker teker çalıştırılır ve çalıştıracak kod kalmayınca programımız sona erer. Şöyle bir örneği düşünelim;\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9\n" ] } ], "source": [ "a = 2\n", "b = 3\n", "c = 4\n", "print(a+b+c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yukarıdaki basit kodda program teker teker her bir satırı ve ifadeyi çalıştırır ve çalıştıracak kod kalmayınca program sona erer.Ancak Python'da her program bu kadar basit olmayabilir. Çoğu zaman Python programlarımız belirli bloklardan oluşur ve bu bloklar her zaman çalışmak zorunda olmaz.Peki bu bloklar nasıl tanımlanır ? Pythonda bir blok tanımlama işlemi **Girintiler** sayesinde olmaktadır. Örnek olması açısından, Pythonda bloklar şu şekilde oluşabilir.\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n", "Merhaba\n" ] } ], "source": [ "a = 2 # Blok 1 'e ait kod\n", "\n", "if (a == 2):\n", " print(a) # Blok 2'ye ait kod\n", "print(\"Merhaba\") # Blok 1 ' ait kod" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dikkat ederseniz burada daha önce görmediğimiz bir şey yaptık ve **if** in bulunduğu satırdan sonraki **print** işlemini bir tab kadar girintili yazdık. Burada gördüğümüz gibi, **girintiler(tab)** Pythonda bir blok oluşturmak için kullanılıyor ve her bloğunun çalıştırılması gerekmiyor. Mesela yukarıda gördüğümüz kodda **2 print** işlemi de çalıştı. Ancak kodumuzu şu şekilde yazsaydık, ilk **print** işlemi çalışmayacaktı.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Merhaba\n" ] } ], "source": [ "a = 2 # Blok 1 'e ait kod\n", "\n", "if (a == 3):\n", " print(a) # Blok 2'ye ait kod\n", "print(\"Merhaba\") # Blok 1 ' ait kod" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Buradaki blok tanımlama işlemlerimiz bundan sonra sürekli karşımıza çıkacak. Eğer henüz anlamadıysanız zamanla anladığınızı göreceksiniz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Koşullu Durumlar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Artık Pythonda bizi bir ileri seviyeye taşıyacak koşullu durumları öğrenmenin vakti geldi.\n", "\n", "Koşullu durumlar aslında günlük yaşamda sürekli karşılaştığımız durumlardır. Örneğin havanın yağmurlu olma koşuluna göre şemsiyemizi alırız veya uykumuzun gelme koşuluna göre uyuruz. Aslında programlamada da birçok koşullu durumla karşılaşırız. Örneğin , belli koşullara göre belli işlemleri yaparız , belli koşullara göre yapmayız. İşte bunlar koşullu durumların temeli oluşturur. İsterseniz koşullu durumları yazmaya **if** blokları ile başlayalım.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### if Bloğu\n", "\n", "if bloğu programımızın içinde herhangi bir yerde belli bir koşulu kontrol edecek isek kullanılan bloklardır.Yazımı şu şekildedir;\n", "\n", " if (koşul): \n", " # if bloğu - Koşul sağlanınca (True) çalışır. Bu hizadaki her işlem bu if bloğuna ait.\n", " # if bloğu - Girintiyle oluşturulur.\n", " Yapılacak İşlemler\n", " \n", "**if bloğu** *eğer koşul sağlanırsa anlamı taşır*. Eğer if kalıbındaki koşul sağlanırsa (True) if bloğu çalıştırılır, koşul sağlanmazsa (False) if bloğu çalıştırılmaz.\n", " \n", "Hemen bir örnek ile koşullu durumları anlamaya çalışalım. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yaşınızı giriniz:17\n", "Bu mekana giremezsiniz.\n" ] } ], "source": [ "# 18 yaş kontrolü\n", "yaş = int(input(\"Yaşınızı giriniz:\"))\n", "\n", "if (yaş < 18):\n", " # if bloğu - Girinti ile sağlanıyor.\n", " print(\"Bu mekana giremezsiniz.\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yaşınızı giriniz:25\n" ] } ], "source": [ "# 18 yaş kontrolü\n", "yaş = int(input(\"Yaşınızı giriniz:\"))\n", "\n", "if (yaş < 18):\n", " # if bloğu - Girinti ile sağlanıyor.\n", " print(\"Bu mekana giremezsiniz.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Başka bir örnek yapalım." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sayıyı giriniz:-3\n", "Negatif Sayı\n" ] } ], "source": [ "# Negatif mi değil mi ?\n", "sayı = int (input(\"Sayıyı giriniz:\"))\n", "\n", "if (sayı < 0):\n", " print(\"Negatif Sayı\")\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ancak buralarda bir eksiklik var. Örneğin , ** 18 yaş kontrolü ** örneğinde eğer *yaş* 18'e eşit ve 18'den büyükse ekrana herhangi bir şey basamıyoruz. Şöyle bir şey acaba istediğimizi gerçekleştirecek mi ? \n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yaşınızı giriniz:25\n", "Mekana hoşgeldiniz.\n" ] } ], "source": [ "# 18 yaş kontrolü\n", "yaş = int(input(\"Yaşınızı giriniz:\"))\n", "\n", "if (yaş < 18):\n", " # if bloğu - Girinti ile sağlanıyor.\n", " print(\"Bu mekana giremezsiniz.\")\n", "print(\"Mekana hoşgeldiniz.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Burada istediğimiz sağlanmış gibi görünüyor.Ancak durum öyle değil. Kodumuzu bir kere daha çalıştıralım.\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yaşınızı giriniz:17\n", "Bu mekana giremezsiniz.\n", "Mekana hoşgeldiniz.\n" ] } ], "source": [ "# 18 yaş kontrolü\n", "yaş = int(input(\"Yaşınızı giriniz:\"))\n", "\n", "if (yaş < 18):\n", " # if bloğu - Girinti ile sağlanıyor.\n", " print(\"Bu mekana giremezsiniz.\")\n", "print(\"Mekana hoşgeldiniz.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Burada istediğimizi elde edemedik çünkü 2. print işlemi herhangi bir koşula bağlı değil. O yüzden 2.print işlemi her durumda çalışıyor. Peki **if koşulu** sağlanmadığında belli bir işlemin çalışmasını nasıl sağlayacağız ? Bunun için sıradaki kalıbımızı öğrenelim." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### else Bloğu\n", "\n", "else blokları **if koşulu ** sağlanmadığı zaman (False) çalışan bloklardır. Kullanımı şu şekildedir;\n", " \n", "\n", " else:\n", " # else bloğu - Yukarısındaki herhangi bir if bloğu (veya ilerde göreceğimiz elif bloğu) çalışmadığı\n", " # zaman çalışır. \n", " # else bloğu - Girintiyle oluşturulur.\n", " Yapılacak İşlemler\n", " \n", "Dikkat ederseniz burada **else** koşulunun yanına herhangi bir koşul yazmadık. Çünkü zaten **else** bloğunun çalışması ondan önce gelen diğer koşulların sağlanmamasına bağlı oluyor. İsterseniz, **18 yaş kontrolü** örneğini **else** bloğunu dahil ederek tekrar yazalım." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yaşınızı giriniz:25\n", "Mekana hoşgeldiniz.\n" ] } ], "source": [ "# 18 yaş kontrolü\n", "yaş = int(input(\"Yaşınızı giriniz:\"))\n", "\n", "if (yaş < 18):\n", " # if bloğu - Girinti ile sağlanıyor.\n", " print(\"Bu mekana giremezsiniz.\")\n", "else:\n", " # else bloğu - if koşulu sağlanmazsa çalışacak.\n", " print(\"Mekana hoşgeldiniz.\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yaşınızı giriniz:17\n", "Bu mekana giremezsiniz.\n" ] } ], "source": [ "# 18 yaş kontrolü\n", "yaş = int(input(\"Yaşınızı giriniz:\"))\n", "\n", "if (yaş < 18):\n", " # if bloğu - Girinti ile sağlanıyor.\n", " print(\"Bu mekana giremezsiniz.\")\n", "else:\n", " # else bloğu - if koşulu sağlanmazsa çalışacak.\n", " print(\"Mekana hoşgeldiniz.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "İşte koşullu durumların aslında mantığı tamamıyla bu kadar ! Konuyu bitirmeden önce aşağıdaki kodu çalıştıralım." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m else:\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "else:\n", " print(\"Merhaba\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Buradaki kod hata verdi çünkü bir **else** bloğu kendinden önce herhangi bir koşul bloğu yok ise çalışamaz ve Pythonda hataya yol açar.\n", "\n", "\n", "Bir sonraki derste diğer koşullu bloklarımıza bakacağız." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }