{"id":10815,"date":"2018-02-16T23:19:33","date_gmt":"2018-02-17T04:19:33","guid":{"rendered":"https:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=10815"},"modified":"2018-10-16T05:14:03","modified_gmt":"2018-10-16T09:14:03","slug":"14-tr-methods","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/14-tr-methods\/","title":{"rendered":"14: Metotlar"},"content":{"rendered":"<!-- Please retain this notice and add more notes if you create a new version.<br \/>\nOriginal lesson author: David Pritchard, daveagp@gmail.com, http:\/\/cscircles.ca<br \/>\nLicense: http:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/-->\n<p>\u015eu ana kadar Python'daki iki veri yap\u0131s\u0131n\u0131 g\u00f6rd\u00fck: stringler ve listeler. Bu iki yap\u0131 da, fonksiyonlar\u0131n varyantlar\u0131 olan baz\u0131 metotlar\u0131 desteklemektedir.<\/p>\n<p>Mesela <code>reverse()<\/code>\u00a0metodu\u00a0<code>list<\/code>\u00a0 ile kullanabilece\u011fimiz bir metottur. \u0130sminden anla\u015f\u0131labilece\u011fi gibi bu, liste elementlerini tersten (yani ilk element en sona, son element en ba\u015fa gelecek \u015fekilde) s\u0131ralama metodudur. Bu metodu \u00e7a\u011f\u0131rmak i\u00e7in nokta ( . ) kullanarak \u015f\u00f6yle bir yap\u0131 olu\u015ftururuz:<\/p>\n<p style=\"text-align: center;\"><code>\u00abnesneAd\u0131\u00bb.\u00abmetodunAd\u0131\u00bb(\u00abarg\u00fcman listesi, e\u011fer varsa\u00bb)<\/code><\/p>\n<p>Kar\u015f\u0131la\u015ft\u0131rmak \u00fczere, fonksyionlar\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131makta kulland\u0131\u011f\u0131m\u0131z sentaks\u0131 hat\u0131rlayal\u0131m<\/p>\n<p style=\"text-align: center;\"><code>\u00abfonksiyonAd\u0131\u00bb(\u00abarg\u00fcman listesi, e\u011fer varsa\u00bb)<\/code><\/p>\n<p>Bir liste \u00fczerinde\u00a0<code>reverse<\/code> metodunu kulland\u0131\u011f\u0131m\u0131z bir \u00f6rne\u011fe bakal\u0131m.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform0\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox0'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Bir listeyi tersine \u00e7evirmek.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nL = [1, 2, 3, 4, 5]\nL.reverse()\nprint(L)<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"a68c9120529207772697ad707aa355dd\"\/>\n<div id='pbresults0' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit0\").value = \"Run program\";document.getElementById(\"inputInUse0\").value = \"N\";<\/script>\n<\/p>\n<p>Arg\u00fcman olarak\u00a0<code>str.startswith<\/code>\u00a0alan bir metoda bakal\u0131m:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox1'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Baz\u0131 string metotlar\u0131.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nprint('piece of cake'.startswith('pie'))\nprint('red'.startswith('blue'))<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit1' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(1)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(1,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse1\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"1\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"0df932323286e8bc030de657906c3b21\"\/>\n<div id='pbresults1' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit1\").value = \"Run program\";document.getElementById(\"inputInUse1\").value = \"N\";<\/script>\n<\/p>\n<h2>Pek \u00e7ok metot<\/h2>\n<p>A\u015fa\u011f\u0131da\u00a0liste ve string s\u0131n\u0131flar\u0131nda en s\u0131k kullan\u0131lan metotlar\u0131 g\u00f6receksiniz. Bu metotlar\u0131n yapt\u0131\u011f\u0131 i\u015flemler sizin de yazabiliyor olman\u0131z gereken \u00e7\u00f6z\u00fcmler, ama standart metotlar\u0131 kullanmak kodunuzun yaz\u0131lmas\u0131n\u0131, okunmas\u0131n\u0131 ve d\u00fczenlenmesini kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>Listeler<\/h3>\n<p>Bu metotlar listenizi de\u011fi\u015ftirmez:<\/p>\n<ul>\n<li><code>list.index(X)<\/code>: Listede\u00a0\u00a0<code>X<\/code>\u00a0eleman\u0131n\u0131 bulmak. \u00d6zellikle, bu <code>list[i]==X<\/code>\u00a0listeyi tarayarak <code>i\u00a0<\/code>eleman\u0131n\u0131 getirir. En k\u00fc\u00e7\u00fck\u00a0\u00a0<code>i<\/code> getirilir. E\u011fer listede\u00a0<code>X<\/code>\u00a0bulunmuyorsa, bu <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=L%3D%5B0%2C%201%2C%202%5D%0Aprint%28L.index%283%29%29\" target=\"_blank\"><code>ValueError<\/code>\u00a0de\u011fer hatas\u0131na sebep olur.<\/a>.\n<ul>\n<li>E\u011fer\u00a0<code>X<\/code> listede yer al\u0131yorsa\u00a0<code>X in list<\/code>\u00a0yap\u0131s\u0131<code>True<\/code>, yer alm\u0131yorsa \u00a0<code>False<\/code>\u00a0 sonucunu getirir. Bunu kullanmakla\u00a0<code>ValueError<\/code>hatas\u0131ndan ka\u00e7\u0131n\u0131labilir. (<code>in<\/code>\u00a0bir i\u015flemcidir, metot de\u011fildir.)<\/li>\n<\/ul>\n<\/li>\n<li><code>list.count(X)<\/code>:\u00a0<code>X<\/code>\u00a0eleman\u0131n\u0131n listede ka\u00e7 kez yer ald\u0131\u011f\u0131n\u0131 getirir.<\/li>\n<\/ul>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox2'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Liste metotlar\u0131.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nL = [3, 1, 4, 1, 5, 9]\nprint(L.index(9))\nprint(L[L.index(3)])\nprint(L.count(1))<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit2' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(2)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(2,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse2\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"2\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"9993f511a43e0c4b83307fc954f7eeb2\"\/>\n<div id='pbresults2' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit2\").value = \"Run program\";document.getElementById(\"inputInUse2\").value = \"N\";<\/script>\n<\/p>\n<p>\u015eu metotlar listeyi de\u011fi\u015ftirir:<\/p>\n<ul>\n<li><code>list.append(X)<\/code> metodu <code>list<\/code> listesinin sonuna <code>X<\/code> eleman\u0131n\u0131 ekler.<\/li>\n<li><code>list.insert(i, X)<\/code> metodu <code>X<\/code> eleman\u0131n\u0131 <code>i<\/code> konumuna yerle\u015ftirir.<\/li>\n<li><code>list.extend(L)<\/code> metodu listenin sonuna <code>L<\/code> listesindeki elemanlar\u0131 ekler.<\/li>\n<li><code>list.remove(X)<\/code> metodu <code>X<\/code> eleman\u0131n\u0131 ik bulundu\u011fu yerden siler.<\/li>\n<li><code>list.pop(i)<\/code> metodu <code>list[i]<\/code>\u00a0eleman\u0131n\u0131; <code>list.pop()<\/code>\u00a0ise en sondaki eleman\u0131 siler ve getirir.<\/li>\n<li><code>del list[i]<\/code> metodu <code>list<\/code> listeinin <code>i<\/code> indeksinde yer alan eleman\u0131 siler (Bu bir \"<code>del<\/code> ifadesi\"dir, metot de\u011fildir.)<\/li>\n<li><code>list.reverse()<\/code>\u00a0listeyi tersine \u00e7evirir.<\/li>\n<li><code>list.sort()<\/code>\u00a0listeyi d\u00fczene sokar.<\/li>\n<\/ul>\n<p>Yukar\u0131daki metotlar\u00a0<code>pop<\/code> hari\u00e7\u00a0<code>None<\/code>\u00a0sonucunu getirir. Bu fonksiyonlar biraz farkl\u0131 arg\u00fcmanlarla da \u00e7a\u011fr\u0131labilir; t\u00fcm detaylar\u0131 g\u00f6rmek i\u00e7in\u00a0 Python kaynaklar\u0131ndan\u00a0<a href=\"http:\/\/docs.python.org\/py3k\/library\/stdtypes.html#mutable-sequence-types\">liste metotlar\u0131n\u0131<\/a>\u00a0inceleyebilirsiniz. Listeler ayn\u0131 zamanda \"dilim\" dedi\u011fimiz listelerin par\u00e7alara ayr\u0131lmas\u0131yla alt aral\u0131klarda silme ve yerle\u015ftirme i\u015flemlerine olanak sa\u011flar, t\u0131pk\u0131\u00a0<a href=\"\/7a-strings\/\">\u00f6nceki<\/a>\u00a0<a href=\"\/12-tips\/\">derslerde<\/a> g\u00f6rd\u00fc\u011f\u00fcm\u00fcz\u00a0<code>string[x:y:z]<\/code> notasyonu gibi.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox3'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Yer De\u011fi\u015ftirmeler<\/span><\/div><code>index<\/code>\u00a0ve di\u011fer liste metotlar\u0131n\u0131 kullanarak,\u00a0\u00a0<code>replace(list, X, Y)<\/code>\u00a0fonksiyonu yaz\u0131n. Bu fonksiyon\u00a0\u00a0<code>list<\/code>\u00a0 i\u00e7erisindeki\u00a0\u00a0<code>X<\/code>\u00a0elman\u0131n\u0131n\u0131 <code>Y<\/code>\u00a0ile de\u011fi\u015ftirsin. Mesela, listemiz\u00a0<code>L = [3, 1, 4, 1, 5, 9]<\/code>\u00a0olsun,\u00a0<code>replace(L, 1, 7)<\/code>\u00a0fonksiyonunun yapaca\u011f\u0131 i\u015flemle liste i\u00e7eri\u011fi\u00a0<code>L<\/code>\u00a0to\u00a0<code>[3, 7, 4, 7, 5, 9]<\/code>olmal\u0131.\u00a0 Al\u0131\u015ft\u0131rmay\u0131 zorla\u015ft\u0131ral\u0131m;\u00a0<code>[]<\/code>\u00a0kullanmak yok. <br\/>Not:\u00a0<code>return<\/code>\u00a0 kullanman\u0131za gerek yok.<a class=\"hintlink\"  id=\"hintlink4\">\u0130pucu<\/a><div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=20   class='pyboxCode RW'>\ndef replace(list, X, Y):\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory3' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput3\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode3' value='def replace(list, X, Y):\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit3' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch3\" value=\"Input Switch\" onclick=\"pbInputSwitch(3,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(3)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(3,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect3' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(3,'14.replace')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(3,descape($('#defaultCode3').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(3);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse3\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"3\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"1aeb0f6ab14035a4dc24e9db8121a6a8\"\/>\n<div id='pbresults3' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(3);});pbInputSwitch(3,\"Y\");<\/script>\n<\/p>\n<h2>Stringler<\/h2>\n<p>Listelerede kulland\u0131\u011f\u0131m\u0131z\u00a0\u00a0<code>in<\/code>,\u00a0<code>index<\/code>\u00a0ve\u00a0<code>count<\/code>\u00a0yap\u0131lar\u0131n\u0131 stringlerle de kullanabiliriz. They are even more powerful, since they work with substrings too and not just finding individual characters:<\/p>\n<ul>\n<li><code>S in T<\/code>\u00a0bir bool'dur ve\u00a0\u00a0<code>S<\/code>\u00a0stringinin\u00a0\u00a0<code>T<\/code> i\u00e7erisinde yer al\u0131p almad\u0131\u011f\u0131n\u0131 kontrol eder<\/li>\n<li><code>S.index(T)<\/code> <code>T<\/code> altstringinin <code>S<\/code> indeksini verir<\/li>\n<li><code>S.count(T)<\/code> <code>S<\/code> stringi i\u00e7inde yer alan <code>T<\/code> substringinin ka\u00e7 kez ge\u00e7ti\u011finin say\u0131s\u0131n\u0131 verir<\/li>\n<\/ul>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox5'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Stringlerde <code>index<\/code> ve <code>count<\/code> bulmak.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nprint(\"marmara\".count(\"ma\"))\nprint(\"bir substringi bul\".index(\"substring\"))\nprint(\"al\u0131k\" in \"kalabal\u0131k\")<\/textarea><\/div>\n<div id='pbhistory5' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit5' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(5)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(5,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse5\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"5\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"249814854125cc5f910ae29b3d9cfba4\"\/>\n<div id='pbresults5' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit5\").value = \"Run program\";document.getElementById(\"inputInUse5\").value = \"N\";<\/script>\n<\/p>\n<p>En \u00e7ok kullan\u0131lan <code>str<\/code> metotlar\u0131ndan baz\u0131lar\u0131:<\/p>\n<ul>\n<li>B\u00fcy\u00fck-k\u00fc\u00e7\u00fck harf: <code>capitalize, lower, upper, islower, isupper<\/code><\/li>\n<li>Karakter: <code>isalpha, isdigit<\/code><\/li>\n<li>Hizalama: <code>center, ljust, rjust<\/code>; <code>strip<\/code>\u00a0hizalamay\u0131 siler<\/li>\n<li>Alt stringler:\u00a0<code>endswith, startswith, find, replace<\/code><\/li>\n<li>Ay\u0131rma: <code>split, splitlines<\/code><\/li>\n<\/ul>\n<p>Yeri geldik\u00e7e bunlar\u0131 daha ayr\u0131nt\u0131l\u0131 a\u00e7\u0131klayaca\u011f\u0131z. Bunlar\u0131n detayl\u0131 ve eksiksiz listesini\u00a0<a href=\"http:\/\/docs.python.org\/py3k\/library\/stdtypes.html#string-methods\">string metotlar\u0131<\/a> olarak Python kaynakalr\u0131ndan inceleyebilirsiniz.<\/p>\n<p><strong>Stringler de\u011fi\u015ftirilemez<\/strong>. Yukar\u0131da listeleri ters y\u00fcz eden <code>list.reverse()<\/code> yap\u0131s\u0131n\u0131 g\u00f6rm\u00fc\u015ft\u00fck, stringler i\u00e7in <code>str.reverse()<\/code> gibi metot s\u00f6z konusu de\u011fildir. Bunun sebebi stirnglerin de\u011fi\u015ftirilemez olu\u015fudur. 17. derste bunun hakk\u0131nda biraz daha konu\u015faca\u011f\u0131z.<\/p>\n<p>String metotlar\u0131 hakk\u0131nda bir \u00f6rne\u011fe bakal\u0131m: <code>S.replace(eski, yeni)<\/code> <code>S<\/code>'yi\u00a0<code>eski<\/code> substringi (altstringi) yerine <code>yeni<\/code> yazararak de\u011fi\u015ftirir. Eskini de\u011fi\u015ftirmeksizin yeni bir strign olu\u015fturur:<br \/>\n<form class=\"pbform\" action=\"#\" id=\"pbform6\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox6'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Example: <code>replace<\/code> yeni string getirir ve orijinali de\u011fi\u015ftirmez.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nname = 'Bob Jones'\nnewName = name.replace('Bob', 'Robert')\nprint(name)\nprint(newName)<\/textarea><\/div>\n<div id='pbhistory6' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit6' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(6)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(6,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse6\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"6\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"c3953c67584745ca9939e83eeb7dcd45\"\/>\n<div id='pbresults6' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit6\").value = \"Run program\";document.getElementById(\"inputInUse6\").value = \"N\";<\/script>\n<\/p>\n<p>Bir sonraki al\u0131\u015ft\u0131rma i\u00e7in \u015fu metotlar kullan\u0131\u015fl\u0131 olacak:<\/p>\n<ul>\n<li><code>str.replace<\/code>, \u015fimdi g\u00f6rd\u00fc\u011f\u00fcm\u00fcz metot<\/li>\n<li>boolean metodu olan\u00a0<code>str.isalpha()<\/code>\u00a0e\u011fer <code>str<\/code> stringi (veya karakter) sadece harflerden olu\u015fuyorsa <code>True<\/code> sonucunu verir<\/li>\n<li>bir ba\u015fka boolean metodu <code>str.isdigit()<\/code>\u00a0e\u011fer <code>str<\/code> stringi (veya karakter) sadece rakamlardan olu\u015fuyorsa <code>True<\/code> sonucunu verir\u00a0<code>True<\/code>\u00a0if<\/li>\n<li><code>str.upper()<\/code> metodu <code>str<\/code> stringindeki karakterlerin hepsini b\u00fcy\u00fck harfle yazar.<\/li>\n<\/ul>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform7\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox7'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Posta Kodlar\u0131<\/span><\/div><code>S<\/code>'in <em>ge\u00e7erli<\/em> bir posta kodu olup olmad\u0131\u011f\u0131n\u0131 kontrol eden bir <code>postalValidate(S)<\/code> fonksiyonu yaz\u0131n: <\/p>\n<ul>  \t<\/p>\n<li>\u00f6nce, t\u00fcm bo\u015fluklar\u0131 sil;<\/li>\n<p>  \t<\/p>\n<li>kalanlar\u00a0<code>L#L#L#<\/code>\u00a0\u015feklinde,\u00a0<code>L<\/code>\u00a0yerine harf (k\u00fc\u00e7k harf- b\u00fcy\u00fck harf farketmez) ve<code>#<\/code>\u00a0yerine de say\u0131lar olmal\u0131.<\/li>\n<p> <\/ul>\n<p> E\u011fer <code>S<\/code> ge\u00e7erli bir posta kodu de\u011filse <code>False<\/code> boolean terimini versin. E\u011fer S ge\u00e7erli ise, ayn\u0131 posta kodunu t\u00fcm <code>L<\/code>'ler b\u00fcy\u00fck olacak \u015fekilde <code>L#L#L#<\/code> format\u0131nda yazd\u0131rs\u0131n.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory7' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput7\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit7' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch7\" value=\"Input Switch\" onclick=\"pbInputSwitch(7,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(7)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(7,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect7' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(7,'14.postal')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(7);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse7\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"7\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"7aa854915a3e28289273dc8b53a47fb1\"\/>\n<div id='pbresults7' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(7);});pbInputSwitch(7,\"Y\");<\/script>\n<\/p>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> Dersin devam\u0131nda, gelecek derserde fazla ihtiya\u00e7 duymayaca\u011f\u0131n\u0131z teknik bilgiler bulunuyor. <\/span><\/td><\/table><\/p>\n<h3>Nesneler Hakk\u0131nda<\/h3>\n<p>Python bilginiz artt\u0131k\u00e7a, string ve listelerdan ba\u015fka s\u0131n\u0131flar oldu\u011funu da g\u00f6receksiniz. \u0130\u015finize yarayabilecek di\u011ferleri;\u00a0<em>file objects (dosya nesneleri)<\/em>, <em>sets (setler)<\/em>\u00a0ve\u00a0<em>dictionaries (s\u00f6zl\u00fckler)<\/em>. Hepsinde kullan\u0131\u015fl\u0131 metotlar var. Python'a mevcut nesneye ait b\u00fct\u00fcn metotlar\u0131\u00a0<code>dir<\/code> fonksiyonunu kullanarak sorabilirsiniz:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform8\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox8'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>\u00a0<code>str<\/code> i\u00e7in ge\u00e7erli metotlar. G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi\u00a0<code>startswith<\/code>\u00a0\u00e7\u0131ktlardan birisi.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode8' id='usercode8'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nmyName = 'Jim'\nprint(dir(myName))<\/textarea><\/div>\n<div id='pbhistory8' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit8' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(8)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(8,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse8\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"8\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"b61570b2b95b30ad8670236bea6a68b9\"\/>\n<div id='pbresults8' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit8\").value = \"Run program\";document.getElementById(\"inputInUse8\").value = \"N\";<\/script>\n<\/p>\n<p>Bir nesnenin \u00f6zelliklerine (properties) bakmak\u00a0<em>introspection (i\u00e7g\u00f6zlem)<\/em>\u00a0olarak adland\u0131r\u0131l\u0131r. Python'da t\u00fcm nesnelerin metotlar\u0131 vard\u0131r:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform9\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox9'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div> Bir\u00a0<code>int<\/code>\u00a0d\u00e2hilindeki \u00fcyeler.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode9' id='usercode9'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nx = 42\nprint(dir(x)) # 'bit_length', i\u00e7eriyor \nprint(x.bit_length()) # bir int metodu<\/textarea><\/div>\n<div id='pbhistory9' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit9' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(9)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(9,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse9\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"9\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"4cf293731ffc9d3f37947bd65578868b\"\/>\n<div id='pbresults9' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit9\").value = \"Run program\";document.getElementById(\"inputInUse9\").value = \"N\";<\/script>\n<\/p>\n<p><code>dir<\/code>\u00a0i\u00e7erisindeki baz\u0131 giri\u015fler asl\u0131nda metot de\u011fil \u00fcye de\u011fi\u015fkenlerdir (<em>member variables), <\/em>mesela<em>\u00a0<\/em>\u00a0\u00a0<code>int.denominator<\/code>\u00a0bir fonksiyon de\u011fil bir say\u0131d\u0131r. Teknik olarak, <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=def%20f%28%29%3A%20return%2042%0Ag%20%3D%20f%0Aprint%28g%28%29%29%0Aprint%28type%28f%29%29\" target=\"_blank\">Python'daki fonksiyonlar nesnedir<\/a>, yani \u00fcye fonksiyonlar, \u00fcye de\u011fi\u015fknelerin \u00f6zel bir durumudur.<\/p>\n<p>Mod\u00fcllerde de introspection yap\u0131labilir. E\u011fer\u00a0<code>import math<\/code>\u00a0yap\u0131p sonra da\u00a0\u00a0<code>dir(math)<\/code>\u00a0\u00e7a\u011f\u0131r\u0131rsan\u0131z,\u00a0<code>pi<\/code>\u00a0say\u0131s\u0131 ve\u00a0<code>sqrt<\/code> fonksiyonu d\u00e2hil olmak \u00fczere \u00a0<code>math<\/code> mod\u00fcl\u00fc i\u00e7erisindeki her \u015feyin bir listesini elde edersiniz.<\/p>\n<h3>Neden nesneler?<\/h3>\n<p><code>index(S, T)<\/code>\u00a0gibi basit fonksiyonlar varken neden\u00a0\u00a0<code>S.index(T)<\/code>\u00a0\u015feklinde metotlar kullan\u0131yoruz? Ba\u015fka bir deyi\u015fle ni\u00e7in\u00a0<code>S<\/code>\u00a0gibi nesnlere ve\u00a0<code>str.index()<\/code>\u00a0metotlara neden ihtiya\u00e7 var?<\/p>\n<p>Nesnelerin as\u0131l b\u00fcy\u00fck faydalar\u0131n\u0131 daha karma\u015f\u0131k ve farkl\u0131 tipten datalarla programlamaya ba\u015flad\u0131\u011f\u0131n\u0131zda g\u00f6receksiniz. Her tipten obje (\u00f6rn.\u00a0<code>str<\/code>\u00a0<em>class<\/em>) hem depolanan verinin esas\u0131n\u0131 (mesela, bir karakterler dizisi ve onun uzunlu\u011fu) ve \u00fczerinde yap\u0131labilecek i\u015flem tiperini (mesela, b\u00fcy\u00fck harfe \u00e7evrimek veya altstringlerini olu\u015fturmak) temsil eder. Daha karma\u015f\u0131k bir \u00f6rnek olarak dosya nesneleri (<em>file objects)<\/em>: a\u00e7\u0131lan dosyan\u0131n ad\u0131n\u0131, dosyadaki mevcut durumunuzu ve okuma ve yazmak i\u00e7in kullanaca\u011f\u0131n\u0131z metotlar\u0131 ifade eder. Hatta kendi data tiplerinizi beirleyebilirsiniz!<\/p>\n<p>Bu genel yakla\u015f\u0131m \"object-oriented programming\" (OOP) [Nesne Y\u00f6nelimli Programlama] olarak adland\u0131r\u0131l\u0131r. Bu yakla\u015f\u0131m\u0131n baz\u0131 faydalar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>organizasyon<\/strong>:\u00a0\u00a0<code>math<\/code>\u00a0mod\u00fcl\u00fcndeki her \u015feye\u00a0<code>math.\u00abname\u00bb<\/code>\u00a0sentaks\u0131yla ula\u015farak program\u0131n\u0131zda mevcut de\u011fi\u015fken adlar\u0131n\u0131n \u00fczerine yaz\u0131lma ihtimalinden ka\u00e7\u0131nm\u0131\u015f olursunuz.<\/li>\n<li><strong><strong>kaps\u00fclleme<\/strong>:<\/strong> Bir program\u0131n ayn\u0131 anda birka\u00e7 string veya dosya ile \u00e7al\u0131\u015fabildi\u011fi gibi, herhangi bir ba\u015fka classta tan\u0131mlanm\u0131\u015f pek \u00e7ok farkl\u0131 data tipinden kopyalarla (<em>instances<\/em>) \u00e7al\u0131\u015fabilirsiniz.<\/li>\n<li><strong>tekrar kullanma<\/strong>: Bir kez bir data tipi (<code>str<\/code>\u00a0gibi) veya bir metot k\u00fct\u00fcphanesi\u00a0 (<code>math\u00a0<\/code>gibi) tan\u0131mlad\u0131ktan sonra onu tekrar tekrar kullanabilir, kullanmalar\u0131 i\u00e7in ba\u015fkalar\u0131na verebilirsiniz.<\/li>\n<li><strong>hata ay\u0131klama<\/strong>: Daha \u00f6nceden g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi bir fonksiyon tan\u0131mlayarak benzer kodlar\u0131 defalarca yazmak zorunlulu\u011fundan kurtuluruz. Bir data tipi ile ilgili fonksiyonlar\u0131 bir tek yerde yazmakla (class definition\/s\u0131n\u0131f tan\u0131mlama) da ayn\u0131 kolayl\u0131\u011f\u0131 sa\u011flar\u0131z.<\/li>\n<li><strong>S\u0131n\u0131flar aras\u0131 ili\u015fkiler<\/strong>: Python\u00a0<code>index<\/code>\u00a0metodunun string i\u00e7in bir \u015fey, list i\u00e7in ba\u015fka anlama geldi\u011fini bilir. Ayn\u0131 \u015fekilde Python, yaln\u0131z bilgisyardaki dosyalar\u0131n\u0131z \u00fczerinde de\u011fil internet \u00fczerinde de data yaz\u0131p okuma i\u015flemi yapabilir.\u00a0Her iki h\u00e2lde de (karakter veya list dizileri, lokal veya uzak dosyalar) ilgili s\u0131n\u0131flar miras (<em>inheritance<\/em>) kavram\u0131 \u00e7er\u00e7evesinde tek \u015fekilde ele al\u0131nabilir.<\/li>\n<\/ul>\n<p>CS Circles'\u0131n devam\u0131nda\u00a0 sadece nesneleri ve metotlar\u0131 kullanaca\u011f\u0131z; kendi s\u0131n\u0131flar\u0131n\u0131z\u0131 olu\u015fturma konusunda ileride daha \u00e7ok bilgi edineceksiniz.\u00a0(bkz. Kaynak sayfalar\u0131).<\/p>\n<p>Bundan sonraki \u00fc\u00e7 dersi istedi\u011finiz s\u0131rayla yapabilirsiniz. Bu derslerde daha \u00f6nceden \u00f6\u011frendiklerimizi bir arada kullanmam\u0131z\u0131 gerektirecek karma\u0131\u015f problemlerle kar\u015f\u0131la\u015facaks\u0131n\u0131z.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u015eu ana kadar Python'daki iki veri yap\u0131s\u0131n\u0131 g\u00f6rd\u00fck: stringler ve listeler. Bu iki yap\u0131 da, fonksiyonlar\u0131n varyantlar\u0131 olan baz\u0131 metotlar\u0131 desteklemektedir. Mesela reverse()\u00a0metodu\u00a0list\u00a0 ile kullanabilece\u011fimiz bir metottur. \u0130sminden anla\u015f\u0131labilece\u011fi gibi bu, liste elementlerini tersten (yani ilk element en sona, son &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/14-tr-methods\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10815","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/comments?post=10815"}],"version-history":[{"count":13,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10815\/revisions"}],"predecessor-version":[{"id":11083,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10815\/revisions\/11083"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=10815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}