{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Karakter Dizileri (Stringler)\n", "Tekrardan Hoşgeldiniz ! Bu konuda stringleri öğrenmeye çalışacağız.Pythonda bir veri tipi olan Stringler veya Türkçe ismiyle karakter dizileri gerçek hayatta kullandığımız **yazıların** aynısıdır.Bu veri tipi aslında her biri bir karakter olan bir dizidir. Örnek olarak, \"ali\" stringi sırasıyla a,l,i harflerinden veya karakterlerden oluşmaktadır. Bu konuda stringleri ve stringlerin özelliklerini görmeye çalışacağız.\n", "\n", "### String Oluşturma\n", "Python'da string oluşturmanın birçok yolu bulunmaktadir.Bunların hangisini kullanacağınız tamamıyla size bağlıdır.İsterseniz string oluşturma işlemlerini görmeye çalışalım.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Mustafa Murat Coşkun'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Tek tırnak ile\n", "'Mustafa Murat Coşkun'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Mustafa Murat Coşkun'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Çift Tırnak ile\n", "\"Mustafa Murat Coşkun\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Mustafa Murat Coşkun'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 3 tırnak ile\n", "\"\"\"Mustafa Murat Coşkun\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Burada dikkat etmemiz gereken nokta, eğer bir çift tırnak ile oluşturacaksak, stringin oluşturulması bitirmeyi yine çift tırnak ile yapmalıyız.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "EOL while scanning string literal (, line 2)", "output_type": "error", "traceback": [ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m \"Merhaba'\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m EOL while scanning string literal\n" ] } ], "source": [ "# Hatalı Kod\n", "\"Merhaba'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "EOL while scanning string literal (, line 2)", "output_type": "error", "traceback": [ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m 'Merhaba\"\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m EOL while scanning string literal\n" ] } ], "source": [ "# Hatalı Kod\n", "'Merhaba\"\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Peki şu şekilde bir stringi Pythonda nasıl tanımlarız: **Murat'ın bugün dersi var.**" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m 'Murat'ın bugün dersi var.\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "'Murat'ın bugün dersi var." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gördüğümüz gibi kodumuz sıkıntı çıkarttı. Çünkü karşılaştığı ilk **'** işaretini bitirme işareti olarak algıladı. Ancak şöyle bir kullanım sıkıntı yaratmayacaktır." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"Murat'ın bugün dersi var\"" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"Murat'ın bugün dersi var\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Şimdi de bir tane string veri tipinde değişken oluşturalım. Stringler de bir veri tipi oldukları için bunlardan değişken oluşturup kullanabiliriz." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Merhaba'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = \"Merhaba\"\n", "a" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Naber iyi misin ?'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "naber = \"Naber iyi misin ?\"\n", "naber" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### String Indeksleme ve Parçalama" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Stringler birer karakter dizileri oldukları için her bir karakterin aslında string içinde bir yeri vardır. Örnek olarak **\"ali\"** stringinde a,l ve i karakterlerinin yerleri **indeks** olarak adlandırılır.Pythonda ve genellikle çoğu programlama dilinde (Octave hariç) stringlerin indekslenmesi **\"0\"** dan başlamaktadır. Şimdi isterseniz bir string içindeki karakterlere **indeks** yoluyla nasıl ulaşacağımıza bakalım.\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'a'" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 0. elemana ulaşalım . Bunun için [] operatörünü kullanacağız.\n", "a = \"ali\"\n", "a[0]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'l'" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 1.eleman\n", "a[1]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'i'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pythonda stringler baştan olduğu gibi sondan da indekslenebilirler. Sondan başlayarak -1,-2 ... şeklinde indekslenirler" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'t'" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Sondaki eleman \"-1\" eleman\n", "a = \"murat\"\n", "a[-1]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'a'" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-2]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'r'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-3]" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'u'" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-4]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'m'" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Peki uzun bir string'in sadece belirli bir kısmını elde etmek için ne yapacağız ? Bunun için **indeksleri**, **:** ve **[]** işaretini kullanacağız. Formülümüz şu şekilde ;\n", "\n", "*[başlama indeksi : bitiş indeksi : atlama değeri]*\n", "\n", "İsterseniz örneklerimize bakalım." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = \"Python Programlama Dili\"\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'on Pro'" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 4. indeksten başla 10.indekse kadar(dahil değil) al.\n", "a[4:10]" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Python Pro'" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Başlangıç değeri belirtilmemişse en baştan başlayarak alır.\n", "a[:10]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'on Programlama Dili'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Bitiş değeri belirtilmemişse en sonuna kadar alır.\n", "a[4:]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Python Programlama Dili'" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# İki değer de belirtilmemişse tüm stringi al.\n", "a[:]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Python Programlama Dil'" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Son karaktere kadar al.\n", "a[:-1]" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Pto rgalm ii'" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Baştan sona 2 değer atlaya atlaya stringi al.\n", "a[::2]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'oPg'" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 4.indeksten 12'nci indekse 3'er atlayarak stringi al.\n", "a[4:12:3]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'iliD amalmargorP nohtyP'" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Baştan sona -1 atlayarak stringi al. (String'i ters çevirme)\n", "a[::-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### String Özellikleri" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bir string'in uzunluğunu nasıl buluruz ? Bunun için Python'da *len()* fonksiyonu bulunmaktadır." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "23" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# len() fonksiyonunu kullanma.\n", "a = \"Python Programlama Dili\"\n", "len(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Peki sizce bir string'in belli bir karakterini direkt olarak değiştirebilir miyiz ? Hemen bir deneme yapalım.\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = \"Murat\"" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'str' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Biraz ilkokulluyum değil mi :) Ancak Python buna izin vermiyor Allahtan :)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0ma\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'T'\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mTypeError\u001b[0m: 'str' object does not support item assignment" ] } ], "source": [ "# Biraz ilkokulluyum değil mi :) Ancak Python buna izin vermiyor Allahtan :)\n", "a[0] = 'T'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Burada Python bu işleme izin vermedi. Gördüğümüz gibi, bir string'in karakterlerini **direkt** olarak değiştiremiyoruz.Çünkü stringler böyle bir işlemi desteklemiyor.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Peki, Pythonda stringler toplanabiliyor mu ? Python'da bunu yapmak da mümkündür.\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Python Programlama Dili'" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Stringleri toplayalım yani birbirine ekleyelim.\n", "a = \"Python \"\n", "b = \"Programlama \"\n", "c = \"Dili\"\n", "a + b + c" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Mustafa Murat Coşkun'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = \"Mustafa \" \n", "a = a + \"Murat Coşkun\" # Burada stringleri birleştirerek yine a değişkenine atıyoruz. \n", "a\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bir string ile bir sayıyı da çarpabiliriz.\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'PythonPythonPython'" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Python * 3 aslında Python + Python + Python işlemine eşdeğerdir.\n", "\"Python\" * 3" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Stringler konusu şimdilik bu kadar ! İleriki konularımızda stringlerimize tekrardan döneceğiz ve güzel özelliklerine bakma imkanına sahip olacağı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 }