{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Koşullu Durumlar - if - elif - else koşullu durumları " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Önceki konumuzda koşullu durumlardaki if-else kalıplarımızı öğrendik. Bu bölümde de if-elif-else kalıplarını öğrenmeye çalışacağız.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### if-elif-else Blokları" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Önceki konumuzda koşullu durumlarımızla sadece tek bir koşulu kontrol edebiliyorduk. Ancak programlamada bir durum bir çok koşula bağlı olabilir. Örneğin bir hesap makinesi programı yazdığımızda kullanıcının girdiği işlemlere göre koşullarımızı belirleyebiliriz. Bu tür durumlar için if-elif-else kalıplarını kullanırız. Kullanımı şu şekildedir;\n", "\n", " if koşul: \n", " Yapılacak İşlemler\n", " elif başka bir koşul:\n", " Yapılacak İşlemler\n", " elif başka bir koşul:\n", " Yapılacak İşlemler\n", " \n", " //\n", " //\n", " else:\n", " Yapılacak İşlemler \n", "Programlarımızda, Kaç tane koşulumuz var ise o kadar elif bloğu oluşturabiliriz. Ayrıca **else** in yazılması zorunlu değildir. if - elif - else kalıplarında, hangi koşul sağlanırsa program o bloğu çalıştırır ve if-elif-blokları sona erer.\n", "Şimdi isterseniz kullanıcıya işlem seçtirdiğimiz bir programla , bu kalıbı öğrenmeye başlayalım.\n", "\n", "\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "İşlem seçiniz:1\n", "1. işlem seçildi.\n" ] } ], "source": [ "işlem = int(input(\"İşlem seçiniz:\")) # 3 tane işlemimiz olsun.\n", "\n", "if işlem == 1:\n", " print(\"1. işlem seçildi.\")\n", "elif işlem == 2:\n", " print(\"2. işlem seçildi.\")\n", "elif işlem == 3:\n", " print(\"3. işlem seçildi.\")\n", "else:\n", " print(\"Geçersiz İşlem!\")\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "İşlem seçiniz:3\n", "3. işlem seçildi.\n" ] } ], "source": [ "işlem = int(input(\"İşlem seçiniz:\")) # 3 tane işlemimiz olsun.\n", "\n", "if işlem == 1:\n", " print(\"1. işlem seçildi.\")\n", "elif işlem == 2:\n", " print(\"2. işlem seçildi.\")\n", "elif işlem == 3:\n", " print(\"3. işlem seçildi.\")\n", "else:\n", " print(\"Geçersiz İşlem!\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "İşlem seçiniz:4\n", "Geçersiz İşlem!\n" ] } ], "source": [ "işlem = int(input(\"İşlem seçiniz:\")) # 3 tane işlemimiz olsun.\n", "\n", "if işlem == 1:\n", " print(\"1. işlem seçildi.\")\n", "elif işlem == 2:\n", " print(\"2. işlem seçildi.\")\n", "elif işlem == 3:\n", " print(\"3. işlem seçildi.\")\n", "else:\n", " print(\"Geçersiz İşlem!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Programlarda **else** kalıbının kullanılmasına gerek yoktur.Buradaki kodda biz diğer durumlar için sadece opsiyonel bir **else** bloğu koyduk. Kodumuz **else** bloğu olmadan da çalışabilecektir. Ancak bu durumda yanlış bir işlem girilirse ekrana herhangi bir şeyin yazılmadığını göreceğiz. Yani, **else** bloğu kullanmak tamamen size bağlı.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "İşlem seçiniz:4\n" ] } ], "source": [ "işlem = int(input(\"İşlem seçiniz:\")) # 3 tane işlemimiz olsun.\n", "\n", "if işlem == 1:\n", " print(\"1. işlem seçildi.\")\n", "elif işlem == 2:\n", " print(\"2. işlem seçildi.\")\n", "elif işlem == 3:\n", " print(\"3. işlem seçildi.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Peki , if koşulu olmadan elif bloklarını yazmak mümkün mü ? ** Pythonda böyle bir kullanım hataya yol açacaktır." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 3)", "output_type": "error", "traceback": [ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m3\u001b[0m\n\u001b[1;33m elif işlem == 2:\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "işlem = int(input(\"İşlem seçiniz:\")) # 3 tane işlemimiz olsun.\n", "\n", "elif işlem == 2:\n", " print(\"2. işlem seçildi.\")\n", "elif işlem == 3:\n", " print(\"3. işlem seçildi.\")\n", "else:\n", " print(\"Geçersiz İşlem!\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### if-if-if Blokları" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu blokları öğrenmeden önce isterseniz öğrendiğimiz bilgilerle, bir harf notu hesaplama sistemi yapalım. Daha sonra bu kalıpları anlamaya çalışalım.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "note = float(input(\"Notunuzu giriniz:\"))\n", "\n", "if note >= 90:\n", " print(\"AA\")\n", "elif note >= 85:\n", " print(\"BA\")\n", "elif note >= 90:\n", " print(\"BA\")\n", "elif note >= 80:\n", " print(\"BB\")\n", "elif note >= 75:\n", " print(\"CB\")\n", "elif note >= 70:\n", " print(\"CC\")\n", "elif note >= 65:\n", " print(\"DC\")\n", "elif note >= 60:\n", " print(\"DD\")\n", "else:\n", " print(\"Dersten Kaldınız\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Burada eğer herhangi bir bloğumuz koşulu sağlarsa **print** işlemi gerçekleşecek ve programımız sonlanacaktır. Ancak acaba **elif** bloklarını **if** bloklarına çevirirsek programımız nasıl çalışacak ? Hemen bakalım.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Notunuzu giriniz:93\n", "AA\n", "BA\n", "BA\n", "BB\n", "CB\n", "CC\n", "DC\n", "DD\n" ] } ], "source": [ "note = float(input(\"Notunuzu giriniz:\"))\n", "\n", "if note >= 90:\n", " print(\"AA\")\n", "if note >= 85:\n", " print(\"BA\")\n", "if note >= 90:\n", " print(\"BA\")\n", "if note >= 80:\n", " print(\"BB\")\n", "if note >= 75:\n", " print(\"CB\")\n", "if note >= 70:\n", " print(\"CC\")\n", "if note >= 65:\n", " print(\"DC\")\n", "if note >= 60:\n", " print(\"DD\")\n", "else:\n", " print(\"Dersten Kaldınız\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Notunuzu giriniz:80\n", "BB\n", "CB\n", "CC\n", "DC\n", "DD\n" ] } ], "source": [ "note = float(input(\"Notunuzu giriniz:\"))\n", "\n", "if note >= 90:\n", " print(\"AA\")\n", "if note >= 85:\n", " print(\"BA\")\n", "if note >= 90:\n", " print(\"BA\")\n", "if note >= 80:\n", " print(\"BB\")\n", "if note >= 75:\n", " print(\"CB\")\n", "if note >= 70:\n", " print(\"CC\")\n", "if note >= 65:\n", " print(\"DC\")\n", "if note >= 60:\n", " print(\"DD\")\n", "else:\n", " print(\"Dersten Kaldınız\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Burada gördüğümüz gibi programımız beklenmedik bir şekilde çalıştı. Çünkü Pythonda programlar **her zaman** bütün **if** bloklarını kontrol eder ve koşullar doğruysa bu blokları çalıştırır. İşte böyle not hesaplama gibi programlarda **elif** kullanmamızın sebebi budur.\n", "\n", "Koşullu durumlarımız şimdilik bu kadar ! Kurs boyunca programlarımızda birçok yerde koşullu durumları kullanacağız. Bu kısım sonundaki alıştırma videolarını izlerseniz ve ödevleri yaparsanız iyi yol kat etmiş olacaksını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 }