{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# AST415 Astronomide Sayısal Çözümleme - I #\n", "## Ders - 08 Veri Girişi ve Hata Yönetimi ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Doç. Dr. Özgür Baştürk
\n", "Ankara Üniversitesi, Astronomi ve Uzay Bilimleri Bölümü
\n", "obasturk at ankara.edu.tr
\n", "http://ozgur.astrotux.org" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Bu derste neler öğreneceksiniz?#\n", "## Veri Girişi ve Hata Yönetimi ##\n", "\n", "* [Kullanıcıyla Terminal Aracılığıyla İLetişim](#[Kullanıcıyla-Terminal-Aracılığıyla-İLetişim)\n", " * [eval Fonksiyonu](#eval-Fonksiyonu)\n", " * [input ile eval Ortaklığı](#input-ile-eval-Ortaklığı)\n", " * [exec Fonksiyonu](#exec-Fonksiyonu)\n", " * [Komut Satırından Girdi Almak](#Komut-Satırından-Girdi-Almak)\n", " * [Beirsiz Sayıda Komut Satırı Elemanıyla Çalışmak](#Beirsiz-Sayıda-Komut-Satırı-Elemanıyla-Çalışmak)\n", " * [argüman ve değer İkilileri](#argüman-ve-değer-İkilileri)\n", "* [Python'da Hata Yönetimi](#Python'da-Hata-Yönetimi)\n", " * [try except Yöntemi](#try-except-Yöntemi)\n", " * [Python'da Bazı Hata Türleri](#Python'da-Bazı-Hata-Türleri)\n", " * [Hata Mesajı Vermek](#Hata-Mesajı-Vermek)\n", "* [Alıştırmalar](#Alıştırmalar)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Kullanıcıyla Terminal Aracılığıyla İletişim #\n", "\n", "Santigrad dereceyi Fahrenheit dereceye çeviren fonksiyonumuzu hatırlayalım. Bu fonksiyonu çağırırken istediğimiz değer(ler)i kaynak kodun içerisinden göndermek yerine kullanıcının girmesine izin verecek bir yapı işimizi oldukça kolaylaştırır ve kaynak kodumuzu farklı her değer için değiştirmemizi de önler. Bu tür bir yapıyı $input$ fonksiyonunu kullanarak kurabiliriz. $input$ fonksiyonu metin değişken döndürdüğünden bu değişkeni ihtiyaca göre diğer değişken tiplerine ($int$, $float$, $list$, $tuple$ …) çevirmek gerekebilir." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C=? 26\n", "78.80000000000001\n" ] } ], "source": [ "def F(C):\n", " return (9.0/5)*C + 32\n", "sant = input('C=? ') \n", "sant = float(sant)\n", "fahr = F(sant)\n", "print(fahr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## eval Fonksiyonu ##\n", "\n", "$eval$ fonksiyonu bir metin değişkeni alıp, bir Python ifadesi şekinde yorumlar. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3 \n", "\n", "[1, 6, 7.5] \n", "1.4142135623730951 \n" ] } ], "source": [ "r = eval('1 + 2')\n", "print(r, type(r))\n", "r = eval('\"Bu Python bir harika dostum!\"')\n", "print(type(r))\n", "r = eval('[1, 6, 7.5]')\n", "print(r, type(r))\n", "from math import sqrt\n", "r = eval('sqrt(2)')\n", "print(r, type(r))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## input ile eval Ortaklığı ##\n", "\n", "$eval$ fonksiyonu sadece metin değişken döndüren $input$ fonksiyonu ile kullanıcı tarafından girilen verinin herhangi bir tür değiştirme işlemine gerek kalmaksızın yorumlanmasını sağladığından oldukça pratiktir." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Birinci sayi: 8\n", "Ikinci sayi: 12\n", " + toplami \n", "degeri ise 20\n" ] } ], "source": [ "i1 = eval(input('Birinci sayi: '))\n", "i2 = eval(input('Ikinci sayi: '))\n", "r = i1 + i2\n", "print('{:} + {:} toplami {:}\\ndegeri ise {:}'.format(type(i1), type(i2), type(r), r))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$eval$ fonksiyonunun bir diğer kullanışlılığı kullanıcının formül girmesine ve girilen formülün bir Python ifadesi olarak yorumlanmasına imkan sağlamasıdır." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x degiskenini iceren bir formul giriniz: 2*sin(x) + 1.3\n", "x = 0.85\n", "x=0.85 icin 2*sin(x) + 1.3 = 2.80256\n" ] } ], "source": [ "# butun matemtaik fonksiyonlarini indirelim ki kullanicinin\n", "# girebilecegi her fonksiyona hazirlikli olalim.\n", "from math import *\n", "formul = input('x degiskenini iceren bir formul giriniz: ')\n", "x = eval(input('x = '))\n", "sonuc = eval(formul)\n", "print('x={:g} icin {:s} = {:g}'.format(x, formul, sonuc))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## exec Fonksiyonu ##\n", "\n", "Kullanıcı tarafından girilen bir formülü bir Python fonksiyonu olarak kullanmamızı sağlayan fonksiyondur." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x degiskenini iceren bir formul giriniz: cos(x)-1\n", "\n", "def f(x):\n", " return cos(x)-1\n", "\n", "x =3.14\n", "-1.9999987317275396\n" ] } ], "source": [ "from math import *\n", "formul = input('x degiskenini iceren bir formul giriniz: ')\n", "kod = \"\"\"\n", "def f(x):\n", " return {:s}\n", "\"\"\".format(formul)\n", "print(kod)\n", "exec(kod)\n", "x = eval(input('x ='))\n", "print(f(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu programın yaptığı iş kullanıcıdan aldığı ve sadece $x$ bağımsız değişkenini içeren herhangi bir ifadeyi bir Python fonksiyonuna cevirip döndürmektir. Söz konusu Python fonksiyonu $kod$ metin (string) değişkeni içerisinde oluşturulmaktadır. $exec$ fonksiyonu bu değişkenin içeriğini bir Python ifadesi olarak çalıştırmaktadır. İçerik bir fonksiyon tanımı olduğundan bu şekilde bir f(x) fonksiyonu tanımlanmış olur. Tanımlanan fonksiyon $sin(x).cos(3x) + x^{2}$ olduğunda örnekte verilen fonksiyon ile özdeştir.\n", "\n", "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Komut Satırından Girdi Almak ##\n", "\n", "Pek çok linux programı kullanıcıdan girdi (input) almak üzere komut satırını kullanır. Kullanıcı programın adının hemen arkasına programda kullanılacak girdi parametresinin değerini de girer. Girdi parametresi program tarafından bir salt metin değişkenine (string) atanır ve gerekli dönüşümler ve işlemler yapıldıktan sonra program çıktısını tekrar ekrana verir.\n", "\n", "Bunun için $sys$ modülünde tüm komut satırı parametrelerini saklayan $argv$ listesi kullanılır. Bu listenin ilk elemanı ($argv[0]$) programın adıdır. İkinci eleman ($argv[1]$) ilk parametreyi, daha sonra gelen elemanlarsa sırayla diğer parametreleri saklar.\n", "\n", "Bu bölümde yazılacak kodları ancak komut satırından (ya da jupyter'da %run \"sihirli\" sözcüğünü (magic word) kulllanarak) çaıştırabileceğiniz için kodların bir metin editörü ile .py uzantılı bir dosyaya yazılmış olması gerekir. Bu nedenle bu bölümde kullanılacak kodlar [ders08_ornek_kodlar.tar.gz](http://ozgur.astrotux.org/ast415/Ders_08/ders08_ornek_kodlar.tar.gz) isimli bir sıkıştırılmış dosyada toplanmıştır. Bu dosyayı indirip, sıkıştırılmış dosyadaki klasörü (ders08_ornek_kodlar) kodları çalıştıracağınız yere (path) kopyalamanız durumunda aşağıdaki örnekler çalışacaktır.\n", "\n", "Örneğin Fahrenheit dereceye dönüştürmek istediğimiz santigrad derece değerini kullanıcıdan komut satırı yoluyla girmesini istiyor olalım. Bunun için gerekli kod ders08_ornek_kodlar/ders08_orn01_C2F.py dosyasında bulunmaktadır. Kodu açıp inceleyiniz. Bu kodu Python 3.x çalıştıran herhangi bir terminalden\n", "\n", "$ python ders08_orn01_C2F.py 25\n", "\n", "komutu ile çalıştırabilecğeiniz gibi %run jupyter sihirli sözcüğüyle de çalıştırabilirsiniz. 25 burada Fahrenheit dereceye dönüştürmek istediğiniz sıcaklık değeri olup, istediğniz başka bir değeri de programa argüman olarak geçirebilirsiniz." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-13.0\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn01_C2F.py -25" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Örnek: Dikey Atış Problemi ##\n", "\n", "Bir başka örnekte dikey atış probleminin parametrelerini kullanıcıdan komut satırı yoluyla almak üzere bir program yazmak istiyor olalım." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.2342\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn02_dikeyatis.py 0.6 5.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu durumda iki komut satırı argümanına ihtiyaç duyarız, sırasıyla bu argümanların değerleri $t$ ($argv[1]$) ve $v0$ ($argv[2]$) değişkenlerine salt metin olarak atanır. Bu değişkenlerin reel sayı olmasını istediğmiz için onları $float$ fonksiyonunu kullanarak öncelikle dönüştürmemiz gerekir. Daha sonra cismin düşey konumunu hesaplar ve ekrana yazdıırırız.\n", "\n", "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Belirsiz Sayıda Komut Satırı Argümanıyla Çalışmak ##\n", "\n", "Bazen sayısı tam olarak bilinmeyen komut argümanıyla da çalışmak gerekbilir. Örneğin kullanıcının girdiği tüm (sayısı belirsiz) sayıları toplayan ve sonucu ekrana gerien bir kod yazmak istiyor olalım." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Verilen 3.2 -2.6 0.1 9.4 -4 sayilarinin toplami 6.1\n" ] } ], "source": [ " %run ders08_ornek_kodlar/ders08_orn03_toplama.py 3.2 -2.6 0.1 9.4 -4 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatif olarak aynı kodu isterseniz liste özelliklerini kullanarak çok daha kısa yazabilirsiniz." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Verilen 3.2 -2.6 0.1 9.4 -4 sayilarinin toplami 6.1\n" ] } ], "source": [ " %run ders08_ornek_kodlar/ders08_orn04_toplama2.py 3.2 -2.6 0.1 9.4 -4 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## argüman ve değer İkilileri ##\n", "\n", "Şu ana kadar gördüğünüz tüm komut satırından girdi parametreleri kullanıcının doğru sırada bu parametreleri girmesine bağlı olarak değer alırlar. Oysa ki (ls, cp, mv gibi başka Linux programlarında gördüğümüz gibi programın kullanıcının istenen parametreleri doğru sırada girmesinden bağımsız olarak -arguman = deger ikilileri ile çalışması çok iyi bir fikirdir. \n", "\n", "Örnek olarak ivmeli bir hareketteki toplam yer değiştirmenin bulunması problemini ele alalım. \n", "\n", "$$ s(t) = s_0 + v_0 t + \\frac{1}{2} a t^2 $$\n", "\n", "İstenirse bu kod tüm parametreler için birer değer girilerek aşağıdaki şekilde çalıştırılabileceği gibi her bir parametrenin varsayılan değeri bilindiğinden sadece bazı parametrelerin değerleri girilip, diğer parametreler için varsayılan değerler kullanılarak da çalıştırılabilir." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Toplam yer degistirme = 15\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn05_yerdegistirme.py --s0 5 --v0 3 --t 2 --a 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu kodu şimdi sadece zaman parametresini (t) 5 saniye olarak komut satırından sağlamak suretiyle diğer parametreleri varsayılan değerlerinde (s0 = v0 = 0, a = 1) varsayarak çalştıralım ve cismin 5 saniye sonraki konumunu bu şekilde hesaplayalım." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Toplam yer degistirme = 12.5\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn05_yerdegistirme.py --t 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hiçbir parametre için değer sağlamaz ve opsiyon ifadesini boş bırakırsak bu kez program tüm parametreler için varsayılan değerlerle (s0 = v0 = 0, t = a = 1) çalışacaktır." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Toplam yer degistirme = 0.5\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn05_yerdegistirme.py" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Python'da Hata Yönetimi #\n", "\n", "Diyelim ki kullanıcı programımızı çalıştırırken vermesi gereken bir komut satırı argümanını unuttu. Bu durumda $argv$ listesinin ulaşmaya çalıştığımız elemanı boş kalacağından IndexError: list index out of range şeklinde bir hata mesajı alır. Zira sadece programın adı girildiğinden $argv[0]$ doludur, ancak $argv[1]$ elemanı bulunmamaktadır.\n", "\n", "Verilen hata mesajı bizim için açıklayıcı olsa da kullanıcı için olmayabilir. Kullanıcıya aşağıdaki şekilde bir mesajla hatasını söyleyip, yönlendirebiliriz. $sys.exit(1)$ programdan bir hata nedeniyle çıkıldığını belirtir. $sys.exit(0)$ programda bir hata olmadığı halde çıkmak için kullanılır. Bu fonksiyona verilen 0 haricindeki her şey 1 anlamına gelir.\n", "\n", "Önce programımızı kullanıcının herhangi bir santigrad derece girdiği durum için çalıştıralım." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25C = 77.0F\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn06_C2F_v2.py 25" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Şimdi kullanıcı sıcaklığı girmeyi unutmuş ya da programı doğru çalıştırmayı bilmediğinden sağlamamış olsun." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fahrenheit dereceye donusmesini istediginiz santigrad derece\n", "degerini girmediniz! Lutfen programin adindan sonra bir bosluk birakip \n", "sicakligi santigrad derece cisinden girerek tekrar deneyiniz!\n" ] }, { "ename": "SystemExit", "evalue": "1", "output_type": "error", "traceback": [ "An exception has occurred, use %tb to see the full traceback.\n", "\u001b[0;31mSystemExit\u001b[0m\u001b[0;31m:\u001b[0m 1\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn06_C2F_v2.py" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "40C = 104.0F\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn06_C2F_v2.py 40" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## try except Yöntemi ##\n", "\n", "Hata yönetimine daha modern bir yaklaşım try – except yöntemini kullanmaktır. Bu yöntemi santigrad derece – fahrenheit derece dönüşüm kodumuza uyarlayabiliriz. Bu durumda da kodumuz aynı şekilde çalışacaktır." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6C = 21.2F\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn07_C2F_v3.py -6" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:Internal Python error in the inspect module.\n", "Below is the traceback from this internal error.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Fahrenheit dereceye donusmesini istediginiz santigrad derece\n", "degerini girmediniz! Lutfen programin adindan sonra bir bosluk birakip \n", "sicakligi santigrad derece cinsinden bir kayan noktali sayi ya da bir tamsayi \n", "formatinda girerek tekrar deneyiniz!\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn07_C2F_v3.py\", line 30, in \n", " C = float(sys.argv[1])\n", "IndexError: list index out of range\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\", line 2722, in safe_execfile\n", " self.compile if shell_futures else None)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\", line 168, in execfile\n", " exec(compiler(f.read(), fname, 'exec'), glob, loc)\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn07_C2F_v3.py\", line 36, in \n", " sys.exit(1) # hata nedeniyle programdan cik!\n", "SystemExit: 1\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 1151, in get_records\n", " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 319, in wrapped\n", " return f(*args, **kwargs)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 353, in _fixed_getinnerframes\n", " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", " File \"/usr/lib/python3.6/inspect.py\", line 1490, in getinnerframes\n", " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", "AttributeError: 'tuple' object has no attribute 'tb_frame'\n" ] }, { "ename": "SystemExit", "evalue": "1", "output_type": "error", "traceback": [ "An exception has occurred, use %tb to see the full traceback.\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mSystemExit\u001b[0m\u001b[0;31m:\u001b[0m 1\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn07_C2F_v3.py " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:Internal Python error in the inspect module.\n", "Below is the traceback from this internal error.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Fahrenheit dereceye donusmesini istediginiz santigrad derece\n", "degerini girmediniz! Lutfen programin adindan sonra bir bosluk birakip \n", "sicakligi santigrad derece cinsinden bir kayan noktali sayi ya da bir tamsayi \n", "formatinda girerek tekrar deneyiniz!\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn07_C2F_v3.py\", line 30, in \n", " C = float(sys.argv[1])\n", "ValueError: could not convert string to float: '[1.2]'\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\", line 2722, in safe_execfile\n", " self.compile if shell_futures else None)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\", line 168, in execfile\n", " exec(compiler(f.read(), fname, 'exec'), glob, loc)\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn07_C2F_v3.py\", line 36, in \n", " sys.exit(1) # hata nedeniyle programdan cik!\n", "SystemExit: 1\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 1151, in get_records\n", " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 319, in wrapped\n", " return f(*args, **kwargs)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 353, in _fixed_getinnerframes\n", " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", " File \"/usr/lib/python3.6/inspect.py\", line 1490, in getinnerframes\n", " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", "AttributeError: 'tuple' object has no attribute 'tb_frame'\n" ] }, { "ename": "SystemExit", "evalue": "1", "output_type": "error", "traceback": [ "An exception has occurred, use %tb to see the full traceback.\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mSystemExit\u001b[0m\u001b[0;31m:\u001b[0m 1\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn07_C2F_v3.py [1.2]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:Internal Python error in the inspect module.\n", "Below is the traceback from this internal error.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Fahrenheit dereceye donusmesini istediginiz santigrad derece\n", "degerini girmediniz! Lutfen programin adindan sonra bir bosluk birakip \n", "sicakligi santigrad derece cinsinden bir kayan noktali sayi ya da bir tamsayi \n", "formatinda girerek tekrar deneyiniz!\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn07_C2F_v3.py\", line 30, in \n", " C = float(sys.argv[1])\n", "ValueError: could not convert string to float: 'eksialti'\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\", line 2722, in safe_execfile\n", " self.compile if shell_futures else None)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\", line 168, in execfile\n", " exec(compiler(f.read(), fname, 'exec'), glob, loc)\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn07_C2F_v3.py\", line 36, in \n", " sys.exit(1) # hata nedeniyle programdan cik!\n", "SystemExit: 1\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 1151, in get_records\n", " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 319, in wrapped\n", " return f(*args, **kwargs)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 353, in _fixed_getinnerframes\n", " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", " File \"/usr/lib/python3.6/inspect.py\", line 1490, in getinnerframes\n", " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", "AttributeError: 'tuple' object has no attribute 'tb_frame'\n" ] }, { "ename": "SystemExit", "evalue": "1", "output_type": "error", "traceback": [ "An exception has occurred, use %tb to see the full traceback.\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mSystemExit\u001b[0m\u001b[0;31m:\u001b[0m 1\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn07_C2F_v3.py eksialti" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu yöntemde öncelikle argv listesinin birinci elemanının değeri C değişkenine atanmaya çalışılıyor (try bloku). Eğer kullanıcı komut satırı argümanı girmeyi unutmuşsa bu başarılamıyor ve kullanıcıya bir hata mesajı döndürülerek, sys.exit(1) komutu verildiği (except bloku) için programdan çıkılııyor ve bu nedenle programın gerisi çalışmıyor. Kullanıcı komut satırı argümanı girmiş ise C değişkeni değerini alıyor ve except bloğunu atlayarak çalışmaya Fahrenheit derece dönüşümünün hesabıyla devam ediyor ve ekrana çıktı verip, sonlanıyor. \n", "\n", "Başka bir örnekle try - except yönteminin nasıl çalıştığını görelim." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fahrenheit dereceye donusmesini istediginiz santigrad derece degerini nnumerik bir deger olarak girmediniz! Lutfen sicaklik icin santigrad derece cisinden numerik bir deger girerek tekrar deneyiniz!\n", "-----------------------------\n", "25 C = 77 F\n" ] } ], "source": [ "def C2F(C):\n", " return 9/5*C + 32\n", "\n", "sant = '25'\n", "try:\n", " print(\"{:g} C = {:g} F\".format(sant,C2F(sant)))\n", "except:\n", " print(\"Fahrenheit dereceye donusmesini istediginiz santigrad derece degerini nnumerik bir deger olarak girmediniz! Lutfen sicaklik icin santigrad derece cisinden numerik bir deger girerek tekrar deneyiniz!\"\"\")\n", " \n", "sant2 = 25\n", "\n", "print(\"-----------------------------\")\n", "\n", "try:\n", " print(\"{:g} C = {:g} F\".format(sant2,C2F(sant2)))\n", "except:\n", " print(\"Fahrenheit dereceye donusmesini istediginiz santigrad derece degerini nnumerik bir deger olarak girmediniz! Lutfen sicaklik icin santigrad derece cisinden numerik bir deger girerek tekrar deneyiniz!\"\"\")\n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Program $sant = '25'$ için çalıştırıldığında '25' bir string (metin) olduğu için hata verir ve bu nedenle $except$ bloğu çalışırken $sant2 = 25$ için çalıştırıldığında doğru bir şekilde çalışmaktadır." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Python'da Bazı Hata Türleri ##\n", "\n", "IndexError Hatası: Python'da bir dizi değişkenin (liste, demet ya da metin (string)) uzunluğunun ötesinde bir elemana ulaşmaya çalışılınca Python'da bu hata “tetiklenir!”" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9\n" ] }, { "ename": "IndexError", "evalue": "list index out of range", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mveri\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mi\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mveri\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mveri\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m9\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mIndexError\u001b[0m: list index out of range" ] } ], "source": [ "veri = [1.0/i for i in range(1,10)]\n", "print(len(veri))\n", "veri[9]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Benzer şekilde sözlük değişkenlerde bulunmayan bir anathar \"Key Error\" hatası üretecektir." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'15010018': 91, '16010206': 56, '1900254': 34}\n" ] }, { "ename": "KeyError", "evalue": "'12018921'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mnotlar\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"15010018\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m91\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"16010206\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m56\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"1900254\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m34\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnotlar\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mnotlar\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"12018921\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mKeyError\u001b[0m: '12018921'" ] } ], "source": [ "notlar = {\"15010018\":91,\"16010206\":56, \"1900254\":34}\n", "print(notlar)\n", "notlar[\"12018921\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ValueError Hatası: Örneğin bir metin değişkeni noktalı sayıya çevirmek gibi mümkün olmayan dönüşümlerin denenmesi Python'da bir değer hatası tetikler." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "could not convert string to float: '21 C'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'21 C'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mValueError\u001b[0m: could not convert string to float: '21 C'" ] } ], "source": [ "C = float('21 C')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NameError Hatası: Tanımlanmamış bir değişken ismine ulaşılmaya çalışıldığında tetiklenir." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'degisken_adi' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdegisken_adi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'degisken_adi' is not defined" ] } ], "source": [ "print(degisken_adi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ZeroDivisionError Hatası: 0 ile bölme bu hatayı tetikler." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "ename": "ZeroDivisionError", "evalue": "float division by zero", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;36m3.0\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mZeroDivisionError\u001b[0m: float division by zero" ] } ], "source": [ "3.0 / 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "SyntaxError Hatası: Yazımda yapılabilecek herhangi bir hata bu hata türünü tetikler." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "Missing parentheses in call to 'print'. Did you mean print(\"Bu Python bir harika dostum!\")? (, line 1)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m print \"Bu Python bir harika dostum!\"\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m Missing parentheses in call to 'print'. Did you mean print(\"Bu Python bir harika dostum!\")?\n" ] } ], "source": [ "print \"Bu Python bir harika dostum!\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "TypeError Hatası: Uygulanmak istenen İşlem ya da fonksiyona onunla uyumlu olmayan veri türü geçirildiğinde tetiklenir. Aşağıdaki örneği bir metin ve bir tam sayı için denerseniz hata vermez!" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "can't multiply sequence by non-int of type 'float'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"herhangi bir metin\"\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m3.14\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: can't multiply sequence by non-int of type 'float'" ] } ], "source": [ "print(\"herhangi bir metin\"*3.14)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hata Mesajı Vermek ##\n", "\n", "Programda hata oluşturacak bir girdi durumunda kullanıcıya her farklı durum için açıklayıcı birer hata mesajı vermek iyi bir fikirdir. Aşağıdaki örneği inceleyelim. Sıcaklık değerini yanlışlıkla bir metin olarak verdiğimizde kodumuz bunu yorumlayıp bu duruma göre bir hata mesajı üretiyor." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:Internal Python error in the inspect module.\n", "Below is the traceback from this internal error.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Santigrad derece reel ya da tam sayi olarak girilmelidir,\n", "girdiginiz yirmibir bir degiskendir. Lutfen duzeltip tekrar deneyiniz!\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 52, in oku_C\n", " C = float(sys.argv[1])\n", "ValueError: could not convert string to float: 'yirmibir'\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 73, in \n", " C = oku_C()\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 59, in oku_C\n", " \"girdiginiz {:s} bir {:} degiskendir. Lutfen duzeltip tekrar deneyiniz!\".format(sys.argv[1], type(sys.argv[1])))\n", "ValueError: Santigrad derece reel ya da tam sayi olarak girilmelidir,\n", "girdiginiz yirmibir bir degiskendir. Lutfen duzeltip tekrar deneyiniz!\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\", line 2722, in safe_execfile\n", " self.compile if shell_futures else None)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\", line 168, in execfile\n", " exec(compiler(f.read(), fname, 'exec'), glob, loc)\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 76, in \n", " sys.exit(1) # programdan cikis\n", "SystemExit: 1\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 1151, in get_records\n", " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 319, in wrapped\n", " return f(*args, **kwargs)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 353, in _fixed_getinnerframes\n", " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", " File \"/usr/lib/python3.6/inspect.py\", line 1490, in getinnerframes\n", " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", "AttributeError: 'tuple' object has no attribute 'tb_frame'\n" ] }, { "ename": "TypeError", "evalue": "must be str, not list", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36moku_C\u001b[0;34m()\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margv\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: could not convert string to float: 'yirmibir'", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 73\u001b[0;31m \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moku_C\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 74\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36moku_C\u001b[0;34m()\u001b[0m\n\u001b[1;32m 58\u001b[0m (\"Santigrad derece reel ya da tam sayi olarak girilmelidir,\\n\"\\\n\u001b[0;32m---> 59\u001b[0;31m \"girdiginiz {:s} bir {:} degiskendir. Lutfen duzeltip tekrar deneyiniz!\".format(sys.argv[1], type(sys.argv[1])))\n\u001b[0m\u001b[1;32m 60\u001b[0m \u001b[0;31m# C dogru bir sekilde giriliyor ama fiziksel degil!:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: Santigrad derece reel ya da tam sayi olarak girilmelidir,\ngirdiginiz yirmibir bir degiskendir. Lutfen duzeltip tekrar deneyiniz!", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mSystemExit\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36msafe_execfile\u001b[0;34m(self, fname, exit_ignore, raise_exceptions, shell_futures, *where)\u001b[0m\n\u001b[1;32m 2721\u001b[0m \u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mglob\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloc\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2722\u001b[0;31m self.compile if shell_futures else None)\n\u001b[0m\u001b[1;32m 2723\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSystemExit\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\u001b[0m in \u001b[0;36mexecfile\u001b[0;34m(fname, glob, loc, compiler)\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mcompile\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 168\u001b[0;31m \u001b[0mexec\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcompiler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'exec'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mglob\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# hata mesaji\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 76\u001b[0;31m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# programdan cikis\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 77\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSystemExit\u001b[0m: 1", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'run'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'ders08_ornek_kodlar/ders08_orn08_C2F_v4.py yirmibir'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_line_magic\u001b[0;34m(self, magic_name, line, _stack_depth)\u001b[0m\n\u001b[1;32m 2315\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'local_ns'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2316\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2317\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2318\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2319\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, parameter_s, runner, file_finder)\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 187\u001b[0;31m \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 188\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, parameter_s, runner, file_finder)\u001b[0m\n\u001b[1;32m 825\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 826\u001b[0m \u001b[0;31m# regular execution\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 827\u001b[0;31m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 828\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 829\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'i'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mopts\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m()\u001b[0m\n\u001b[1;32m 811\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 812\u001b[0m runner(filename, prog_ns, prog_ns,\n\u001b[0;32m--> 813\u001b[0;31m exit_ignore=exit_ignore)\n\u001b[0m\u001b[1;32m 814\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 815\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m't'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mopts\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36msafe_execfile\u001b[0;34m(self, fname, exit_ignore, raise_exceptions, shell_futures, *where)\u001b[0m\n\u001b[1;32m 2735\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2736\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mexit_ignore\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2737\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshowtraceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexception_only\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2738\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2739\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mraise_exceptions\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mshowtraceback\u001b[0;34m(self, exc_tuple, filename, tb_offset, exception_only, running_compiled_code)\u001b[0m\n\u001b[1;32m 2036\u001b[0m 'the full traceback.\\n']\n\u001b[1;32m 2037\u001b[0m stb.extend(self.InteractiveTB.get_exception_only(etype,\n\u001b[0;32m-> 2038\u001b[0;31m value))\n\u001b[0m\u001b[1;32m 2039\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2040\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mget_exception_only\u001b[0;34m(self, etype, value)\u001b[0m\n\u001b[1;32m 824\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0mexception\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 825\u001b[0m \"\"\"\n\u001b[0;32m--> 826\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mListTB\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstructured_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 827\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 828\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mshow_exception_only\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, context)\u001b[0m\n\u001b[1;32m 703\u001b[0m chained_exceptions_tb_offset, context)\n\u001b[1;32m 704\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mchained_exception_message\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 705\u001b[0;31m + out_list)\n\u001b[0m\u001b[1;32m 706\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 707\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout_list\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, value, tb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1416\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1417\u001b[0m return FormattedTB.structured_traceback(\n\u001b[0;32m-> 1418\u001b[0;31m self, etype, value, tb, tb_offset, number_of_lines_of_context)\n\u001b[0m\u001b[1;32m 1419\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1420\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, value, tb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;31m# Verbose modes need a full traceback\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m return VerboseTB.structured_traceback(\n\u001b[0;32m-> 1318\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb_offset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_lines_of_context\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1319\u001b[0m )\n\u001b[1;32m 1320\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'Minimal'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1184\u001b[0m \u001b[0mexception\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_parts_of_chained_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1185\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mexception\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1186\u001b[0;31m \u001b[0mformatted_exceptions\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_chained_exception_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__cause__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1187\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexception\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: must be str, not list" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn08_C2F_v4.py yirmibir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kodumuza sıcaklık değeri olarak 21 dereceyi komut satırından sağladığımızda ise kodumuz doğru olarak çalışıyor." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "21C = 69.8F\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn08_C2F_v4.py 21" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kodumuza mutlak sıfırın altında bir sıcaklık (örneğin -275 C) verildiğinde ise kodumuz kullanıcıya girdiği sıcaklık değerinin fiziksel bir sıcaklık değeri olmadığını hatırlatıyor." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:Internal Python error in the inspect module.\n", "Below is the traceback from this internal error.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "C=-275 fiziksel bir deger degildir!\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 73, in \n", " C = oku_C()\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 62, in oku_C\n", " raise ValueError(\"C={:g} fiziksel bir deger degildir!\".format(C))\n", "ValueError: C=-275 fiziksel bir deger degildir!\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\", line 2722, in safe_execfile\n", " self.compile if shell_futures else None)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\", line 168, in execfile\n", " exec(compiler(f.read(), fname, 'exec'), glob, loc)\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 76, in \n", " sys.exit(1) # programdan cikis\n", "SystemExit: 1\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 1151, in get_records\n", " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 319, in wrapped\n", " return f(*args, **kwargs)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 353, in _fixed_getinnerframes\n", " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", " File \"/usr/lib/python3.6/inspect.py\", line 1490, in getinnerframes\n", " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", "AttributeError: 'tuple' object has no attribute 'tb_frame'\n" ] }, { "ename": "SystemExit", "evalue": "1", "output_type": "error", "traceback": [ "An exception has occurred, use %tb to see the full traceback.\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mSystemExit\u001b[0m\u001b[0;31m:\u001b[0m 1\n" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn08_C2F_v4.py -275" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Son olarak kullanıcı bir sıcaklık değeri girmezse buna uygun bir mesaj da kod tarafından üretiliyor." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:Internal Python error in the inspect module.\n", "Below is the traceback from this internal error.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Komut satirinda sicaklik santigrad derece olarak girilmelidir!\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 52, in oku_C\n", " C = float(sys.argv[1])\n", "IndexError: list index out of range\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 73, in \n", " C = oku_C()\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 55, in oku_C\n", " (\"Komut satirinda sicaklik santigrad derece olarak girilmelidir!\")\n", "IndexError: Komut satirinda sicaklik santigrad derece olarak girilmelidir!\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\", line 2722, in safe_execfile\n", " self.compile if shell_futures else None)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\", line 168, in execfile\n", " exec(compiler(f.read(), fname, 'exec'), glob, loc)\n", " File \"/home/ozbasturk/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\", line 76, in \n", " sys.exit(1) # programdan cikis\n", "SystemExit: 1\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 1151, in get_records\n", " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 319, in wrapped\n", " return f(*args, **kwargs)\n", " File \"/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\", line 353, in _fixed_getinnerframes\n", " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", " File \"/usr/lib/python3.6/inspect.py\", line 1490, in getinnerframes\n", " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", "AttributeError: 'tuple' object has no attribute 'tb_frame'\n" ] }, { "ename": "TypeError", "evalue": "must be str, not list", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36moku_C\u001b[0;34m()\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margv\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mIndexError\u001b[0m: list index out of range", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 73\u001b[0;31m \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moku_C\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 74\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36moku_C\u001b[0;34m()\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 55\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Komut satirinda sicaklik santigrad derece olarak girilmelidir!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 56\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mIndexError\u001b[0m: Komut satirinda sicaklik santigrad derece olarak girilmelidir!", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mSystemExit\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36msafe_execfile\u001b[0;34m(self, fname, exit_ignore, raise_exceptions, shell_futures, *where)\u001b[0m\n\u001b[1;32m 2721\u001b[0m \u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mglob\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloc\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2722\u001b[0;31m self.compile if shell_futures else None)\n\u001b[0m\u001b[1;32m 2723\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSystemExit\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/utils/py3compat.py\u001b[0m in \u001b[0;36mexecfile\u001b[0;34m(fname, glob, loc, compiler)\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mcompile\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 168\u001b[0;31m \u001b[0mexec\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcompiler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'exec'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mglob\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/Dropbox/dersler/AST415_Astronomide_Sayisal_Cozumleme_I/2021_2022/Ders_08_Veri_Girisi_Hata_Yonetimi/ders08_ornek_kodlar/ders08_orn08_C2F_v4.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# hata mesaji\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 76\u001b[0;31m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# programdan cikis\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 77\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSystemExit\u001b[0m: 1", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'run'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'ders08_ornek_kodlar/ders08_orn08_C2F_v4.py'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_line_magic\u001b[0;34m(self, magic_name, line, _stack_depth)\u001b[0m\n\u001b[1;32m 2315\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'local_ns'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2316\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2317\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2318\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2319\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, parameter_s, runner, file_finder)\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 187\u001b[0;31m \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 188\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, parameter_s, runner, file_finder)\u001b[0m\n\u001b[1;32m 825\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 826\u001b[0m \u001b[0;31m# regular execution\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 827\u001b[0;31m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 828\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 829\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'i'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mopts\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m()\u001b[0m\n\u001b[1;32m 811\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 812\u001b[0m runner(filename, prog_ns, prog_ns,\n\u001b[0;32m--> 813\u001b[0;31m exit_ignore=exit_ignore)\n\u001b[0m\u001b[1;32m 814\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 815\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m't'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mopts\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36msafe_execfile\u001b[0;34m(self, fname, exit_ignore, raise_exceptions, shell_futures, *where)\u001b[0m\n\u001b[1;32m 2735\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2736\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mexit_ignore\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2737\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshowtraceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexception_only\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2738\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2739\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mraise_exceptions\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mshowtraceback\u001b[0;34m(self, exc_tuple, filename, tb_offset, exception_only, running_compiled_code)\u001b[0m\n\u001b[1;32m 2036\u001b[0m 'the full traceback.\\n']\n\u001b[1;32m 2037\u001b[0m stb.extend(self.InteractiveTB.get_exception_only(etype,\n\u001b[0;32m-> 2038\u001b[0;31m value))\n\u001b[0m\u001b[1;32m 2039\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2040\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mget_exception_only\u001b[0;34m(self, etype, value)\u001b[0m\n\u001b[1;32m 824\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m:\u001b[0m \u001b[0mexception\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 825\u001b[0m \"\"\"\n\u001b[0;32m--> 826\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mListTB\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstructured_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 827\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 828\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mshow_exception_only\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, context)\u001b[0m\n\u001b[1;32m 703\u001b[0m chained_exceptions_tb_offset, context)\n\u001b[1;32m 704\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mchained_exception_message\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 705\u001b[0;31m + out_list)\n\u001b[0m\u001b[1;32m 706\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 707\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout_list\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, value, tb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1416\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1417\u001b[0m return FormattedTB.structured_traceback(\n\u001b[0;32m-> 1418\u001b[0;31m self, etype, value, tb, tb_offset, number_of_lines_of_context)\n\u001b[0m\u001b[1;32m 1419\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1420\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, value, tb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;31m# Verbose modes need a full traceback\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m return VerboseTB.structured_traceback(\n\u001b[0;32m-> 1318\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb_offset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_lines_of_context\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1319\u001b[0m )\n\u001b[1;32m 1320\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'Minimal'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1184\u001b[0m \u001b[0mexception\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_parts_of_chained_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1185\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mexception\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1186\u001b[0;31m \u001b[0mformatted_exceptions\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_chained_exception_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__cause__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1187\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexception\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: must be str, not list" ] } ], "source": [ "%run ders08_ornek_kodlar/ders08_orn08_C2F_v4.py" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Alıştırmalar #\n", "\n", "## A. Sorular ##\n", "\n", "1. Kullanıcıdan aldığnız bir sayısal değeri (tam ya da kayan noktalı sayı), $ y = 3 x^{4} - 2 x^{2} - x + 1$ polinomunda $x$ yerine koyarak, polinomdaki değerini hesaplayınız ve kullanıcıya sonucu gösteriniz. Kullanıcının $x$ için sayısal tek bir değer dışında (metin, liste, dizi gibi) bir türden değer girmesi durumunda kodunuzun nasıl çalıştığını anlatan bir mesajla uyarınız ve programdan çıkınız. Bu amaçla $try - except$ blokları yapısını kullanınız.\n", "\n", "2. Kullanıcının komut satırından gireceği herhangi basit bir matematiksel ifadeyi ve yine kullanıcı tarafından girilecek bir değişken ($x$) için çalıştırarak sonucu ekrana getiren bir Python programı yazınız. Kodunuzun bir örnek çalışması aşağıdaki gibi olmaldıır.\n", "\n", "Örnek Çalışma:
\n", "Formul giriniz: 2*x - 1
\n", "x degerini giriniz: 5
\n", "x = 5 degeri icin 2*x - 1 = 9.0\n", "\n", "3. Dikey atış formülünde ilk hız ($V_0$) ve zaman değerlerini kullanıcıdan tam veya kayan noktalı sayı olarak alan (diğer türler için $ValueError$ hatası uyandırmalı ve programdan çıkmalıdır), bu değerlere dayanarak ve \n", "\n", "$$ y = V_0 t - \\frac{1}{2} g t^2 $$\n", "\n", "formülünü kullanarak cismin düşey konumunu hesaplayan ($y$) ekrana getiren bir Python kodu yazınız. Burada $g = 9.81 m/s^2$ 'dir. Ayrıca topun havada kaldığı süreyi ve çıktığı maksimum yüksekliği de hesaplayarak kullanıcıya gösteriniz. y'nin negatif değerler alamayacağı yerden (y = 0) atışları dikkate alarak; bu durumlarda kullanıcının girdiği değerlerin bir dikey atış için uygun olmadığını belirten bir hata mesajıyla programdan çıkılmasını sağlayınız.\n", "\n", "4. Kullanıcıdan bir takvim gününün sırasıya gün (GG), ay (AA) ve yıl değerlerini (YYYY), \"YYYY-AA-GG\" formatında girmesi durumunda, tarihi alan ve ilgili günün haftanın hangi gününe (Pazartesi, Salı gibi) geldiğni gösteren bir Python programı yazınız. Bu format ve tür dışındaki girdileri kabul etmeyiniz ve kullanıcıya bir mesajla bu durumu belirterek programdan çıkınız. Haftanın gününü belirlemek üzere öncelikle kullanıcıdan gelen girdiyi `datetime` modülünü import ederek $datetime.datetime.strptime()$ fonksiyonuyla $datetime$ nesnesine dönüştürünüz. \n", "\n", "Örnek:
\n", "tarih = 2021-01-01
\n", "tarih = datetime.datetime.strptime(tarih, \"%Y-%m-%d\")
\n", "\n", "Ardından Python'ın $datetime$ modülü $datetime$ nesnesi modülü metotlarından $weekday$ 'i kullanınız. Bu size tam sayı olarak (Pazartesi:0, Sali: 1, ..., Pazar:6) haftanın gününü verecektir. Bulduğunuz günü Türkçe ifadesiyle ekrana yazdırınız. Örnek bir çalışmayı aşağıda bulabilirsiniz.\n", "\n", "Örnek Çalışma:
\n", "Tarihi giriniz: 2021-01-04
\n", "2021-01-04 bir Pazartesi gunudur.\n", "\n", "\n", "## B. Wien Kayma Yasası Örneği ##\n", "\n", "Bir karacismin maksimum ışınım yaptığı dalgaboyu ($\\lambda_{max}$) ile sıcaklığı ($T$) arasındaki ilişki aşağıdaki şekilde ifade edilebilir. Bu ifade Wien Kayma Yasası olarak bilinir.\n", "\n", "$$ \\lambda_{max} = \\frac{0.002829 [m K]}{T [K]} $$\n", "\n", "1. Bir karacisimin maksimum ışınım yaptığı dalgaboyunu metre biriminde kullanıcıdan girmesini isteyen ve kullanıcıdan aldığı dalgaboyunu kullanarak Kelvin biriminde sıcaklığını ekrana yazdıran bir Python programı yazınız.\n", "\n", "2. Birinci soruda yazdığınız programı biraz daha geliştirmek üzere, metre birmininde kendisine gönderilen bir karacismin maksimum ışınım yaptığı dalgaboyunu kullanarak Kelvin biriminde sıcaklığını hesaplayan ve çağrıldığı yere döndüren, $wien$ adında bir Python fonksiyonu yazınız. Fonksiyonunuz kayan noktalı ya da tamsayı, liste, demet değişken ve numpy dizileri olarak kendisine gönderilen dalgaboyu değer(ler)ine uygun olarak hesap yapmalı ve aynı türde geri döndürmelidir.\n", "\n", "3. İkinci sorudaki çözümünüze uygun olarak kullanıcıdan dalgaboyunu yine metre (metre) biriminde ve nümerik olarak, ancak istediği türde (tam ya da kayan noktalı sayı, liste, demet ya da dizi) girmesini isteyen bir mesajla veri girişi isteyiniz. Aldığınız veriyi fonksiyonunuza gönderiniz ve fonksiyondan dönen sonuçları ekrana düzgün bir şekilde yazdırınız.\n", "\n", "4. Üçüncü soru için yazdığınız kodunuzu geliştirmek üzere kullanıcı eğer \n", "\n", "a) hiç bir veri girişi sağlamaz ya da istenen uygun türler dışında bir veri gönderdiğinde (sözlük ya da metin) kodunuzu nasıl kullanacağını anlatan basit bir mesajı ekrana gösterip çıkan;\n", "\n", "b) liste ya da demet değişken dahilinde sayısal olmayan değerler de gönderdiğinde bu durumu kullanıcıya anlatan bir metni ekranına getirerek ne yapması gerektiğini anlatan basit bir mesajı ekrana gösterip çıkan;\n", "\n", "c) doğru şekilde girilen bir türdeki verinin fonksiyonunuzdaki karşılığını hesapladıktan sonra ekrana düzgün bir şekilde ekrana getiren bir Python programı yazınız.\n", "\n", "5. Programınız daha da geliştirmek üzere gönderilen dalgaboyunun elektromanyetik spektrumun hangi dalgaboyu bölgesine denk geldiğini hesaplayan bir fonksiyon daha yazınız. Kullanıcıya söz konusu karacismin ışınımının maksimumunu hangi dalgaboyu bölgesinde yaptığını da ekrana yazdırarak sağlaynız. Dalgaboyu bölgelerini belirlemek üzere ilgili [wikipeida](https://tr.wikipedia.org/wiki/Elektromanyetik_spektrum#:~:text=Elektromanyetik%20tayf%20veya%20elektromanyetik%20spektrum,r%C3%B6latif%20yerlerini%20ifade%20eden%20%C3%B6l%C3%A7%C3%BCt.) linkine başvurabilirsiniz.\n", "\n", "6. Kodunuzla aynı yerde oluşturuacağınız veri_dosyalari klasörüne almanız gereken [tayfsal_tur_sicaklik_kalibrasyonu.dat](veri_dosyalari/tayfsal_tur_sicaklik_kalibrasyonu.dat) dosyasını okumak üzere açınız. Karacisim(ler)in sıcaklık değerine eşit yüzey sıcaklığındaki bir yıldızın dosyanın $T$ sütunundaki sıcaklık değerine uygun olarak, $TayfTuru$ sütununda verilen hangi tayf tür ya da türlerine (liste, demet ya da diziler için) karşılık geldiğini bulunuz ve ekrana yazdırınız.\n", "\n", "[Alıştırma Sorularının Cevapları](Ders08_Veri_Girisi_Hata_Yonetimi_Alistirmalar.ipynb)\n", "\n", "[Başa Dön](#Bu-derste-neler-öğreneceksiniz?)" ] } ], "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.9" } }, "nbformat": 4, "nbformat_minor": 2 }