{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Son değiştirilme tarihi:16.10.2021" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ÖNSÖZ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NOT:Dokümanda zaman zaman güncellemeler olacağı için arada bir güncel versiyon kontrolü yapmanızı tavsiye ederim.\n", "
\n", "\n", "\"nbviewer\" üzerinden görüntülüyorsanız, dosyayı kaydetmek için sayfanın sağ üst köşesindeki download butonuna tıklayın, açılan sayfada herhangi bir yere sağ tıklayın ve `farklı kaydet` diyerek dosyayı istediğiniz klasöre kaydedin. Dosyayı açabilmek için Jupyter'in kurulması gerekmekte olup, yeni başlayan biriyseniz aşağıda kurulumla ilgili detayları inceleyin.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python'a ilk kez başlıyorsanız önce \"Anaconda\" kurulumu yapmanız gerekmektedir. Bu işlemi şu sayfadan öğrenebilir veya hemen alttaki videodan izleyebilirsiniz. \n", "\n", "**NOT: Normalde Anaconda birçok paketi ve programı baırndırdığı için bilgisayarınızda çok yer kaplamakta olup ilerde anacondayı kaldırıp pure python kurulumu yapmanızı, ve sadece ihtyiacınız olan paketleri kurmanızı tavsiye ederim. Ancak herşeyin hazır gelmesi sebebiyle ilk başta anaconda ile başlamanız yerinde oalcaktır. Disk sorununuz yoksa anaconda ile devam da edebilirsiniz.**\n", "\n", "Anaconda ile birlikte Python environment'ına ek olarak Jupyter notebook uygulaması ve Spyder gibi IDE'ler de kurulacaktır. Ayrıca birçok önemli kütüphane(numpy, pandas, sklearn gibi) kurulmuş olacak. Ben de bu dokümanı Jupyter üzerinde hazırladım. O yüzden Jupyter ağırlıklı gideceğiz. Spyder'ı, kurcalayarak ve Youtube'da birkaç video izleyerek kendiniz de öğrenebilirsiniz.\n", "\n", "Bu notebookta detaylı Jupyter kullanımı olmayacak. Her detayı vermekten ziyade bir başucu rehberi hazırlamayı amaçladım. Yani tam bir eğitim dokümanından ziyade büyük bir cheatsheet(hızlı başvuru kaynağı) tadında bir doküman bulacaksınız. Dokümanın en altında süper konsantre bir cheatsheet daha bulacaksınız.\n", "\n", "Gereksiz açıklamalarla dokümanı şişirmek istemedim. Çoğu durumda kodları çalıştırdığınızda neyin ne olduğunu anlayabileceksiniz. Anlaşılması zor durumlar için ilave açıklamalar olacaktır.\n", "\n", "Bununla birlikte bir nebze de olsa programcılık dünyasına aşina olmanızda fayda var. Eğer tamamen sıfır noktasındaysanız bu doküman size biraz ağır gelebilir. Önce başka bir kaynaktan temelleri(değişken, fonksiyon, algoritma, nesne v.s) öğrenin, bu dokümanı ise cheatsheet olarak kullanın." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "DİKKAT: En altta Verimlilik bölümünde gösterdiğim \"code(input) hücrelerini saklama yöntemi\"nde kullandığım kod, sayfadaki tüm input hücrelerinin gizlenmesine neden olmaktadır. Bunun için aşağıdaki butona tıklamanız gerekebilir. (İçinde yazan kod python kodu olmayıp javascripttir, şimdilik buna takılmayın) " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import HTML\n", "\n", "HTML('''\n", "
''')" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:10:52.681419Z", "start_time": "2021-05-15T15:10:52.225681Z" } }, "outputs": [ { "data": { "image/jpeg": "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fw+NPRkv4fGnCy5TonGwZxqsOlZnoyX8PjT0ZL+HxpwsuU6JxsGcarCNWhewfkKhPRkv4fmqbXsH5Cuns6J7C7eFMFxdsTxyBu4QccPZfaVR/W+57sPyv9dPW+57sPyv9dZbyh76LBc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/10vKHvolz2joNVeKVR/W+57sPyv8AXT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/wBdLyh76Jc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/10vKHvolz2joNVeKVR/W+57sPyv8AXT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/wBdLyh76Jc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/10vKHvolz2joNVeKVR/W+57sPyv8AXT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/wBdLyh76Jc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/10vKHvolz2joNVeKVR/W+57sPyv8AXT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/wBdLyh76Jc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/10vKHvolz2joNVeKVR/W+57sPyv8AXT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/wBdLyh76Jc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/10vKHvolz2joNVeKVR/W+57sPyv8AXT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/wBdLyh76Jc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/10vKHvolz2joNVeKVR/W+57sPyv8AXT1vue7D8r/XS8oe+iXPaOg1V4pVH9b7nuw/K/109b7nuw/K/wBdLyh76Jc9o6DVXilUf1vue7D8r/XT1vue7D8r/XS8oe+iXPaOg1VdpSleeXrEpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURKUpREpSlESlKURf/9k=\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('JEv5oigBUL0')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Jupyter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rehber" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Jupyter kullanırken neleri bilmenizde fayda var?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Kısayol tuşları(Jupyter'de H tuşuna basınca çıkar)-->bunları mutlaka kullanın, büyük hız kazandırır. Herşeyi yukarıdaki menülerden yapmaya kalkarsanız yavaş ilerlersiniz.\n", "* magic functions(Googlelayın)-->Bir süre sonra, şimdi değil\n", "* smart suggestions(tab, tab+tab)-->sınıflar ve metodlar hakkında bilgi alırsınız, kod pratiğine başlayınca deneyin. Aşağıda print için örnek ekran görüntüleri var.\n", "* nbextensions ve jupyter_helpers-->sol paneldeki içindekiler ve indeksleme dahil birçok güzellik \n", "* help, dir ile yardım alınır-->deneyin(aşağıda örnek var)\n", "* type fonksiyonu ile sık sık bir değişkenin tipini öğrenmeniz gerekecek -->deneyin\n", "* naming convention(pep 0008)-->Kritik değil ama bence önemli, googlelayın\n", "* jupyteri ektin kullanma rehberleri(medium v.s)-->Hemen değil ama bir süre sonra googlelayın\n", "* https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \n" ] } ], "source": [ "a=1\n", "liste=[]\n", "print(type(a),type(liste))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on built-in function print in module builtins:\n", "\n", "print(...)\n", " print(value, ..., sep=' ', end='\\n', file=sys.stdout, flush=False)\n", " \n", " Prints the values to a stream, or to sys.stdout by default.\n", " Optional keyword arguments:\n", " file: a file-like object (stream); defaults to the current sys.stdout.\n", " sep: string inserted between values, default a space.\n", " end: string appended after the last value, default a newline.\n", " flush: whether to forcibly flush the stream.\n", "\n" ] } ], "source": [ "help(print) #print fonksiyonu hakkında yardım" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['clear',\n", " 'copy',\n", " 'fromkeys',\n", " 'get',\n", " 'items',\n", " 'keys',\n", " 'pop',\n", " 'popitem',\n", " 'setdefault',\n", " 'update',\n", " 'values']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[x for x in dir(dict) if not \"__\" in x] #dictionary nesnesinin property ve metodları. tek başına dir(dict) yapsaydım \n", "#çok uzun bi liste çıkardı. Biraz aşağıda göreceğimiz 'list comprehension' yönteminden faydalanarak listeyi daralttım" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Anacondayı kurduktan sonra yukarda bahsettiğim nbextensionsı kurar ve bu notebooku kendi pcnize indirip jupyter içinden açarsanız aşağıdaki gibi İçindekiler tablolu ve indeksli şekilde görebilirsiniz. Kurulumun nasıl yapılacağını https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html sayfasından görebilirsiniz. Onun öncesinde biraz aşağıdaki Modül, Package, Class bölümüne bakıp kavramlar hakkında kısa bir bilgi edinebilirsiniz. (Bu işlem size karışık gelirse bu aşamayı pas geçebilir ve biraz daha deneyim kazandıktan sonra tekrar denersiniz. Ancak benim tavsiyem, bikaç kez deneyin ve kurmaya çalışın, inanın çok faydasını göreceksiniz)" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NOT: Yukarıdaki ekran görüntüsü gibi resimleri kolayca notebookunuz içine ekleyebiliyorsunuz. Sadece bir Markdown tipli hücre açıp içine girin ve clipboarda aldığınız resmi yapıştırın." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Çoklu output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Normalde bir hücrede \"print\" ifadesi kullanmazsak sadece son değişken çıktı olarak gösterilir. Ancak aşağıdaki kod bloğu ile tüm değişkenler çıktı olarak elde edilebilmektedir.\n", "\n", "
\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\"\n",
    "
\n", "\n", "Örneğin bu interactive kodları girilmeden aşağıdaki kod çalışıtırılırsa sadece 2 sonucunu alırken\n", "
\n",
    "a=1\n",
    "b=2\n",
    "a\n",
    "b\n",
    "
\n", "\n", "Yukarıdaki iki satırlık kod girilirse hem 1 hem 2 sonucu görünür." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:32:54.059281Z", "start_time": "2021-05-15T15:32:54.055292Z" } }, "outputs": [], "source": [ "from IPython.core.interactiveshell import InteractiveShell\n", "InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "2" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a=1\n", "b=2\n", "a\n", "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Çeşitli operatörler" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Volume in drive E is MYHDD\n", " Volume Serial Number is 9E4D-C087\n", "\n", " Directory of E:\\OneDrive\\Uygulama GeliŸtirme\n", "\n", "09.01.2020 00:23 .\n", "09.01.2020 00:23 ..\n", "09.09.2019 23:42 java\n", "09.01.2020 23:52 PDF dok�mantasyon\n", "15.06.2019 16:35 Scratch\n", "12.12.2019 15:32 silinecek\n", "18.08.2019 13:38 Visual Studio\n", "19.08.2019 23:18 web js asp\n", "08.01.2020 00:52 web sitelerim\n", " 0 File(s) 0 bytes\n", " 9 Dir(s) 510.644.449.280 bytes free\n" ] } ], "source": [ "#! işareti ile işletim sistemi komutları kullanılabilir\n", "import os #os modülü ayrıca anlatılacak, aşağıdaki kod ile geçerli klasörü değiştiriyoruz\n", "os.chdir(r\"E:\\OneDrive\\Uygulama Geliştirme\") \n", "# sanki meşhur siyah cmd ekranımızda \"dir\" demişim gibi\n", "!dir" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# \"#\" işareti ile yorum yazarız" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "Farklı dil seçeneklerin kullanabiliyoruz. Burada HTML kullanmış olduk.\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "Farklı dil seçeneklerin kullanabiliyoruz. Burada HTML kullanmış olduk." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Matematiksel ifadeler" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "$$E=mc^2$$\n", "$sin(x)/x$\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%latex #Latex ile matematiksel formüller girebiliyoruz\n", "$$E=mc^2$$\n", "$sin(x)/x$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hizalama
\n", "Yukarıdaki code hücresiyidi, bu ise markdown hücresidir
\n", "$$ ile yazım formülü ortalar
\n", "\\$ ile yazımda ise sola dayalı ve küçük
\n", "\n", "$$\\Pi p(n)$$\n", "\n", "$\\frac \\pi 2$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Diğer ifadeler\n", "\n", "\\frac ifadesi ile kesirler
\n", "_ karakteri ile indis(subscript)
\n", "\\pi, \\sum, \\bar ve \\hat gibi özel ifadeler
\n", "\n", "$$\\sum p(n)$$\n", "\n", "$$y_i, \\bar{y}_i, \\hat{y}_i$$\n", "\n", "$$TSS=\\sum_{i=1}^n(y_i-\\bar{y}_i)^2$$\n", "\n", "$$P(c|x)=\\frac {P(x|c).P(c)}{P(x)}$$" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#bu modül ile de daha gösterişli matematiksel formüller girebiliyoruz\n", "from IPython.display import Math\n", "Math(r'F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#dahası da var, müzik ve video da ekleyebiliyoruz\n", "from IPython.display import Audio\n", "Audio(url=\"http://www.nch.com.au/acm/8k16bitpcm.wav\")" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('NGrJjLCpKSA') # reklamımı da yapayım :)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Latex ve Ipython.display hakkında daha fazla bilgi için https://nbviewer.jupyter.org/github/ipython/ipython/blob/2.x/examples/Notebook/Display%20System.ipynb" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "588ffdb80cf942df9302eb5c5f8f3c6b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#print edilecek liste çok büyükse ekranda çok yer kaplamaması adına bu aşağıdaki modül oldukça kullanışlıdır. \n", "#bunun önemini henüz anlamayabilirsiniz, bi köşede dursun\n", "#https://towardsdatascience.com/productivity-tips-for-jupyter-python-a3614d70c770\n", "from jupyter_helpers.following_tail import FollowingTail\n", "\n", "max5=FollowingTail(5)\n", "max5.activate()\n", "liste=range(100)\n", "\n", "for i in liste:\n", " max5(i)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Genel syntax" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "sayi=1 #değişkenler doğrudan atanır. türkçe karakter kullanmamaya çalışın" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Değişkenlerde çoklu satır kullanımı" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "merhaba burada line contination uygulandıama sonuç yine de bitişik yazar\n" ] } ], "source": [ "linecont=\"merhaba burada line \"+ \\\n", "\" contination uygulandı\" + \\\n", "\"ama sonuç yine de bitişik yazar\"\n", "print(linecont)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "bu satırlar\n", "ise satırlara\n", "yayılmış durum\n", "\n" ] } ], "source": [ "satırayaygın=\"\"\"\n", "bu satırlar\n", "ise satırlara\n", "yayılmış durum\n", "\"\"\"\n", "print(satırayaygın)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Pzt', 'salı', 'çar', 'perş']\n" ] } ], "source": [ "#veri yapıları için ise yukarıdaki iki yönteme de gerek olmadan kaydırabiliriz\n", "gunler=[\"Pzt\",\"salı\",\n", " \"çar\",\"perş\"]\n", "print(gunler)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Başlıklar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Başlıklar normalde #, ##, ###,... ifadeleriyle HTML'deki h1,h2,h3...'e denk gelecek şekilde oluşturulur. Bu dokümandaki tüm başlıklar da böyle oluşuturuldu. Dokümanı kendi jupyterinizde açtıysanız, herhangi bir başlık hücresine gelip Enter'a basın. Enter ile hücreyi edit moduna sokmuş oluruz. Böylece başlığın nasıl yazıldığını da görmüş olursunuz. Mesela bu paragrafın başlığı aşağıdaki gibidir" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu tür başlıklar, eğer nbextension kurduysanız 1.1.2 gibi indeksli şekilde görünür. Eğerki bu dokümana bir notebook gösterici(github veya nbviewer gibi) üzerinden bakıyorsanız 1.1.2 şeklindeki gösterimi görmüyorsunuzdur. Detaylar için en baştaki Rehber kısmına bakınız" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu ise html(strong tag'i) kullanılarak oluşturulmuş kalın bi başlık. Sol paneldeki \"İçindekiler\" paneline girmesini istemediğiniz başlıkları bu şekilde oluşturabilirsiniz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Diğer başlık türleri\n", "\n", "***üç yıldız ile bold&italik***
\n", "**iki yıldız ile bold yapma**
\n", "*tek yıldız ile italik yapma*
\n", "`sağa dönük tek tırnak ile` vurgulu yapma. Bu karakteri Alt+96 ile yazabilirsiniz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Paragraf, satır geçme ve html kullanımı" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Üst paragraf\n", "\n", "İki kere entera basarak paragraf açabilirsiniz(bu satırda olduğu gibi. hücreye çift tıklayın ve görün)
\n", "veya bi satırın sonunda \"br\" tagi ekleyerek bir alt satıra geçebilrsiniz. (bu satırda olduğu gibi. hücreye çift tıklayın ve görün)\n", "\n", "NOT:Bu kolaylıkları öğrenene/keşfedene kadar ben bu paragraf ve bi alt satır işlerini Markdown değil de Raw NB Convert hücre tipi ile yapıyordum. Bunu öğrendikten sonra Raw NB Covnert tipli hücrelere pek ihtiyaç duymadım." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Naming convention" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Pep 008 python\" araması yapın ve tüm detayları görün. aşağıda sadece \"_\" kullanımını koydum" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ad\n", "soyad\n" ] } ], "source": [ "_privatevariable=3\n", "#_privatemethod()\n", "list_=[1,2,3] #rezerv keylerin sonuna _ gelir. list diye bir değişken adı kullanamayız, list_ olabilir\n", "dict_={\"ad\":\"ali\",\"soyad\":\"yılmaz\"}\n", "for x,_ in dict_.items(): #ilgilenmediğimiz değerler için \"_\"\n", " print(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bununu dışında sklearn(Machine Learning kütüphanesi)de bazı propertylerin _ ile bittiğini görürsünüz. bunların anlamı da, ilgili propertyle ulaşmak için öncelikle modelin eğitilmesi(fit edilmesi) gerekmekte, eğitilmemiş modelde bu bilgiye ulaşamak anlamsızdır demek." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Modül, Package, Class" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu 3 kavram hiyerarşik olarak şöyle sıralanır. Package>module>class.\n", "\n", "Yani her sınıf bir modül içindedir. modüller py uzantılı dosylardır. birkaç modül biraraya gelerek bir paket oluşturur. Ör: DataScience çalışmalarında pandas paketi kullanılır, bu anaconda sürümü ile birlikte gelir.\n", "\n", "Bir de kütüphane kavramı var. Python'daki kütüphane(library) kavramı C/C# gibi dillerdeki dll dosyalarından farklı bir anlama sahiptir. Burada daha çok belirli modüllerin veya package'ların biraraya gelerek kavramsal bir topluluk oluşturumasından bahsediyoruz. Ör:Makine öğrenme kütüphanesi gibi. Bu arada ille bir fiziksel karşılık aranacaksa package'lar gibi düşünülebilirler." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**DİKKAT:Kafa karışıtırıcı bir paragraf, isterseniz şimdilik atlayın ma sonra mutlaka glin ve özellikle alttaki linki okuyun**\n", "\n", "Yeni bir paket kurmak istediğinizde;\n", "\n", "conda install paketadı demeniz yeterlidir. Eğer bu yeterli gelmezse;
\n", "pip install paketadı diyebilirsiniz. Bunu bazen başında ! olacak şekilde yapmak gerekebiliyor. ! varsa aslında komut satırı komutu gibi çalışmış oluyor, ! yoksa da % işareti varmış gibi çalışıyor. % işareti olması automagic olarak çalışması anlmamına gleiyor. automagic konusunu araştırrsanız anlarsınız.\n", "\n", "Ama şimdi bu yukarıdaki iki yöntemi de unutun ve aşağıdaki şu linke bakın. kurulumları nasıl yapmanız gerektiğini göreceksiniz.\n", "\n", "Daha detaylı bilgiyi aşağıdaki linkten edinebilirsiniz:
\n", "https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-10-06T20:09:52.718668Z", "start_time": "2020-10-06T20:09:52.712650Z" } }, "outputs": [], "source": [ "#örnek olarak şimdi DeepLearning paketi olan kerası kuruyorum\n", "#conda install keras" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Package Version \n", "---------------------------------- -------------------\n", "-umpy 1.16.2 \n", "absl-py 0.9.0 \n", "alabaster 0.7.12 \n", "anaconda-client 1.7.2 \n", "anaconda-navigator 1.9.7 \n", "anaconda-project 0.8.3 \n", "argh 0.26.2 \n", "asn1crypto 1.3.0 \n", "astor 0.8.0 \n", "astroid 2.3.3 \n", "astropy 4.0 \n", "atomicwrites 1.3.0 \n", "attrs 19.3.0 \n", "autopep8 1.4.4 \n", "Babel 2.8.0 \n", "backcall 0.1.0 \n", "backports.os 0.1.1 \n", "backports.shutil-get-terminal-size 1.0.0 \n", "bcrypt 3.1.7 \n", "beautifulsoup4 4.8.2 \n", "bitarray 1.2.1 \n", "bkcharts 0.2 \n", "bleach 3.1.0 \n", "blinker 1.4 \n", "bokeh 1.4.0 \n", "boto 2.49.0 \n", "Bottleneck 1.3.2 \n", "cachetools 3.1.1 \n", "certifi 2019.11.28 \n", "cffi 1.14.0 \n", "chardet 3.0.4 \n", "Click 7.0 \n", "cloudpickle 1.3.0 \n", "clyent 1.2.2 \n", "colorama 0.4.3 \n", "comtypes 1.1.7 \n", "conda 4.8.2 \n", "conda-build 3.17.8 \n", "conda-package-handling 1.6.0 \n", "conda-verify 3.1.1 \n", "confuse 1.0.0 \n", "contextlib2 0.6.0.post1 \n", "cryptography 2.8 \n", "cycler 0.10.0 \n", "Cython 0.29.15 \n", "cytoolz 0.10.1 \n", "dask 2.11.0 \n", "decorator 4.4.1 \n", "defusedxml 0.6.0 \n", "diff-match-patch 20181111 \n", "distributed 2.11.0 \n", "docutils 0.16 \n", "entrypoints 0.3 \n", "et-xmlfile 1.0.1 \n", "fastcache 1.1.0 \n", "filelock 3.0.12 \n", "flake8 3.7.9 \n", "Flask 1.1.1 \n", "fsspec 0.6.2 \n", "future 0.18.2 \n", "gast 0.2.2 \n", "gevent 1.4.0 \n", "glob2 0.7 \n", "google-auth 1.11.2 \n", "google-auth-oauthlib 0.4.1 \n", "google-pasta 0.1.8 \n", "graphviz 0.10.1 \n", "greenlet 0.4.15 \n", "grpcio 1.27.2 \n", "h5py 2.10.0 \n", "HeapDict 1.0.1 \n", "html5lib 1.0.1 \n", "htmlmin 0.1.12 \n", "hypothesis 5.5.4 \n", "idna 2.8 \n", "imageio 2.6.1 \n", "imagesize 1.2.0 \n", "importlib-metadata 1.5.0 \n", "intervaltree 3.0.2 \n", "ipykernel 5.1.4 \n", "ipython 7.12.0 \n", "ipython-genutils 0.2.0 \n", "ipywidgets 7.5.1 \n", "isort 4.3.21 \n", "itsdangerous 1.1.0 \n", "jdcal 1.4.1 \n", "jedi 0.14.1 \n", "Jinja2 2.11.1 \n", "joblib 0.14.1 \n", "json5 0.9.1 \n", "jsonschema 3.2.0 \n", "jupyter 1.0.0 \n", "jupyter-client 5.3.4 \n", "jupyter-console 6.1.0 \n", "jupyter-contrib-core 0.3.3 \n", "jupyter-contrib-nbextensions 0.5.1 \n", "jupyter-core 4.6.1 \n", "jupyter-helpers 0.1.1 \n", "jupyter-highlight-selected-word 0.2.0 \n", "jupyter-latex-envs 1.4.4 \n", "jupyter-nbextensions-configurator 0.4.1 \n", "jupyterlab 1.2.6 \n", "jupyterlab-server 1.0.6 \n", "Keras 2.3.0 \n", "Keras-Applications 1.0.8 \n", "Keras-Preprocessing 1.1.0 \n", "keyring 21.1.0 \n", "kiwisolver 1.1.0 \n", "lazy-object-proxy 1.4.3 \n", "libarchive-c 2.8 \n", "llvmlite 0.31.0 \n", "locket 0.2.0 \n", "lxml 4.5.0 \n", "Markdown 3.1.1 \n", "MarkupSafe 1.1.1 \n", "matplotlib 3.1.3 \n", "mccabe 0.6.1 \n", "menuinst 1.4.16 \n", "missingno 0.4.2 \n", "mistune 0.8.4 \n", "mkl-fft 1.0.15 \n", "mkl-random 1.1.0 \n", "mkl-service 2.3.0 \n", "mock 4.0.1 \n", "more-itertools 8.2.0 \n", "mpmath 1.1.0 \n", "msgpack 0.6.1 \n", "multipledispatch 0.6.0 \n", "navigator-updater 0.2.1 \n", "nbconvert 5.6.1 \n", "nbformat 5.0.4 \n", "networkx 2.4 \n", "nltk 3.4.5 \n", "nose 1.3.7 \n", "notebook 6.0.3 \n", "numba 0.48.0 \n", "numexpr 2.7.1 \n", "numpy 1.18.1 \n", "numpydoc 0.9.2 \n", "oauthlib 3.1.0 \n", "olefile 0.46 \n", "openpyxl 3.0.3 \n", "opt-einsum 3.1.0 \n", "packaging 20.1 \n", "pandas 1.0.1 \n", "pandas-profiling 2.3.0 \n", "pandocfilters 1.4.2 \n", "paramiko 2.7.1 \n", "parso 0.5.2 \n", "partd 1.1.0 \n", "path 13.1.0 \n", "pathlib2 2.3.5 \n", "pathtools 0.1.2 \n", "patsy 0.5.1 \n", "pep8 1.7.1 \n", "pexpect 4.8.0 \n", "phik 0.9.8 \n", "pickleshare 0.7.5 \n", "Pillow 7.0.0 \n", "pip 20.0.2 \n", "pkginfo 1.5.0.1 \n", "plotly 4.2.1 \n", "pluggy 0.13.1 \n", "ply 3.11 \n", "prometheus-client 0.7.1 \n", "prompt-toolkit 3.0.3 \n", "protobuf 3.11.4 \n", "psutil 5.6.7 \n", "ptvsd 4.3.2 \n", "py 1.8.1 \n", "pyasn1 0.4.8 \n", "pyasn1-modules 0.2.7 \n", "pycodestyle 2.5.0 \n", "pycosat 0.6.3 \n", "pycparser 2.19 \n", "pycrypto 2.6.1 \n", "pycurl 7.43.0.5 \n", "pydocstyle 4.0.1 \n", "pydotplus 2.0.2 \n", "pyflakes 2.1.1 \n", "Pygments 2.5.2 \n", "PyJWT 1.7.1 \n", "pylint 2.4.4 \n", "PyNaCl 1.3.0 \n", "pyodbc 4.0.0-unsupported \n", "pyOpenSSL 19.1.0 \n", "pyparsing 2.4.6 \n", "pyreadline 2.1 \n", "pyrsistent 0.15.7 \n", "PySocks 1.7.1 \n", "pytest 5.3.5 \n", "pytest-arraydiff 0.3 \n", "pytest-astropy 0.8.0 \n", "pytest-astropy-header 0.1.2 \n", "pytest-doctestplus 0.5.0 \n", "pytest-openfiles 0.4.0 \n", "pytest-pylint 0.14.1 \n", "pytest-remotedata 0.3.2 \n", "python-dateutil 2.8.1 \n", "python-jsonrpc-server 0.3.4 \n", "python-language-server 0.31.7 \n", "pytz 2019.3 \n", "PyWavelets 1.1.1 \n", "pywin32 227 \n", "pywin32-ctypes 0.2.0 \n", "pywinpty 0.5.7 \n", "PyYAML 5.3 \n", "pyzmq 18.1.1 \n", "QDarkStyle 2.8 \n", "QtAwesome 0.6.1 \n", "qtconsole 4.6.0 \n", "QtPy 1.9.0 \n", "requests 2.22.0 \n", "requests-oauthlib 1.3.0 \n", "retrying 1.3.3 \n", "rope 0.16.0 \n", "rsa 4.0 \n", "Rtree 0.9.3 \n", "ruamel-yaml 0.15.87 \n", "scikit-image 0.16.2 \n", "scikit-learn 0.22.1 \n", "scipy 1.4.1 \n", "seaborn 0.10.0 \n", "Send2Trash 1.5.0 \n", "setuptools 45.2.0.post20200210\n", "simplegeneric 0.8.1 \n", "singledispatch 3.4.0.3 \n", "six 1.14.0 \n", "snowballstemmer 2.0.0 \n", "sortedcollections 1.1.2 \n", "sortedcontainers 2.1.0 \n", "soupsieve 1.9.5 \n", "Sphinx 2.4.0 \n", "sphinxcontrib-applehelp 1.0.1 \n", "sphinxcontrib-devhelp 1.0.1 \n", "sphinxcontrib-htmlhelp 1.0.2 \n", "sphinxcontrib-jsmath 1.0.1 \n", "sphinxcontrib-qthelp 1.0.2 \n", "sphinxcontrib-serializinghtml 1.1.3 \n", "sphinxcontrib-websupport 1.2.0 \n", "spotipy 2.4.4 \n", "spyder 4.0.1 \n", "spyder-kernels 1.8.1 \n", "SQLAlchemy 1.3.13 \n", "statsmodels 0.9.0 \n", "sympy 1.5.1 \n", "tables 3.6.1 \n", "tblib 1.6.0 \n", "tensorboard 2.1.0 \n", "tensorflow 1.15.0 \n", "tensorflow-estimator 1.15.1 \n", "termcolor 1.1.0 \n", "terminado 0.8.3 \n", "testpath 0.4.4 \n", "toolz 0.10.0 \n", "tornado 6.0.3 \n", "tqdm 4.42.1 \n", "traitlets 4.3.3 \n", "typed-ast 1.4.0 \n", "ujson 1.35 \n", "unicodecsv 0.14.1 \n", "urllib3 1.25.8 \n", "watchdog 0.10.2 \n", "wcwidth 0.1.8 \n", "webencodings 0.5.1 \n", "Werkzeug 0.16.1 \n", "wheel 0.34.2 \n", "widgetsnbextension 3.5.1 \n", "win-inet-pton 1.1.0 \n", "win-unicode-console 0.5 \n", "wincertstore 0.2 \n", "wordcloud 1.5.0 \n", "wrapt 1.11.2 \n", "xlrd 1.2.0 \n", "XlsxWriter 1.2.7 \n", "xlwings 0.17.1 \n", "xlwt 1.3.0 \n", "yapf 0.28.0 \n", "zict 1.0.0 \n", "zipp 2.2.0 \n" ] } ], "source": [ "#mevcut packageların listesi\n", "!pip list" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#bi kapet hakkında bilgi\n", "!pip show numpy" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "django-matplotlib (0.1) - Matplotlib field for Django\n", "matplotlib-stream (1.0.0) - GCPDS: matplotlib stream\n", "hangar-matplotlib (0.0.3) - Matplotlib plugin for hangar\n", "matplotlib-helpers (0.1.post6) - Helper functions, etc. for matplotlib\n", "matplotlib-terminal (0.1a2) - Render matplotlib plots in terminal.\n", "matplotlib-colorbar (0.4.0) - Artist for matplotlib to display a color bar\n", "matplotlib-scalebar (0.6.2) - Artist for matplotlib to display a scale bar\n", "jirafs-matplotlib (1.0.3) - Render matplotlib charts in your JIRA issues\n", "matplotlib-pgfutils (1.3.1) - Utilities for generating PGF figures from Matplotlib\n", "matplotlib-subsets (1.0) - Functions for plotting area-proportional hierarchical subset diagrams in matplotlib.\n", "matplotlib-venn (0.11.5) - Functions for plotting area-proportional two- and three-way Venn diagrams in matplotlib.\n", "matplotlib (3.2.1) - Python plotting package\n", " INSTALLED: 3.2.1 (latest)\n", "matplotlib-label-lines (0.3.8) - Label lines in matplotlib.\n", "matplotlib-backend-qtquick (0.0.6) - A QtQuick backend for matplotlib\n", "fc-simesh-matplotlib (0.0.3) - Matplotlib add-on to the fc_simesh package\n", "japanize-matplotlib (1.1.2) - matplotlibのフォント設定を自動で日本語化する\n", "eddington-matplotlib (0.0.4) - A laboratory utility library for fitting and presenting data\n", "timeseriesql-matplotlib (0.0.2) - A plotting backend for the TimeSeriesQL library\n", "matplotlib-hep (0.1.0) - Module for making data analysis in High Energy Physics with Python more convenient\n", "ing-theme-matplotlib (0.1.5) - ING styles for common plotting libraries\n", "matplotlib-venn-wordcloud (0.2.5) - Create a Venn diagram with word clouds corresponding to each subset.\n", "mplstereonet (0.5) - Stereonets for matplotlib\n", "prettyfigure (0.1.1) - Styles for matplotlib\n", "PlotDraw (0.0.1) - interface of Matplotlib\n", "pyplottr (0.1.0) - Matplotlib for humans\n", "mpl-tools (0.1.10) - Tools for Matplotlib\n", "mplutils (0.3.0) - Tools for matplotlib\n", "imatplotlib (0.0.1) - innovata-matplotlib\n", "mobobob (0.5.1) - An alias for matplotlib\n", "mpltools (0.2.0) - Tools for Matplotlib\n", "mplstyle (0.1.2) - A simple API for setting matplotlib styles in matplotlib.\n", "matplotlibXtns (20.5) - matplotlib extension functions.\n", "kwplot (0.4.5) - A wrapper around matplotlib\n", "plopy (1.5.5) - GUI for matplotlib graphing\n", "celluloid (0.2.0) - Easy matplotlib animation.\n", "contours (0.0.2) - Contour calculation with Matplotlib.\n", "mpl-font (1.0.1) - Font selector for matplotlib\n", "plotcsv (0.1.2) - Plot CSV with matplotlib\n", "ipympl (0.5.6) - Matplotlib Jupyter Extension\n", "mpl-toolkits.clifford (0.0.3) - Matplotlib tools for clifford\n", "pycbc-mpld3 (0.3.dev0) - D3 Viewer for Matplotlib\n", "matplotlylib (0.1.0) - Matplotlib to Plotly Converter\n", "ficus (0.5) - context managers for matplotlib\n", "figurefirst (0.0.6) - Matplotlib plotting stuff\n", "mplhep (0.1.21) - Matplotlib styles for HEP\n", "mpld3 (0.3) - D3 Viewer for Matplotlib\n", "animateimages (0.2.4) - Animation of matplotlib images\n", "oscplotlib (0.1.0) - OSC1337 wrapper for Matplotlib\n", "matplotlibaux (20.2.23.0) - matplotlib auxiliary stuff\n", "mpl_style_gallery (0.1) - Gallery for Matplotlib stylesheets\n", "matplotvideo (0.0.2) - Syncing matplotlib and video\n", "mplsvds (0.1.7) - matplotlib styling for svds\n", "chainplot (0.2.1) - A(nother) matplotlib wrapper\n", "plotmark (1.0.0) - Plot markers for Matplotlib\n", "dufte (0.2.5) - Clean matplotlib plots\n", "mpl4qt (2.2.0) - Matplotlib widget for PyQt\n", "mpt-multiplot (0.0.2) - Convenient matplotlib subplot grids\n", "psynlig (0.0.6.dev0) - A package for creating plots with matplotlib.\n", "wraplot (0.1.1) - A simple python wrapper of matplotlib\n", "latex-plot-utils (1.0.0) - Helpers for Matplotlib plots in LaTeX\n", "mpl-tune (0.1) - A collection of matplotlib tuning scripts\n", "GooseMPL (0.4.1) - Style and extension functions for matplotlib\n", "panel-plots (0.1.0) - Organize matplotlib plots in panels\n", "mpltern (0.3.0) - Ternary plots as projections of Matplotlib\n", "mpls (0.2.0) - An open library of matplotlib styles\n", "fishbowl (0.3.1) - Customizable matplotlib style extension\n", "mpl-sns-viz (0.1.1) - Creates matplotlib and seaborn visuals\n", "mpl-finance (0.10.1) - Finance plots using matplotlib\n", "hpcplot (0.1) - A matplotlib wrapper for HPC Plots\n", "nc-time-axis (1.2.0) - cftime support for matplotlib axis\n", "figplotter (0.0.3) - A figure plotter using matplotlib\n", "MatPlotTheme (0.1.2) - MatPlotTheme is a theming library for MatPlotLib.\n", "feynman (2.0.2) - Feynman diagrams with python-matplotlib.\n", "plot_max (0.24) - high level to use matplotlib\n", "vapeplot (0.0.8) - matplotlib extension for vaporwave aesthetics\n", "grid-strategy (0.0.1) - A package for organizing matplotlib plots.\n", "quick-plot (0.0.2) - convenience wrapper around matplotlib\n", "plotje (1.1) - Simple matplotlib styling function.\n", "ezplot (0.1.0a4) - Remote Procedure interface to Matplotlib\n", "plotformatter (0.1.0) - Creates matplotlib and seaborn visuals\n", "hipsterplot (0.1) - because matplotlib is too mainstream\n", "atlas-mpl-style (0.11.0) - ATLAS style for Matplotlib 3.0+\n", "blume (0.0.1) - Better looking tables for matplotlib\n", "umPlot (0.0.1) - with matplotlib and basemap plot data\n", "python-controlchart (0.2.0) - Creation of control charts with matplotlib\n", "tgext.matplotrender (0.0.1) - Renderer to expose matplotlib figures\n", "svgpath2mpl (0.2.1) - SVG path parser for matplotlib" ] } ], "source": [ "# bir paketi sorgulama, var mı yok mu, hangi versiyonu kurulu v.s\n", "!pip search matplotlib" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already up-to-date: numpy in c:\\users\\volka\\anaconda3\\lib\\site-packages (1.18.1)\n" ] } ], "source": [ "#eğer, daha üst sürümü varsa ona upgrade etmek için\n", "!pip install numpy --upgrade \n", "#veya conda update numpy" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "#yeni sürümle çalışıtırma sıkıntısı yaşarsanız eski sürüme dönebilirsiniz\n", "#!pip install --upgrade paketadı=versiyonno #(Ör:pip install --upgrade werkzeug==0.12.2)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "#paketi komple kaldırmak için\n", "#!pip uninstall paketadı" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python 3.7.3\n" ] } ], "source": [ "#python versiyonu öğrenmek\n", "!python --version" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "#python'ın versiyonunu yükseltmek\n", "#!conda update python" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['C:\\\\Users\\\\volka\\\\Documents\\\\GitHub\\\\PythonRocks',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\python37.zip',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\DLLs',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3',\n", " '',\n", " 'C:\\\\Users\\\\volka\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib\\\\site-packages',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib\\\\site-packages\\\\win32',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib\\\\site-packages\\\\win32\\\\lib',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib\\\\site-packages\\\\Pythonwin',\n", " 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib\\\\site-packages\\\\IPython\\\\extensions',\n", " 'C:\\\\Users\\\\volka\\\\.ipython']" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#packageler hangi klasörlere kuruluyor\n", "import sys\n", "sys.path" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['C:\\\\Users\\\\volka\\\\Anaconda3', 'C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib\\\\site-packages']\n" ] } ], "source": [ "import site\n", "print(site.getsitepackages())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Özel kurulum şekillleri" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In IPython (jupyter) 7.3 and later, there is a magic %pip and %conda command that will install into the current kernel (rather than into the instance of Python that launched the notebook).\n", "\n", "%pip install geocoder\n", "\n", "! pip install --user (The ! tells the notebook to execute the cell as a shell command.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modül ve sınıflar(ve hatta fonksiyonları) kodumuza dahil etme" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Modül referansı: import x, kullanımı: x'i takipeden üye şeklinde. x.falanmetod, x.falanproperty, x.falanfalan
\n", "* Modüldeki herşeyi dahil etme: from x import * , kullanımı: falanca(...)
\n", "* Tek birşeyi dahil etme: from x import falanca. falanca doğrudan kullanılabilir, x.falanca demeye gerek yok(üsstekinden farkı daha az şey importladık)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NOT: Performans açısından mümkün mertebe az şey import etmeye çalışın." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.0" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from math import sqrt #math modülünden sqrt fonksiyonu\n", "kök=sqrt(16)\n", "kök" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Volume in drive E is MYHDD\n", " Volume Serial Number is 9E4D-C087\n", "\n", " Directory of E:\\OneDrive\\Uygulama GeliŸtirme\n", "\n", "16.01.2020 20:42 .\n", "16.01.2020 20:42 ..\n", "09.09.2019 23:42 java\n", "09.01.2020 23:52 PDF dok�mantasyon\n", "15.06.2019 16:35 Scratch\n", "12.12.2019 15:32 silinecek\n", "18.08.2019 13:38 Visual Studio\n", "19.08.2019 23:18 web js asp\n", "08.01.2020 00:52 web sitelerim\n", " 0 File(s) 0 bytes\n", " 9 Dir(s) 510.644.449.280 bytes free\n" ] } ], "source": [ "from os import * # os modülündeki herşeyi\n", "mkdir(\"test\") #os dememize gerek yok. test diye bi klasör yarattık\n", "removedirs(\"test\") #hemen arkadan bu klasörü sildik\n", "!dir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Kendi modüllerinizi import etme" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zaman geçtiktçe, bazı işleri sık yaptığınızı farkedeceksiniz ve bunları(sınıflar, fonkisyonlar) kendinize ait bir modülde toplayacaksınız. Sonrasında bunu normal bir modül import eder gibi ederiz." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# mypythonutility.py isminde bir dosyanız olduğunuzu düşünrsek\n", "# import mypythonutility" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ancak bazen, kodlarımızda sık güncelleme yapmak durumunda kalabiliyoruz. o sırada da bu modülümü import ettiğimiz bir başka notebookta çalışırken güncel halini dikkate almasını isteriz. Bu işi, notebooku restart etmeden yapmanın bir yolu var:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-07-07T08:46:49.796354Z", "start_time": "2020-07-07T08:46:49.732490Z" } }, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Kendi modülünüzü paket gibi kullanma" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Burayı daha ileride okuyun, şimdilik aklınızda bulunması için ve konu bütünlüğü adına burda olması daha iyi diye düşündüm. Yoksa bi üstteki maddeyi bilmeniz şimdilik yeterli." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yazdığınız modülü çağırmak istediğinizde ya onunla aynı klasörde olmanız ya da os.chdir() yaparak ilgili klasöre konumlanmanız gerekir. Sürekli bununla uğraşmamak için modülünüzü bir package haline getirmeniz faydalı olacaktır.\n", "\n", "Bunun için bir klasör yaratın ve içine bu py dosyanızı koyun. Bu klasöre bir de içi boş bir `'__init__.py'` dosyası koyun. Sonra bu klasörü tüm python paketlerinin olduğu klasöre(site-packages) taşıyın.\n", "\n", "Eğer ki jupyterhub gibi yetkilerinizin sınırlı olduğ bir ortamda çalışıyorsanız, ve site-packages'ta klasöre açma yetkiniz yoksa, kendinize ayrılmış alanda bu klasörü oluşturup sistem pathine ekleyin. Bunu da aşağıdaki komutla yapabilirsiniz." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# import sys\n", "# sys.path += \"klasörün konumu\"\n", "# print(sys.path) #path'e eklenmiş mi görmek için bunu da yazalım" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Virtual Environment" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://realpython.com/python-virtual-environments-a-primer/ sayfasında güzel anlatılmış." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2020-07-16T11:11:20.772078Z", "start_time": "2020-07-16T11:11:17.510325Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already up-to-date: pip in c:\\users\\volka\\appdata\\local\\programs\\python\\python38-32\\lib\\site-packages (20.1.1)\n" ] } ], "source": [ "#En güncel pip'i kuralım\n", "!py -m pip install --upgrade pip" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2020-07-16T11:11:54.505302Z", "start_time": "2020-07-16T11:11:45.665263Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting virtualenv\n", " Downloading virtualenv-20.0.27-py2.py3-none-any.whl (4.9 MB)\n", "Collecting appdirs<2,>=1.4.3\n", " Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)\n", "Collecting distlib<1,>=0.3.1\n", " Downloading distlib-0.3.1-py2.py3-none-any.whl (335 kB)\n", "Collecting filelock<4,>=3.0.0\n", " Downloading filelock-3.0.12-py3-none-any.whl (7.6 kB)\n", "Requirement already satisfied: six<2,>=1.9.0 in c:\\users\\volka\\appdata\\roaming\\python\\python38\\site-packages (from virtualenv) (1.14.0)\n", "Installing collected packages: appdirs, distlib, filelock, virtualenv\n", "Successfully installed appdirs-1.4.4 distlib-0.3.1 filelock-3.0.12 virtualenv-20.0.27\n" ] } ], "source": [ "#înstalling\n", "!py -m pip install --user virtualenv" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2020-07-16T11:13:17.716666Z", "start_time": "2020-07-16T11:13:04.387067Z" } }, "outputs": [], "source": [ "#yaratma\n", "!py -m venv env #bulunduğumuz aktif klasör içinde yaratır" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "ExecuteTime": { "end_time": "2020-07-16T11:20:21.083130Z", "start_time": "2020-07-16T11:20:20.978406Z" } }, "outputs": [], "source": [ "#aktivasyon\n", "!.\\env\\Scripts\\activate" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "ExecuteTime": { "end_time": "2020-07-16T11:32:39.163270Z", "start_time": "2020-07-16T11:32:39.139368Z" } }, "outputs": [ { "data": { "text/plain": [ "[\"['PATH=C:\\\\\\\\Windows\\\\\\\\system32\",\n", " 'C:\\\\\\\\Windows',\n", " 'C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\Wbem',\n", " 'C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\WindowsPowerShell\\\\\\\\v1.0\\\\\\\\',\n", " 'C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\OpenSSH\\\\\\\\',\n", " 'C:\\\\\\\\Program Files\\\\\\\\dotnet\\\\\\\\',\n", " 'C:\\\\\\\\Program Files\\\\\\\\Microsoft SQL Server\\\\\\\\130\\\\\\\\Tools\\\\\\\\Binn\\\\\\\\',\n", " 'C:\\\\\\\\Program Files\\\\\\\\Microsoft SQL Server\\\\\\\\Client SDK\\\\\\\\ODBC\\\\\\\\170\\\\\\\\Tools\\\\\\\\Binn\\\\\\\\',\n", " 'C:\\\\\\\\Program Files (x86)\\\\\\\\LINQPad5',\n", " 'C:\\\\\\\\Program Files (x86)\\\\\\\\Yarn\\\\\\\\bin\\\\\\\\',\n", " 'C:\\\\\\\\Program Files\\\\\\\\Git LFS',\n", " 'C:\\\\\\\\Program Files\\\\\\\\Git\\\\\\\\cmd',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Programs\\\\\\\\Python\\\\\\\\Python38-32\\\\\\\\Scripts\\\\\\\\',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Programs\\\\\\\\Python\\\\\\\\Python38-32\\\\\\\\',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Microsoft\\\\\\\\WindowsApps',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Local\\\\\\\\GitHubDesktop\\\\\\\\bin',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Programs\\\\\\\\Microsoft VS Code\\\\\\\\bin',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\.dotnet\\\\\\\\tools',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\Start Menu\\\\\\\\Programs\\\\\\\\Anaconda3 (64-bit)',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Yarn\\\\\\\\bin',\n", " 'C:\\\\\\\\Program Files (x86)\\\\\\\\Yarn\\\\\\\\bin',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\Anaconda3\\\\\\\\Lib\\\\\\\\site-packages\\\\\\\\pip',\n", " 'C:\\\\\\\\Users\\\\\\\\volka\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Python\\\\\\\\Python38\\\\\\\\Scripts',\n", " \"']\"]" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#bakalım PATH'e eklenmiş mi\n", "p=!PATH\n", "str(p).split(\";\")" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "ExecuteTime": { "end_time": "2020-07-16T11:26:46.667387Z", "start_time": "2020-07-16T11:26:46.567600Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\Users\\volka\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe\n", "C:\\Users\\volka\\AppData\\Local\\Microsoft\\WindowsApps\\python.exe\n" ] } ], "source": [ "!where python" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "ExecuteTime": { "end_time": "2020-07-16T11:34:58.198185Z", "start_time": "2020-07-16T11:34:58.120395Z" } }, "outputs": [], "source": [ "!deactivate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Veri Tipleri" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:25:19.504151Z", "start_time": "2021-05-15T15:25:19.499164Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n" ] } ], "source": [ "i=1\n", "f=1.0\n", "s=\"merhaba\"\n", "#bu bir yorum\n", "\"\"\"\n", "merhaba\n", "Bu 3 tırnak ifadesi fonksiyonların docstringi amaçlı kullanılır\n", "Ankca çok satıra yayılan yorumlar için de kullanılabilir\n", "\"\"\"\n", "print(type(i))\n", "print(type(f))\n", "print(type(s))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:25:35.993553Z", "start_time": "2021-05-15T15:25:35.988568Z" } }, "outputs": [], "source": [ "#Legal variable names:\n", "myvar = \"John\"\n", "my_var = \"John\"\n", "_my_var = \"John\"\n", "myVar = \"John\"\n", "MYVAR = \"John\"\n", "myvar2 = \"John\"" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:25:38.825715Z", "start_time": "2021-05-15T15:25:38.822723Z" } }, "outputs": [], "source": [ "#Illegal variable names:\n", "# 2myvar = \"John\"\n", "# my-var = \"John\"\n", "# my var = \"John\"" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:25:39.549119Z", "start_time": "2021-05-15T15:25:39.545090Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Orange\n", "Banana\n", "Cherry\n" ] } ], "source": [ "#çoklu değer atama\n", "x, y, z = \"Orange\", \"Banana\", \"Cherry\"\n", "print(x)\n", "print(y)\n", "print(z)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:25:42.188664Z", "start_time": "2021-05-15T15:25:42.184639Z" } }, "outputs": [ { "data": { "text/plain": [ "123000000000.0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#exponential\n", "x = 1e9\n", "y = 123E9\n", "x\n", "y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Veri tipi dönüştürme" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2020-11-23T07:25:00.681052Z", "start_time": "2020-11-23T07:25:00.672077Z" } }, "outputs": [ { "data": { "text/plain": [ "(1.0, float)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "(2, int)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "('1.0', str)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "1.0 \n" ] } ], "source": [ "y=float(1)\n", "z=int(2.8)\n", "s=str(y)\n", "\n", "y,type(y)\n", "z,type(z)\n", "s,type(s)\n", "print(s,type(s))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2020-11-23T07:26:26.792404Z", "start_time": "2020-11-23T07:26:26.788377Z" } }, "outputs": [ { "data": { "text/plain": [ "int" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z=\"1\"\n", "y=int(z)\n", "type(y)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2020-11-23T07:26:41.582918Z", "start_time": "2020-11-23T07:26:41.577930Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "x=1\n", "print(isinstance(x,int))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fonksiyonlar " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Klasik fonksiyon" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Genel olarak fonksiyonların ne olduğunu başka bir dokümandan öğrenmiş olmanız beklenimektedir. Başta da belirttiğim gibi bu dokümanın amacı büyük bir cheatsheet sağlamak." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "selam\n" ] } ], "source": [ "def islem_yapan_parametresiz_fonksiyon(): #c tabanlı dillerdeki void dönüş tipi\n", " print(\"selam\")\n", " \n", "islem_yapan_parametresiz_fonksiyon()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-11-21T17:03:37.328846Z", "start_time": "2020-11-21T17:03:37.324822Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16\n" ] } ], "source": [ "def sonuc_donduren_ve_parametre_almis_fonksiyon(karesi_alinacak_sayi):\n", " \"\"\"\n", " bu fonksiyon kendisine gelen sayının karesini döndürür\n", " Args:\n", " karesi_alinacak_sayi: sayı\n", " \"\"\"\n", " return karesi_alinacak_sayi**2\n", "\n", "sonuc=sonuc_donduren_ve_parametre_almis_fonksiyon(4) #dönen sonucu bi dğeişkene atıyorum\n", "print(sonuc)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "50\n", "5\n" ] } ], "source": [ "#pythonda fonksiyonlar bazı dillerdeki durumun aksine çok değer döndürülebilir.\n", "def cokdegerdondur(sayı):\n", " return sayı,sayı*10,sayı*100\n", "\n", "kendi,onkat,yuzkat=cokdegerdondur(5)\n", "print(onkat)\n", "print(kendi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Paramarray ile esnek sayıda parametre kullanımı ve default değer kavramı" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Parametreler belirlenmiş sayıda olmak zorunda değil. Esnek sayıda parametre alma imkanı var." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-11-21T17:03:09.037233Z", "start_time": "2020-11-21T17:03:09.015293Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5.5\n", "5.5\n" ] } ], "source": [ "def SayılarıToplaXeBöl(arg1,*args): #arg1 olmak zorunda değil, ama olacaksa paramarrayden önce olmalı\n", " \"\"\"\n", " Bu fonksiyon ilk parametreden sonrakileri toplayıp ilk parametreye böler\n", " \"\"\"\n", " Toplam=0\n", " for a in args:\n", " Toplam+=a\n", " return Toplam/arg1\n", "\n", "x=SayılarıToplaXeBöl(10,1,2,3,4,5,6,7,8,9,10) #parametreler hardcoded yazıldıysa \"*\" yazmıyoruz. \n", "print(x) \n", "y=SayılarıToplaXeBöl(10,*range(1,11)) #parametreler bir fonksiyon ile dönüyorsa veya bir değişkense \"*\" var\n", "print(y)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ad Volkan\n", "soyad Yurtseven\n" ] } ], "source": [ "def dictparametreli(**kwargs): #** olursa parametre olarak dictioanry alır\n", " for k,v in kwargs.items():\n", " print(k,v)\n", "\n", "dict_={}\n", "dict_[\"ad\"]=\"Volkan\"\n", "dict_[\"soyad\"]=\"Yurtseven\"\n", "dictparametreli(**dict_) #değişken şeklinde olduğu için ** ile " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bazı parametreler default değerleriyle yazılırlar. Fonksiyona ilgili değer geçirilimezse bu default değer kullanılır" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100 5 10\n" ] } ], "source": [ "def opsiyonelli(adet,min_=1, max_=10):\n", " print(adet,min_,max_)\n", "\n", "opsiyonelli(100,5) #son parametre 10 geçer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lambda ve anonymous function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lambda ifadeler, fonksiyon tanımlamak yerine inline şekilde işlem yapmaya imkan verir" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100\n", "100\n" ] } ], "source": [ "def kareal(sayı):\n", " return sayı**2\n", "\n", "#yukarıdaki fonksiyonu tanımlamak yerine lambda yazabilriz\n", "kareal2=lambda x:x**2\n", "\n", "print(kareal(10))\n", "print(kareal2(10))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2020-11-23T10:45:01.361766Z", "start_time": "2020-11-23T10:45:01.349838Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bil sen seni severim yoksa\n" ] } ], "source": [ "def KelimeSay(metin):\n", " kelimeler = [m for m in metin.replace(\",\",\"\").split(\" \")]\n", " print(\" \".join(sorted(list(set(kelimeler)))))\n", " \n", "KelimeSay(\"sen seni bil sen seni, yoksa severim seni\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Stringler" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Slicing" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "from utility import * #kendi yazdığım utility modülünü import ediyorum. burada farklı print şekilleri var. \n", "#satır numarsını yazdırmak gibi. View menüsünden Toggle Line Numbers yapmış olmanız lazım." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 ----------\n", "v\n", " \n", "3 ----------\n", "vol\n", " \n", "4 ----------\n", "an yurtseven\n", " \n", "5 ----------\n", "lka\n", " \n", "6 ----------\n", "n\n", " \n", "7 ----------\n", "ven\n", " \n", "8 ----------\n", "nevestruy naklov\n", " \n" ] } ], "source": [ "metin=\"volkan yurtseven\"\n", "printy(metin[0])\n", "printy(metin[:3]) #left 3\n", "printy(metin[4:]) #substr\n", "printy(metin[2:5]) #substr\n", "printy(metin[-1]) #son\n", "printy(metin[-3:]) #right 3\n", "printy(metin[::-1]) #ters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## String formatlama " ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'İnsanların yaklaşık yarısı kadın olup kalanı erkektir'" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mesaj=\"İnsanların yaklaşık %s kadın olup %s erkektir\" % (\"yarısı\",\"kalanı\")\n", "mesaj\n", "#s:string, d:sayı" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Python güzel bir dildir'" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#daha çok bu yöntem, {}\n", "mesaj=\"Python {} bir dildir\".format(\"güzel\")\n", "mesaj" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'python güzel bir dildir'" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ya da + ile basit concat\n", "mesaj=\"python\"\n", "mesaj=mesaj + \" güzel bir dildir\"\n", "mesaj" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-11-21T17:05:12.848696Z", "start_time": "2020-11-21T17:05:12.843709Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Benim adım volkan olup yaşım 41\n" ] } ], "source": [ "#en son yöntem: f-string / f-literal olarak da geçer\n", "ad=\"volkan\"\n", "yas=41\n", "print(f\"Benim adım {ad} olup yaşım {yas}\")" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pi sayısı yaklaşık olarak 3.14 olup dünyada yaklaşık 8,000,000,000 kişi yaşamaktadır\n" ] } ], "source": [ "#f ilteral ile binlik ayraç ve küsurat işleri\n", "dunyanufusu=8000000000\n", "pi=3.14159\n", "print(f\"pi sayısı yaklaşık olarak {pi:.2f} olup dünyada yaklaşık {dunyanufusu:,} kişi yaşamaktadır\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## metinsel fonksiyonlar" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['volkan', 'yurtseven']" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parçalı=metin.split()\n", "parçalı" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "volkan yurtsevenvolkan yurtsevenvolkan yurtseven\n" ] } ], "source": [ "print(metin*3)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'volkan yurtsivin'" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "metin.replace(\"e\",\"i\")" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "VOLKAN YURTSEVEN volkan yurtseven Volkan yurtseven Volkan Yurtseven\n" ] } ], "source": [ "print(metin.upper(), metin.lower(), metin.capitalize(), metin.title())" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True False\n" ] } ], "source": [ "print(metin.startswith(\"v\"),metin.endswith(\"d\"))" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "yeni:naber dostum.\n" ] } ], "source": [ "kelime=\" naber dostum \" \n", "print(\"yeni:\"+kelime.strip()+\".\") #ortadakini silmez" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True True True False\n", "True False False False\n", "False False True False\n", "True True True True\n" ] } ], "source": [ "isim=\"Volkan\"\n", "user=\"ABC123\"\n", "yas=\"42\" #tırnak içinde olmalı\n", "mail=\"volkan.yurtseven@hotmail.com\"\n", "\n", "print(isim.isalnum(),user.isalnum(),yas.isalnum(),mail.isalnum())\n", "print(isim.isalpha(),user.isalpha(),yas.isalpha(),mail.isalpha())\n", "print(isim.isdigit(),user.isdigit(),yas.isdigit(),mail.isdigit()) #isnumeric de olur. fark için https://stackoverflow.com/questions/44891070/whats-the-difference-between-str-isdigit-isnumeric-and-isdecimal-in-python\n", "print(isim.isprintable(),user.isprintable(),yas.isprintable(),mail.isprintable())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tüm diğer string metodları için şuraya bakabilirsiniz: https://www.w3schools.com/python/python_ref_string.asp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## özel karekterler ve literaller" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:14:48.704386Z", "start_time": "2021-05-15T15:14:48.698402Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Şifre:\"abc123\"\n", "c:\\python\\abc\\xyz\\sdf\n", "c:\\python\\abc\\xyz\\sdf\n" ] } ], "source": [ "#escape\n", "print(\"Şifre:\\\"abc123\\\"\")\n", "print(\"c:\\\\python\\\\abc\\\\xyz\\\\sdf\")\n", "print(r\"c:\\python\\abc\\xyz\\sdf\") #r:raw, escape char'ı görmezden gel demek" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:15:28.241971Z", "start_time": "2021-05-15T15:15:28.237943Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] } ], "source": [ "#literaller: b,r,f\n", "a=b\"volkan\" \n", "b=\"volkan\"\n", "print(type(a))\n", "print(type(b))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:15:36.168794Z", "start_time": "2021-05-15T15:15:36.163806Z" } }, "outputs": [ { "data": { "text/plain": [ "55" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sys\n", "sys.getsizeof(a)\n", "sys.getsizeof(b)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:17:16.459938Z", "start_time": "2021-05-15T15:17:16.455911Z" } }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "adres1=\"c:\\\\falanca\\\\filanca\"\n", "adres2=r\"c:\\falanca\\filanca\"\n", "adres1==adres2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## diğer işlemler" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['v', 'o', 'l', 'k', 'a', 'n', ' ', 'y', 'u', 'r', 't', 's', 'e', 'v', 'e', 'n']\n" ] } ], "source": [ "#liste çevirme\n", "liste=list(metin)\n", "print(liste)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "-1\n" ] }, { "ename": "ValueError", "evalue": "substring not found", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\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 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"l\"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mmetin\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmetin\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"z\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#bulamazsa -1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmetin\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"z\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#bulamazsa hata alır\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mValueError\u001b[0m: substring not found" ] } ], "source": [ "#içinde var mı kontrolü\n", "print(\"l\" in metin)\n", "print(metin.find(\"z\")) #bulamazsa -1\n", "print(metin.index(\"z\")) #bulamazsa hata alır" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "v\n", "o\n", "l\n", "k\n", "a\n", "n\n", " \n", "y\n", "u\n", "r\n", "t\n", "s\n", "e\n", "v\n", "e\n", "n\n" ] } ], "source": [ "for m in metin:\n", " print(m,end=\"\\n\")" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "#aralarda boşluk falan varsa \"r\" başta olacak şekilde kullanırız. c#'taki @ gibi\n", "path=r\"E:\\falan filan klasörü\\sub klasör\"" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "metin.count(\"e\") #metin değişkeninde e harfi kaç kez geçiyor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## string modülü" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:32:18.288235Z", "start_time": "2021-05-15T15:32:18.284245Z" } }, "outputs": [], "source": [ "import string" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:33:28.223886Z", "start_time": "2021-05-15T15:33:28.213888Z" } }, "outputs": [ { "data": { "text/plain": [ "'!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~ \\t\\n\\r\\x0b\\x0c'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "' \\t\\n\\r\\x0b\\x0c'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'0123456789'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "string.punctuation\n", "string.printable\n", "string.whitespace\n", "string.digits\n", "string.ascii_letters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Koşullu yapılar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Koşullu yapılar, döngüler ve veri yapıları tüm programalama dillerinin ortak özellikleri olup iyi kavranması gerekirler. Bu konuda kendinizi test edeceğiniz güzel bir site var. Burada çeştli konularda kolaydan zora kadar farklı seviyelerde sorular var, bunları çözüp gönderiyorsunuz, puan kazanıyorsunuz. bu siteyi kullanmanızı tavsiye ederim.\n", "\n", "https://www.hackerrank.com" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20den küçük\n" ] } ], "source": [ "i=10 #bunu sırasıyla 10,20 ve 30 yapark çalışıtırın\n", "if i<20:\n", " print(\"20den küçük\")\n", "elif i==20: #çift =\n", " print(\"tam 20\")\n", "else:\n", " print(\"20den büyük\")" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "low\n" ] } ], "source": [ "#one-liner -(ternary) if-else\n", "x=3\n", "sonuc=\"high\" if x>10 else \"low\"\n", "print(sonuc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Döngüler" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Genelde list, dict gibi veri yapıları içinde dolaşmaya yararlar. Bu veri yapılarını az aşağıda detaylı göreceğiz\n", "\n", "iki tür döngü yapımız var. while ve for.
\n", "for, foreach şeklindedir, klasik for yok. onun yerine range fonksiyonundan yararlanılabilir." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "apple\n", "banana\n", "cherry\n" ] } ], "source": [ "fruits = [\"apple\", \"banana\", \"cherry\"]\n", "for x in fruits:\n", " print(x)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "apple\n", "banana\n", "cherry\n" ] } ], "source": [ "#klasik for için range kullanımı.\n", "for i in range(len(fruits)):\n", " print(fruits[i])" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "v-o-l-k-a-n-" ] } ], "source": [ "#metinler de loop ile dolaşılabilir\n", "isim=\"volkan\"\n", "for i in isim:\n", " print(i,end=\"-\")" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "apple\n", "banana\n" ] } ], "source": [ "#döngüden çıkış\n", "fruits = [\"apple\", \"banana\", \"cherry\"]\n", "for x in fruits:\n", " print(x)\n", " if x == \"banana\":\n", " break" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "#while ile bir şart gerçekleş(me)tiği sürece döngüde kalırız\n", "i = 1\n", "while i < 6:\n", " print(i)\n", " i += 1" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n" ] } ], "source": [ "#belirli bir ara şart gerçekleşirse döngüden çıkabiliriz\n", "i = 1\n", "while i < 6:\n", " print(i)\n", " if i == 3:\n", " break\n", " i += 1" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " #\n", " ##\n", " ###\n", " ####\n", " #####\n", "######\n" ] } ], "source": [ "#hackerrank sitesindeki bir ödev\n", "def staircase(n):\n", " for i in range(n):\n", " print((n-i-1)*\" \"+\"#\"*(i+1))\n", "staircase(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Döngü içinde \"else\" kullanımı" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### for döngülerinde" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "tüm liste bittiğinde son olarak bu kısım yürütülür" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "bitti\n" ] } ], "source": [ "for i in range(4):\n", " print(i)\n", "else:\n", " print(\"bitti\")" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10 equals 2*5.0\n", "11 bir asal sayıdır\n", "12 equals 2*6.0\n", "13 bir asal sayıdır\n", "14 equals 2*7.0\n", "15 equals 3*5.0\n", "16 equals 2*8.0\n", "17 bir asal sayıdır\n", "18 equals 2*9.0\n", "19 bir asal sayıdır\n" ] } ], "source": [ "for num in range(10,20):\n", " for i in range(2,num):\n", " if num%i==0:\n", " j=num/i\n", " print(\"{} equals {}*{}\".format(num,i,j))\n", " break\n", " else:\n", " print(num,\" bir asal sayıdır\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### while döngülerinde" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "koşul sağlanmadığında yürütülür" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "4\n", "3\n", "2\n", "1\n", "artık sağlanmıyor\n" ] } ], "source": [ "n=5\n", "while n!=0:\n", " print(n)\n", " n-=1\n", "else:\n", " print(\"artık sağlanmıyor\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## içiçe döngülerden çıkış" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "içiçe döngü varsa, break ifadesi en içteki döngüden çıkar ve o bloktan sonraki ilk satırdan devam eder" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### iç döngüden çıkış, dış döngüye devam" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T20:42:53.102424Z", "start_time": "2020-11-22T20:42:53.093449Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b ali\n", "b dursun\n", "b ıtır\n", "b emel\n", "b cemil\n", "b için iç döngüde eşleşme bulunamadı\n", "\n", "a ali\n", "ali ekleniyor ve iç döngüden çıkış yapılacak\n", "\n", "c ali\n", "c dursun\n", "c ıtır\n", "c emel\n", "c cemil\n", "cemil ekleniyor ve iç döngüden çıkış yapılacak\n", "\n", "d ali\n", "d dursun\n", "dursun ekleniyor ve iç döngüden çıkış yapılacak\n", "\n", "e ali\n", "e dursun\n", "e ıtır\n", "e emel\n", "emel ekleniyor ve iç döngüden çıkış yapılacak\n", "\n", "['ali', 'cemil', 'dursun', 'emel']\n" ] } ], "source": [ "liste=[]\n", "for x in list(\"bacde\"):\n", " for z in [\"ali\",\"dursun\",\"ıtır\",\"emel\",\"cemil\"]:\n", " print(x,z) #kontrol için\n", " if x in z:\n", " print(f\"{z} ekleniyor ve iç döngüden çıkış yapılacak\\n\")\n", " liste.append(z)\n", " break #bir kez ekledikten sonra çıkıyorum, o yüzden mükerrer ekleme olmuyor, comment/uncomment\n", " else:\n", " print(f\"{x} için iç döngüde eşleşme bulunamadı\\n\")\n", "print(liste)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### tüm döngüden çıkış" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T20:44:32.757763Z", "start_time": "2020-11-22T20:44:32.751738Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b ali\n", "b dursun\n", "b ıtır\n", "b emel\n", "b cemil\n", "dış döngüdeki b için tur tamamlandı,sonraki için devam\n", "\n", "k ali\n", "k dursun\n", "k ıtır\n", "k emel\n", "k cemil\n", "dış döngüdeki k için tur tamamlandı,sonraki için devam\n", "\n", "c ali\n", "c dursun\n", "c ıtır\n", "c emel\n", "c cemil\n", "cemil ekleniyor ve tüm döngüden çıkış yapılacak\n", "\n", "['cemil']\n" ] } ], "source": [ "#herhangi birinin olması yeterliyse, ilk gördüğümü ekleyip çıkayım\n", "liste=[]\n", "for x in list(\"bkcde\"): #a'yı k yapalım\n", " for z in [\"ali\",\"dursun\",\"ıtır\",\"emel\",\"cemil\"]:\n", " print(x,z) #kontrol için\n", " if x in z:\n", " print(f\"{z} ekleniyor ve tüm döngüden çıkış yapılacak\\n\")\n", " liste.append(z)\n", " break\n", " else:\n", " print(f\"dış döngüdeki {x} için tur tamamlandı,sonraki için devam\\n\")\n", " continue \n", " break #iç döngüden çıkıldığında buraya gelinir\n", " \n", "print(liste)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(11, 15, 26)]" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#iki dizidekilerin toplamı 20den büyük olduğunda çık\n", "dizi=[[11,21,3],[5,15,6]]\n", "records=[]\n", "\n", "for j in dizi[0]:\n", " for i in dizi[1]: \n", " if j+i>20:\n", " records.append((j,i,j+i))\n", " break\n", " else:\n", " continue\n", " break\n", "\n", "records" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(11, 15, 26)]\n" ] } ], "source": [ "#2.yöntem. bi fonk içinte return kullanmak\n", "records=[]\n", "def myfonk():\n", " dizi=[[11,21,3],[5,15,6]] \n", " for j in dizi[0]:\n", " for i in dizi[1]: \n", " if j+i>20:\n", " records.append((j,i,j+i))\n", " return\n", "\n", "myfonk()\n", "print(records)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(11, 15, 26)]" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#3.yöntem: exception\n", "records=[]\n", "try:\n", " dizi=[[11,21,3],[5,15,6]] \n", " for j in dizi[0]:\n", " for i in dizi[1]: \n", " if j+i>20:\n", " records.append((j,i,j+i))\n", " raise StopIteration\n", "except StopIteration: pass\n", "records" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data Structures(Veri yapıları)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## List" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1]\n", "True\n" ] } ], "source": [ "liste=[0,1,2,3,4,5]\n", "liste.append(6)\n", "print(liste[:2]) #stringler gibi slicing yapılır\n", "print(3 in liste) #üyelik kontrolü" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6\n", "[0, 1, 2, 3, 4, 5]\n" ] } ], "source": [ "son=liste.pop() #son elemanı çıkarıp buna atar\n", "print(son)\n", "print(liste)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]\n" ] } ], "source": [ "rangelist=list(range(0,100,3))\n", "print(rangelist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sıralama" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sort metodu bir listeyi kendi üstünde sıralar, sonuç olarak birşey döndürmez. yani sıralanmış listeyi bir değişkene atayamayız. sıralanmış halini başka bir değişkene atamak istersek sorted fonkisyonunu kullanırız." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 ----------\n", "1\n", " \n", "3 ----------\n", "2\n", " \n", "5 ----------\n", "['armut', 'elma', 'muz', 'muz', 'portakal', 'çilek', 'üzüm']\n", " \n", "7 ----------\n", "['üzüm', 'çilek', 'portakal', 'muz', 'muz', 'elma', 'armut']\n", " \n" ] } ], "source": [ "meyveler=[\"elma\",\"muz\",\"portakal\",\"çilek\",\"üzüm\",\"armut\",\"muz\"]\n", "printy(meyveler.index(\"muz\")) #ilk gördüğün indeksi\n", "printy(meyveler.count(\"muz\"))\n", "meyveler.sort()\n", "printy(meyveler)\n", "meyveler.reverse()\n", "printy(meyveler)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['üzüm', 'çilek', 'portakal', 'muz', 'muz', 'elma', 'armut']\n" ] } ], "source": [ "siralimeyveler=sorted(meyveler,reverse=True) #ayrıca tersten sırala demiş olduk. bu parametre normal sort metodunda da var\n", "print(siralimeyveler)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tuple" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "List gibi ama değişmez yapılardır yani eleman eklenip çıkarılamaz. [] yerine () veya parantezsiz" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "tpl=(1,2,3)\n", "tpl2=1,2,3\n", "print(type(tpl2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comprehension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "tüm veri yapılarıyla uygulanabilir. uzun döngü yazmaktan kurtarır. c#'taki LINQ işlemlerinin benzer hatta daha güzel alternatifi" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198]\n" ] } ], "source": [ "rangelistinikikatı=[x*2 for x in rangelist]\n", "print(rangelistinikikatı)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### koşullu comprehension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[x for x in datastruct if x ...]
\n", "[x if ... else y for x in datastruct]" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['üzüm', 'muz', 'muz', 'elma']" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kısaisimlimeyveler=[x for x in meyveler if len(x)<5]\n", "kısaisimlimeyveler" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 3, 5, 7, 9]\n", "[1, '', 3, '', 5, '', 7, '', 9]\n" ] } ], "source": [ "liste=range(1,10)\n", "sadecetekler=[sayı for sayı in liste if sayı % 2 !=0] #tek if\n", "tekler=[sayı if sayı%2!=0 else \"\" for sayı in liste] #if-else\n", "print(sadecetekler)\n", "print(tekler)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### içiçe(nested) list comprehension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "****syntax:[x for iç in dış for x in iç]****" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2 boyutlu bir matrisi düzleştirmek istiyorum
\n", "matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
\n", "Beklediğimiz çıktı: flatten_matrix = [1, 2, 3, 4, 5, 6, 7, 8, 9]" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n" ] } ], "source": [ "# 2-D List \n", "matrix = [[1, 2, 3], [4, 5], [6, 7, 8, 9]] \n", "\n", "flatten_matrix = [] \n", "\n", "for sublist in matrix: \n", "\tfor val in sublist: \n", "\t\tflatten_matrix.append(val) \n", "\t\t\n", "print(flatten_matrix) \n" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n" ] } ], "source": [ "# 2-D List \n", "matrix = [[1, 2, 3], [4, 5], [6, 7, 8, 9]] \n", "\n", "# Nested List Comprehension to flatten a given 2-D matrix \n", "flatten_matrix = [val for sublist in matrix for val in sublist] \n", "\n", "print(flatten_matrix) " ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Venus', 'Earth', 'Mars', 'Pluto']\n" ] } ], "source": [ "# 2-D List of planets \n", "planets = [['Mercury', 'Venus', 'Earth'], ['Mars', 'Jupiter', 'Saturn'], ['Uranus', 'Neptune', 'Pluto']] \n", "\n", "flatten_planets = [] \n", "\n", "for sublist in planets: \n", "\tfor planet in sublist: \n", "\t\t\n", "\t\tif len(planet) < 6: \n", "\t\t\tflatten_planets.append(planet) \n", "\t\t\n", "print(flatten_planets) " ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Venus', 'Earth', 'Mars', 'Pluto']\n" ] } ], "source": [ "flatten_planets = [planet for sublist in planets for planet in sublist if len(planet) < 6] \n", "print(flatten_planets)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Venus', 'Earth', 'Mars', 'Pluto']" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kısalar=[p for iç in planets for p in iç if len(p)<6]\n", "kısalar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Daha genel bir gösterim için https://stackoverflow.com/questions/18072759/list-comprehension-on-a-nested-list sayfasındaki gif animasyonlu açıklamaya bakınız" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matrisler ve matrislerde comprehension" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n", "7 ----------\n", "[[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n", " \n", "8 ----------\n", "[1, 4, 7]\n", " \n", "9 ----------\n", "[[1, 4, 7], [2, 5, 8], [3, 6, 9]]\n", " \n", "10 ----------\n", "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n", " \n" ] } ], "source": [ "matris=[\n", " [1,2,3],\n", " [4,5,6],\n", " [7,8,9]\n", "]\n", "print(len(matris))\n", "printy([satır for satır in matris]) #satır satır\n", "printy([satır[0] for satır in matris]) #ilk sütun\n", "printy([[satır[i] for satır in matris] for i in range(3)]) #sütun sütun, transpozesi\n", "printy([x for iç in matris for x in iç]) #nested" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "amaç aşağıdakini elde etmek olsun\n", "
\n",
    "matrix = [[0, 1, 2, 3, 4],\n",
    "          [0, 1, 2, 3, 4],\n",
    "          [0, 1, 2, 3, 4],\n",
    "          [0, 1, 2, 3, 4],\n",
    "          [0, 1, 2, 3, 4]]\n",
    "
" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]\n" ] } ], "source": [ "matrix = [] \n", "\n", "for i in range(5): \n", "\t\n", "\t# Append an empty sublist inside the list \n", "\tmatrix.append([]) \n", "\t\n", "\tfor j in range(5): \n", "\t\tmatrix[i].append(j) \n", "\t\t\n", "print(matrix) \n" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]\n" ] } ], "source": [ "# Nested list comprehension \n", "matrix = [[j for j in range(5)] for i in range(5)] \n", "\n", "print(matrix) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stack" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Normalde böyle bi sınıf yok. list'i stack gibi kullanırız. append ve pop sayesinde. ilk giren ilk çıkar" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3]" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stack=[1,2,3]\n", "stack.append(4)\n", "stack.pop()\n", "stack" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Queue" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bunu da istersek listten yaparız, ilk giren son çıkar. ama bunun için collections modülünde bi sınıf var" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "deque([2, 3, 4])\n" ] } ], "source": [ "from collections import deque\n", "kuyruk=deque([1,2,3])\n", "kuyruk.append(4)\n", "sıradaki=kuyruk.popleft()\n", "print(sıradaki)\n", "print(kuyruk)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dictionary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Key-value ikililerini tutarlar. Sırasızdırlar(EDIT:Python 3.7den itibaren girdilen sırayı korur), indeksle ulaşamayız. key'lerle valuelara ulaşırız veya döngü içinde dolanarak ikisine birden tek seferde de ulaşabiliriz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Yaratım" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Klasik" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 ----------\n", "dict_keys(['one', 'two'])\n", " \n", "6 ----------\n", "dict_values(['bir', 'zwei'])\n", " \n", "7 ----------\n", "dict_items([('one', 'bir'), ('two', 'zwei')])\n", " \n", "bir\n", "N/A\n" ] } ], "source": [ "dict_={}\n", "dict_[\"one\"]=\"bir\" #add,append, insert gibi bir metodu yok, direkt atanıyor\n", "dict_[\"two\"]=\"iki\"\n", "dict_[\"two\"]=\"zwei\"\n", "printy(dict_.keys())\n", "printy(dict_.values())\n", "printy(dict_.items())\n", "print(dict_[\"one\"])\n", "#print(dict_[\"three\"]) # hata alır, almaması için get kullan\n", "print(dict_.get(\"three\",\"N/A\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### dict metodu ile ikili elemanlardan oluşan bir yapıdan" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "bu ikili yapılar genelde zip veya enumerate olacaktır. bakınız ilgili fonksiyonar." ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/plain": [ "'bir'" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tpl=[(\"one\",\"bir\"),(\"two\",\"iki\"),(\"three\",\"üç\")]\n", "dict_=dict(tpl)\n", "print(type(dict_))\n", "dict_[\"one\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### comprehension ile" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dict_items([(0, 0), (2, 4), (4, 16), (6, 36), (8, 64)])\n" ] } ], "source": [ "sayılar=list(range(10))\n", "ciftlerinkaresi={x: x**2 for x in sayılar if x%2==0}\n", "print(ciftlerinkaresi.items())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### elemanlarda dolaşma" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0\n", "2 4\n", "4 16\n", "6 36\n", "8 64\n" ] } ], "source": [ "for k,v in ciftlerinkaresi.items():\n", " print(k,v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### çeşitli metodlar" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'ciftlerinkaresi' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\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 2\u001b[0m \u001b[0mciftlerinkaresi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mdel\u001b[0m \u001b[0mciftlerinkaresi\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mciftlerinkaresi\u001b[0m \u001b[1;31m#hata verir, artık bellekten uçtu\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mNameError\u001b[0m: name 'ciftlerinkaresi' is not defined" ] } ], "source": [ "ciftlerinkaresi.clear()\n", "ciftlerinkaresi.items()\n", "del ciftlerinkaresi\n", "ciftlerinkaresi #hata verir, artık bellekten uçtu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Set" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bunlar da dict gibi sırasızdır. dict gibi {} içinde tanımlanırlar. uniqe değerleri tutarlar. bir listteki duplikeleri ayırmak ve membership kontrolü için çok kullanılırlar" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 2, 3, 4, 5}" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "liste=[1,1,2,3,4,4,5]\n", "set_=set(liste)\n", "set_" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 ----------\n", "{1, 2, 3, 4, 5} {2, 3, 4} {2, 3, 4, 5, 6}\n", " \n", "6 ----------\n", "----diff\n", " \n", "7 ----------\n", "{1, 5}\n", " \n", "8 ----------\n", "{1}\n", " \n", "9 ----------\n", "set()\n", " \n", "10 ----------\n", "set()\n", " \n", "11 ----------\n", "{6}\n", " \n", "12 ----------\n", "{5, 6}\n", " \n", "13 ----------\n", "- intersection----\n", " \n", "14 ----------\n", "{2, 3, 4}\n", " \n", "15 ----------\n", "{2, 3, 4, 5}\n", " \n", "16 ----------\n", "{2, 3, 4}\n", " \n", "17 ----------\n", "{2, 3, 4}\n", " \n", "18 ----------\n", "{2, 3, 4, 5}\n", " \n", "19 ----------\n", "{2, 3, 4}\n", " \n", "20 ----------\n", "----union---\n", " \n", "21 ----------\n", "{1, 2, 3, 4, 5}\n", " \n", "22 ----------\n", "{1, 2, 3, 4, 5, 6}\n", " \n", "23 ----------\n", "{1, 2, 3, 4, 5}\n", " \n", "24 ----------\n", "{2, 3, 4, 5, 6}\n", " \n", "25 ----------\n", "{1, 2, 3, 4, 5, 6}\n", " \n", "26 ----------\n", "{2, 3, 4, 5, 6}\n", " \n" ] } ], "source": [ "set1={1,2,3,4,5}\n", "set2={2,3,4}\n", "set3={2,3,4,5,6}\n", "\n", "printy(set1,set2,set3)\n", "printy(\"----diff\")\n", "printy(set1.difference(set2))\n", "printy(set1.difference(set3))\n", "printy(set2.difference(set1))\n", "printy(set2.difference(set3))\n", "printy(set3.difference(set1))\n", "printy(set3.difference(set2))\n", "printy(\"- intersection----\")\n", "printy(set1.intersection(set2))\n", "printy(set1.intersection(set3))\n", "printy(set2.intersection(set1))\n", "printy(set2.intersection(set3))\n", "printy(set3.intersection(set1))\n", "printy(set3.intersection(set2))\n", "printy(\"----union---\")\n", "printy(set1.union(set2))\n", "printy(set1.union(set3))\n", "printy(set2.union(set1))\n", "printy(set2.union(set3))\n", "printy(set3.union(set1))\n", "printy(set3.union(set2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Not: Yukarıdaki altalta aynı hizada olan tüm printy ifadesini tek seferde yapmanın yolu var. ben mesela bunların hepsi print iken printy'yi tek seferde yaptım. Alt tuşuna basarak seçmek. aşağıdaki gibi seçip t tuşuna basarsam tüm ty'ler t olur." ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zip" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "x=[1,2,3]\n", "y=[10,20,30]\n", "onkatlar=zip(x,y)\n", "#print(list(onkatlar)) #yazdırmak için liste çevir. bi kez liste çevirlince artık zip özelliği kalmaz, \n", "#o yüzden alttaki blok çalışmaz,o yüzden geçici olarak commentledim. deneyin ve görün" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2, 3)" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#tekrar ayırmak için\n", "x2, y2 = zip(*onkatlar)\n", "x2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Zip vs Dict" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 10\n", "2 20\n", "3 30\n" ] } ], "source": [ "a=[1,2,3]\n", "b=[10,20,30]\n", "c=zip(a,b)\n", "for i,j in c:\n", " print(i,j)" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "a=[1,2,3]\n", "b=[10,20,30]\n", "c=zip(a,b)\n", "print(type(list(c)[0]))\n", "dict_=dict(c) #zipten dict üretimi\n", "for k,v in dict_.items():\n", " print(k,v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Listlerle kullanılan önemli fonksiyonlar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Map ve Reduce" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Map: bir veri yapısındaki elemanları sırayla bir fonksiyona gönderir ve sonuç yine bir veri yapısıdır
\n", "Reduce: elemanları sırayla gönderir, bir eritme mantığı var, her bir önceki elamnını sonucyla bir sonraki eleman işleme girer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Map" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 4, 9, 16, 25]" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "items=[1,2,3,4,5]\n", "def kareal(sayı):\n", " return sayı**2\n", "\n", "kareler=map(kareal,items) #lambdalı da olur. map(lambda x: x**2, items)\n", "list(kareler) #yazdırmak için liste çevir\n" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "6\n", "15\n", "28\n", "45\n", "66\n", "91\n", "120\n", "153\n" ] } ], "source": [ "#birden fazla veri yapısı da girebilir işleme\n", "range1=range(1,10)\n", "range2=range(1,20,2)\n", "\n", "mymap=map(lambda x,y:x*y,range1,range2)\n", "for i in mymap:\n", " print(i)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 6, 15, 28, 45, 66, 91, 120, 153]" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#comprehensionla da yapılabilir.\n", "çarpım=[x*y for x,y in zip(range1,range2)]\n", "çarpım" ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "harfler=map(chr,range(97,112))\n", "list(harfler)" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "harfler2=[chr(x) for x in range(97,112)]\n", "harfler2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Reduce" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "362880" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from functools import reduce\n", "def faktoriyel(sayı1,sayı2):\n", " return sayı1*sayı2\n", "\n", "sayılar=range(1,10)\n", "fakt=reduce(faktoriyel,sayılar)\n", "fakt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Filter" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-12-04T17:50:33.788733Z", "start_time": "2020-12-04T17:50:33.783746Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "18\n", "24\n", "32\n" ] } ], "source": [ "ages = [5, 12, 17, 18, 24, 32]\n", "\n", "def myFunc(x):\n", " if x < 18:\n", " return False\n", " else:\n", " return True\n", "\n", "adults = filter(myFunc, ages)\n", "\n", "for x in adults:\n", " print(x)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-12-04T17:51:27.064547Z", "start_time": "2020-12-04T17:51:27.060518Z" } }, "outputs": [ { "data": { "text/plain": [ "[18, 24, 32]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#veya lambda ile\n", "list(filter(lambda x:x>=18,ages))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Enumerate" ] }, { "cell_type": "code", "execution_count": 108, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(1, 'Ocak'), (2, 'Şubat'), (3, 'Mart')]\n", "1 Ocak\n", "2 Şubat\n", "3 Mart\n" ] } ], "source": [ "aylar=[\"Ocak\",\"Şubat\",\"Mart\"]\n", "print(list(enumerate(aylar,start=1)))\n", "dict_=dict(enumerate(aylar,start=1))\n", "for k,v in dict_.items():\n", " print(k,v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### All ve Any" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "True\n", "True\n" ] } ], "source": [ "liste1=[True,True,False]\n", "liste2=[True,True,True]\n", "print(all(liste1))\n", "print(any(liste1))\n", "print(all(liste2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Date Time işlemleri" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modüller ve üyeleri" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [], "source": [ "import datetime as dt\n", "import time as t\n", "import timeit as tit\n", "import dateutil as du\n", "#import timer as tr #bu threadlerle ilgili kullanma, settimer ve killtimer var" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### datetime" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['MAXYEAR', 'MINYEAR', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']\n" ] } ], "source": [ "print([i for i in dir(dt) if not \"__\" in i])" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2020-01-16 20:44:06.031080\n", "20\n", "2020-01-16\n", "2020\n", "2019-04-03\n" ] } ], "source": [ "print(dt.datetime.now())\n", "print(dt.datetime.now().hour) #saliseden yıla kadar hepsi elde edilebilir\n", "print(dt.date.today())\n", "print(dt.date.today().year)\n", "print(dt.date(2019,4,3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### time (süre ölçümlerinde bunu kullancaz, bundaki time metodunu)" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['_STRUCT_TM_ITEMS', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']\n" ] } ], "source": [ "print([i for i in dir(t) if not \"__\" in i])" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Timer', '_globals', 'default_number', 'default_repeat', 'default_timer', 'dummy_src_name', 'gc', 'itertools', 'main', 'reindent', 'repeat', 'sys', 'template', 'time', 'timeit']\n" ] } ], "source": [ "print([i for i in dir(tit) if not \"__\" in i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### dateutil" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['_common', '_version', 'parser', 'relativedelta', 'tz']\n" ] } ], "source": [ "print([i for i in dir(du) if not \"__\" in i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Süre ölçümü" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Performans amaçlı süre ölçümü(sonuçtan bağımsız)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- `%'li` olanı bir fonksiyon takip eder, `%%'li` kullanımda ise alt satırdan yazarsın. \n", "- `Time` olan tek seferlik run'ın süresini verirken `timeit` onlarca kez çalıştırıp ortalama süre verir" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "78.9 ms ± 3.45 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%%timeit\n", "x=sum(range(1000000))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2020-09-02T18:59:00.443453Z", "start_time": "2020-09-02T18:59:00.277897Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Wall time: 154 ms\n" ] } ], "source": [ "%%time\n", "x=sum(range(1000000))" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "75.6 ms ± 1.4 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "def hesapla(): \n", " y=sum(range(1000000))\n", " \n", "%timeit hesapla()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Süreyle birlikte sonuç görme" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [], "source": [ "#tit.Timer(hesapla).timeit() uzun sürüyo ve bitmiyo ??" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hey\n", "süre:0.07879209518432617\n" ] } ], "source": [ "bas=t.time()\n", "print(\"hey\")\n", "hesapla()\n", "bit=t.time()\n", "print(\"süre:{}\".format(bit-bas))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### jupyter nbextensions" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "nbextensionsı hala kurmadıysanız alın size bir sebep daha. bu süre ölçümü kodlarına gerek yok. yukarıdaki eklentiyle her hücrenin çalışma süresini veriyor. Bir örnek:" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Önemli bazı modüller" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Aşağıda önemli olduğunu düşündüğüm bazı modülleri bulacaksınız. Tabiki bunların dışında da başak kütüphaneler/modüller var, bunları da zamanla öğreneceksiniz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## os " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "İşletim sisteminden bağımsız çalışacak bir koda(dosyalama sistemi v.s ile ilgili) ihtiyacımız olduğunda os modülünü kullanırız." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Klasör ve dosya işlemleri " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'E:\\\\OneDrive\\\\Dökümanlar\\\\GitHub\\\\PythonRocks'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'.'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "os.getcwd() #o anki aktif folder\n", "os.curdir #mevcut dizini temsil eden karakter, genelde bu . oluyor. Bunu daha çok prefix path olarak kullanırız" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "os.chdir(os.curdir + \"\\.git\") #aktif klasörü değiştiriyoruz" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'..'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.pardir #parent klasörü temsil eden karakter" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "['COMMIT_EDITMSG',\n", " 'config',\n", " 'description',\n", " 'FETCH_HEAD',\n", " 'HEAD',\n", " 'hooks',\n", " 'index',\n", " 'info',\n", " 'logs',\n", " 'objects',\n", " 'ORIG_HEAD',\n", " 'refs']" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.listdir() #o anki aktif folderdaki dosyaları lsiteler" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['.git',\n", " '.gitattributes',\n", " '.gitignore',\n", " '.ipynb_checkpoints',\n", " '.vscode',\n", " 'abc.txt',\n", " 'AutoML.py',\n", " 'cheatsheet.png',\n", " 'Classification Examples.ipynb',\n", " 'EDA with Python.ipynb',\n", " 'EDA.py',\n", " 'LICENSE',\n", " 'Machine Learning with Spotify.ipynb',\n", " 'Numpy Pandas challenge.ipynb',\n", " 'Python Challenges.ipynb',\n", " 'Python Genel.ipynb',\n", " 'Python ile Machine Learning.ipynb',\n", " 'Python ile Veri Analizi.ipynb',\n", " 'README.md',\n", " 'Regression Examples.ipynb',\n", " 'test.cs',\n", " 'test.txt',\n", " 'Untitled.ipynb',\n", " 'Untitled1.ipynb',\n", " 'utility.py',\n", " '__pycache__']" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.listdir(os.pardir)" ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.exists('Python Genel.ipynb') #bir dosya/klasör mevcut mu" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.isfile('olmayandosya.txt') #parametredeki bir dosya mı? veya bir dosya mevcut mu anlamında da kullanılabilir." ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 128, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.isdir(\"klasor\")" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['.gitattributes', '.gitignore', 'abc.txt', 'cheatsheet.png', 'LICENSE', 'Python Genel.ipynb', 'Python ile Veri Analizi.ipynb', 'test.txt', 'utility.py']\n" ] } ], "source": [ "# list all files in a directory in Python.\n", "from os import listdir\n", "from os.path import isfile, join\n", "p=os.getcwd()\n", "files_list = [f for f in listdir(p) if isfile(join(p, f))]\n", "print(files_list);" ] }, { "cell_type": "code", "execution_count": 130, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a1\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a1\\a11\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a1\\a12\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a2\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\Yeni klasör\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\b\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\b\\b1\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\c\n" ] } ], "source": [ "dizin= r\"E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\"\n", "for kökdizin, altdizinler, dosyalar in os.walk(dizin):\n", " print(kökdizin)" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\mevcut klasör yeni.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\roo1.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\roo2.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a_roo1.accdb\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a_roo2.pptx\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\mevcutyeni2.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a1\\a1_roo1.pub\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a1\\a11\\a11_1.bmp\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a1\\a11\\a11_2.xlsx\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a1\\a12\\a12_1.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a2\\a2_.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a2\\a2_2.accdb\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\a2\\a2_3.docx\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\a\\Yeni klasör\\yeniklasörde.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\b\\b_roo1.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\b\\b_roo2.xlsx\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\b\\b1\\b1_1.bmp\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\b\\b1\\b1_2.txt\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\b\\b1\\b1_3.pptx\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\c\\c_1.bmp\n", "E:\\OneDrive\\udemy dosyaları\\vba2\\FSO Örnek\\c\\c_2.txt\n" ] } ], "source": [ "for kökdizin, altdizinler, dosyalar in os.walk(dizin):\n", " for dosya in dosyalar:\n", " print(os.sep.join([kökdizin, dosya]))" ] }, { "cell_type": "code", "execution_count": 132, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Last modified: 1579164058.249096\n", "Created: Thu Jan 16 11:40:54 2020\n" ] } ], "source": [ "import os.path, time, datetime\n", "print(\"Last modified: %s\" % os.path.getmtime(\"abc.txt\")) #formatlanmamış\n", "print(\"Created: %s\" % time.ctime(os.path.getctime(\"abc.txt\")))" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [], "source": [ "os.startfile('calc.exe') #dosya açar, program başaltır, internet sitesine gider v.s" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [], "source": [ "os.startfile(r'E:\\OneDrive\\Uygulama Geliştirme\\PDF dokümantasyon\\AI & DS\\Pandas & EDA & ML\\pandas.pdf')" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [], "source": [ "os.startfile(\"www.volkanyurtseven.com\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sistem ve Environment bilgileri" ] }, { "cell_type": "code", "execution_count": 136, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nt\n", "Windows\n", "10\n" ] } ], "source": [ "import platform, os\n", "print(os.name)\n", "print(platform.system())\n", "print(platform.release())" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'ALLUSERSPROFILE': 'C:\\\\ProgramData',\n", " 'APPDATA': 'C:\\\\Users\\\\volka\\\\AppData\\\\Roaming',\n", " 'COMMONPROGRAMFILES': 'C:\\\\Program Files\\\\Common Files',\n", " 'COMMONPROGRAMFILES(X86)': 'C:\\\\Program Files (x86)\\\\Common Files',\n", " 'COMMONPROGRAMW6432': 'C:\\\\Program Files\\\\Common Files',\n", " 'COMPUTERNAME': 'YENILENOVO',\n", " 'COMSPEC': 'C:\\\\Windows\\\\system32\\\\cmd.exe',\n", " 'DRIVERDATA': 'C:\\\\Windows\\\\System32\\\\Drivers\\\\DriverData',\n", " 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer',\n", " 'FPS_BROWSER_USER_PROFILE_STRING': 'Default',\n", " 'HOMEDRIVE': 'C:',\n", " 'HOMEPATH': '\\\\Users\\\\volka',\n", " 'LOCALAPPDATA': 'C:\\\\Users\\\\volka\\\\AppData\\\\Local',\n", " 'LOGONSERVER': '\\\\\\\\YENILENOVO',\n", " 'NUMBER_OF_PROCESSORS': '8',\n", " 'ONEDRIVE': 'E:\\\\OneDrive',\n", " 'ONEDRIVECONSUMER': 'E:\\\\OneDrive',\n", " 'OS': 'Windows_NT',\n", " 'PATH': 'C:\\\\Users\\\\volka\\\\Anaconda3;C:\\\\Users\\\\volka\\\\Anaconda3\\\\Library\\\\mingw-w64\\\\bin;C:\\\\Users\\\\volka\\\\Anaconda3\\\\Library\\\\usr\\\\bin;C:\\\\Users\\\\volka\\\\Anaconda3\\\\Library\\\\bin;C:\\\\Users\\\\volka\\\\Anaconda3\\\\Scripts;C:\\\\Windows\\\\system32;C:\\\\Windows;C:\\\\Windows\\\\System32\\\\Wbem;C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\;C:\\\\Windows\\\\System32\\\\OpenSSH\\\\;C:\\\\Program Files\\\\dotnet\\\\;C:\\\\Program Files\\\\Microsoft SQL Server\\\\130\\\\Tools\\\\Binn\\\\;C:\\\\Program Files\\\\Microsoft SQL Server\\\\Client SDK\\\\ODBC\\\\170\\\\Tools\\\\Binn\\\\;C:\\\\Program Files (x86)\\\\LINQPad5;C:\\\\Program Files (x86)\\\\Microsoft SQL Server\\\\150\\\\DTS\\\\Binn\\\\;E:\\\\Program Files\\\\Brackets\\\\command;C:\\\\Users\\\\volka\\\\AppData\\\\Local\\\\Microsoft\\\\WindowsApps;C:\\\\Users\\\\volka\\\\AppData\\\\Local\\\\GitHubDesktop\\\\bin;C:\\\\Users\\\\volka\\\\AppData\\\\Local\\\\Programs\\\\Microsoft VS Code\\\\bin;C:\\\\Users\\\\volka\\\\.dotnet\\\\tools;C:\\\\Users\\\\volka\\\\Anaconda3\\\\lib\\\\site-packages\\\\numpy\\\\.libs',\n", " 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',\n", " 'PROCESSOR_ARCHITECTURE': 'AMD64',\n", " 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 10, GenuineIntel',\n", " 'PROCESSOR_LEVEL': '6',\n", " 'PROCESSOR_REVISION': '8e0a',\n", " 'PROGRAMDATA': 'C:\\\\ProgramData',\n", " 'PROGRAMFILES': 'C:\\\\Program Files',\n", " 'PROGRAMFILES(X86)': 'C:\\\\Program Files (x86)',\n", " 'PROGRAMW6432': 'C:\\\\Program Files',\n", " 'PSMODULEPATH': 'C:\\\\Program Files\\\\WindowsPowerShell\\\\Modules;C:\\\\Windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\Modules',\n", " 'PUBLIC': 'C:\\\\Users\\\\Public',\n", " 'SESSIONNAME': 'Console',\n", " 'SYSTEMDRIVE': 'C:',\n", " 'SYSTEMROOT': 'C:\\\\Windows',\n", " 'TEMP': 'C:\\\\Users\\\\volka\\\\AppData\\\\Local\\\\Temp',\n", " 'TMP': 'C:\\\\Users\\\\volka\\\\AppData\\\\Local\\\\Temp',\n", " 'USERDOMAIN': 'YENILENOVO',\n", " 'USERDOMAIN_ROAMINGPROFILE': 'YENILENOVO',\n", " 'USERNAME': 'volka',\n", " 'USERPROFILE': 'C:\\\\Users\\\\volka',\n", " 'WINDIR': 'C:\\\\Windows',\n", " 'CONDA_PREFIX': 'C:\\\\Users\\\\volka\\\\Anaconda3',\n", " 'JPY_INTERRUPT_EVENT': '2692',\n", " 'IPY_INTERRUPT_EVENT': '2692',\n", " 'JPY_PARENT_PID': '2460',\n", " 'TERM': 'xterm-color',\n", " 'CLICOLOR': '1',\n", " 'PAGER': 'cat',\n", " 'GIT_PAGER': 'cat',\n", " 'MPLBACKEND': 'module://ipykernel.pylab.backend_inline'}" ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(os.environ)" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\\Users\\volka\n", "volka\n" ] } ], "source": [ "print(dict(os.environ)[\"HOMEPATH\"])\n", "print(dict(os.environ)[\"USERNAME\"])" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'C:\\\\Users\\\\volka'" ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.expanduser('~')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## random " ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T15:44:49.592635Z", "start_time": "2020-11-22T15:44:49.579668Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n", "13\n", "8\n", "[3, 1, 3]\n", "0.37961522332372777\n", "2.6298644191144316\n", "[3, 3]\n" ] } ], "source": [ "import random\n", "dizi=[3,5,8,3,2,1,9]\n", "random.seed(1)\n", "print(random.randint(2,48)) #2 ile 48 arasında\n", "print(random.randrange(1,100,3))\n", "print(random.choice(dizi))\n", "print(random.choices(dizi,k=3)) #çektiğini geri koyar, sampledan farkı bu, o yüzden aynısı çıkabilir\n", "print(random.random()) #0-1 arası\n", "print(random.uniform(2,5)) #2-5 arası küsurlu sayı\n", "print(random.sample(dizi,2)) #çektiğini geri koymaz, choicestan farkı bu" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[8, 1, 2, 9, 3, 5, 3]" ] }, "execution_count": 141, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#liste karıştırmak\n", "random.shuffle(dizi)\n", "dizi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## array" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "listin hemen hemen aynısı olup önemli bir farkı, içine sadece belli tipte eleman almasıdır. Bu yüzden memory performansı açısından liste göre daha iyidir.ancak list'ler daha hızlıdır. Ayrıca sayısal bir dizi kullanacaksanız numpy kullanmanızı tavsiye ederim. Bunun dışıdna çok büyük metinsel diziler oluşturacaksanız array kullanabilirsinz." ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "76 88\n" ] } ], "source": [ "from array import array\n", "import sys\n", "arr=array('i',[1,2,3])\n", "lst=[1,2,3]\n", "print(sys.getsizeof(arr),sys.getsizeof(lst)) #arr'ın memory kullanımı daha düşüktür" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## collections" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T12:42:13.976560Z", "start_time": "2020-11-22T12:42:13.970578Z" } }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_list = [\"a\",\"b\",\"c\",\"c\",\"e\",\"c\",\"b\",\"b\",\"a\"]\n", "my_list.count(\"a\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T12:42:42.671252Z", "start_time": "2020-11-22T12:42:42.668256Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Counter({'b': 3, 'c': 3, 'a': 2, 'e': 1})\n", "2\n" ] } ], "source": [ "from collections import Counter\n", "\n", "cn = Counter(my_list) #dictionary benzeri bir yapı. tüm dictionary metodları kullanılabilir\n", "print(cn)\n", "print(cn[\"a\"]) #yukarda list ile yaptığımızın aynısı" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'sen': 3, 'seni': 2, 'bil': 1, 'bilmezsen': 1, 'kendini': 1})" ] }, "execution_count": 144, "metadata": {}, "output_type": "execute_result" } ], "source": [ "str_ = \"sen seni bil sen seni sen bilmezsen kendini\"\n", "cn = Counter(str_.split(' '))\n", "cn" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('sen', 3), ('seni', 2)]\n", "['sen', 'seni', 'bil', 'bilmezsen', 'kendini']\n", "{'sen': 3, 'seni': 2, 'bil': 1, 'bilmezsen': 1, 'kendini': 1}\n" ] } ], "source": [ "print(cn.most_common(2)) #en çok kullanılan 2 kelime\n", "print(list(cn)) #key değerlerinin listeye çevrilmiş hali\n", "print(dict(cn)) #key-value değerlerinin sözlüğe çevrilmiş hali" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 4\n", "c 3\n", "b 2\n", "----\n", "a 4\n", "c 3\n", "b 2\n" ] } ], "source": [ "#OrderDict'e artık ihtiyaç yoktur. Python 3.7den itibaren de dictioanryye girilen sırayı korumaktadır\n", "#aşağıdaki örnekten de görebiliyoruz\n", "from collections import OrderedDict \n", "liste = [\"a\",\"c\",\"c\",\"a\",\"b\",\"a\",\"a\",\"b\",\"c\"]\n", "cnt = Counter(liste)\n", "od = OrderedDict(cnt.most_common())\n", "d=dict(cnt.most_common())\n", "for key, value in od.items():\n", " print(key, value)\n", "print(\"----\")\n", "for key, value in d.items():\n", " print(key, value)" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "John\n" ] } ], "source": [ "from collections import namedtuple\n", "\n", "Student = namedtuple('Student', 'fname, lname, age') #class yapısına benzer bir kullanım. indeks ezberlemeye son!\n", "s1 = Student('John', 'Clarke', '13')\n", "print(s1.fname)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## itertools" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Permütasyon" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]\n", "[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]\n" ] } ], "source": [ "from itertools import permutations #sadece tekrarsızlar yapılabiliyor. n!/(n-r)!\n", "liste=[\"A\",\"B\",\"C\"]\n", "per1=list(permutations(liste))\n", "per2=list(permutations(liste,2))\n", "print(per1)\n", "print(per2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Kombinasyon" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('A', 'B'), ('A', 'C'), ('B', 'C')]" ] }, "execution_count": 149, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from itertools import combinations #n!/(r!*(n-r)!)\n", "com=list(combinations(liste,2))\n", "com" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Kartezyen çarpım" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('A', 2000),\n", " ('A', 2001),\n", " ('A', 2002),\n", " ('A', 2003),\n", " ('B', 2000),\n", " ('B', 2001),\n", " ('B', 2002),\n", " ('B', 2003),\n", " ('C', 2000),\n", " ('C', 2001),\n", " ('C', 2002),\n", " ('C', 2003)]" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from itertools import product\n", "list1=[\"A\",\"B\",\"C\"]\n", "list2=[2000,2001,2002,2003]\n", "krt=list(product(list1,list2))\n", "krt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regex (Düzenli ifadeler)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pythona özgü değildir, hemen her dilde implementasyonu vardır. Başlı başına büyük bi konudur. Burada özet vermeye çalışıcam. İleride Text mining, NLP v.s çalışacaksanız iyi öğrenmenizde fayda var" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Isınma " ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T14:55:50.942122Z", "start_time": "2020-11-22T14:55:50.939128Z" } }, "outputs": [], "source": [ "import re" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [], "source": [ "a=\"benim adım volkan\"" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [], "source": [ "#match: başında var mı diye kontrol eder\n", "re.match(\"volkan\",a) #eşleşme yok, sonuç dönmez" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 155, "metadata": {}, "output_type": "execute_result" } ], "source": [ "re.match(\"ben\",a) #var" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.startswith(\"ben\") #bu daha kullanışlıdır." ] }, { "cell_type": "code", "execution_count": 157, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 157, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#search, herhangi bi yerde var mı, matche göre daha yavaş çalışır\n", "re.search(\"volkan\",a)" ] }, { "cell_type": "code", "execution_count": 158, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 158, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"volkan\" in a #bu daha pratik" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['sen', 'sen', 'sen', 'sen']\n", "4\n", "4\n" ] } ], "source": [ "b=\"sen seni bil sen seni\"\n", "bul=re.findall(\"sen\", b)\n", "\n", "print(bul)\n", "print(len(bul))\n", "print(b.count(\"sen\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Metakarakter kullanımı" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T14:56:00.364786Z", "start_time": "2020-11-22T14:56:00.361819Z" } }, "outputs": [], "source": [ "isimler=[\"123a\",\"ali\",\"veli\",\"hakan\",\"volkan\",\"osman\",\"kandemir\",\"VOLkan\"]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T14:56:03.790850Z", "start_time": "2020-11-22T14:56:03.785864Z" } }, "outputs": [ { "data": { "text/plain": [ "['hakan', 'volkan', 'VOLkan']" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#kan ile bitenler, regex olmadan\n", "kan=[x for x in isimler if x[-3:]==\"kan\"]\n", "kan" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![image.png](attachment:image.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### [ ] Köşeli parantez" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[] işareti, \"içine giren karakterleri içeren\" filtresi uygular. Burada önemli olan [] içinde gördügümüz tüm karaktereleri tek tek uyguluyor olmasıdır. Ör: [abc]: a veya b veya c içeren demek. [a-z]: A ile Z arasındakiler demek" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T14:56:09.039799Z", "start_time": "2020-11-22T14:56:09.035811Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hakan\n", "volkan\n" ] } ], "source": [ "#regex ile\n", "for i in isimler:\n", " if re.search(\"[a-z]kan\",i):\n", " print(i)\n", "#başta veya ortada bir yerde a-z arasında bir karekter olsun, sonu kan olsun demiş olduk. yani \"kan\"ın önünde bir harf \n", "#olsun da nerede olursa olsun, bşta mı ortada mı önemli değil, önemli olan kan'ın öncesinde olmaslı" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['veli', 'osman', 'kandemir']" ] }, "execution_count": 163, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#içinde e veya m geçenler, bu sefer list comprehension ile yapalım\n", "[i for i in isimler if re.search(\"[em]\",i)]" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['123a', 'b123', '1234']" ] }, "execution_count": 164, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#rakam içerenler\n", "liste = [\"123a\",\"b123\",\"1234\",\"volkan\"]\n", "sayıiçerenler=[x for x in liste if re.search(\"[0-9]\",x)]\n", "sayıiçerenler" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['123a', '1234']" ] }, "execution_count": 165, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#rakam ile başlayanları bulma\n", "rakamlabaşlayanlar=[x for x in liste if re.match(\"[0-9]\",x)] #yukardakinden farklı olarak match kullandık, daha hızlı çalışır\n", "rakamlabaşlayanlar" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['ABC', 'Abc', 'abc', '12a', 'A12', 'Ab1', 'Ab23']\n", "['Abc', 'Ab1', 'Ab23']\n", "['ABC', 'Abc', 'abc', '12a', 'A12', '123', 'Ab1', 'Ab23']\n", "['Ab1', 'Ab23']\n" ] } ], "source": [ "liste=[\"ABC\",\"Abc\",\"abc\",\"12a\",\"A12\",\"123\",\"Ab1\",\"Ab23\"]\n", "print([x for x in liste if re.search(\"[A-Za-z]\",x)]) #büyük veya küçük harf içerenler\n", "print([x for x in liste if re.search(\"[A-Z][a-z]\",x)]) #ilki büyük ikincisi küçük harf içerenler\n", "print([x for x in liste if re.search(\"[A-Za-z0-9]\",x)]) #büyük veya küçük harf veya sayı içerenler\n", "print([x for x in liste if re.search(\"[A-Z][a-z][0-9]\",x)]) #ilki büyük ikincisi küçük üçüncüsü sayı olanlar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### . Nokta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\".\" tek karekteri için joker anlamındadır" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [], "source": [ "isimler=[\"arhan\",\"volkan\",\"osman\",\"hakan\",\"demirhan\",\"1ozan\"]" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['arhan', 'osman', 'hakan']" ] }, "execution_count": 168, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#5 karekterli olup an ile biten gerçek isimler(gerçek isim: sayı ile başlayan birşey isim olamaz)\n", "liste=[x for x in isimler if re.match(\"[a-z]..an\",x)]\n", "liste" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### * Yıldız" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kendinden önce gelen 1 ifadeyi en az 0(evet 0, 1 değil) sayıda eşleştirir. Özellikle bir ifadenin yazılamayabildiği durumları da kapsamak için kullanılır. Aşağıdkai örnek gayet açıklayıcıdır." ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['kıral', 'kral', 'kıro', 'kro', 'kritik', 'kıritik', 'kııral']" ] }, "execution_count": 169, "metadata": {}, "output_type": "execute_result" } ], "source": [ "liste = [\"kıral\", \"kral\", \"kıro\", \"kro\", \"kırmızı\",\"kırçıllı\",\"kritik\",\"kıritik\",\"kııral\"]\n", "[x for x in liste if re.match(\"kı*r[aeıioöuü]\",x)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu örnekte, yabancı dilden geçen kelimelerden \"kr\" ile başlayanları inceledik. Bunlar bazen aralarına ı harfi girilerek yazılabiliyor. Bu kelimelerde genelde r'den sonra sesli bi harf gelir. Biz de bunları yakalamaya çalıştık." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### + Artı" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yıldıza benzer, ancak bu sefer en az 1 sayıda eşleşme yapar." ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['kıral', 'kıro', 'kıritik', 'kııral']" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "liste = [\"kıral\", \"kral\", \"kıro\", \"kro\", \"kırmızı\",\"kırçıllı\",\"kritik\",\"kıritik\",\"kııral\"]\n", "[x for x in liste if re.match(\"kı+r[aeıioöuü]\",x)]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T14:57:05.136600Z", "start_time": "2020-11-22T14:57:05.132611Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hakan\n", "volkan\n", "VOLkan\n" ] } ], "source": [ "#yukardaki kan'la biten isimler örneğin. bu sefer VOLkan yazdırılır\n", "for i in isimler:\n", " if re.search(\".+kan\",i):\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### ? Soru işareti" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kendinden önce gelen karakterin 0 veya 1 kez geçtiği durumları eşleştirir." ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['kıral', 'kral', 'kıro', 'kro', 'kritik', 'kıritik']" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "liste = [\"kıral\", \"kral\", \"kıro\", \"kro\", \"kırmızı\",\"kırçıllı\",\"kritik\",\"kıritik\",\"kııral\"]\n", "[x for x in liste if re.match(\"kı?r[aeıioöuü]\",x)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### {} süslü parantez" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "bir karekterin n adet geçtiği durumlar eşleştirilir." ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['kııral']" ] }, "execution_count": 172, "metadata": {}, "output_type": "execute_result" } ], "source": [ "liste = [\"kıral\", \"kral\", \"kıro\", \"kro\", \"kırmızı\",\"kırçıllı\",\"kritik\",\"kıritik\",\"kııral\"]\n", "[x for x in liste if re.match(\"kı{2}r[aeıioöuü]\",x)]" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['kııral']" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#böyle de yapılabilirdi ama n sayısı yükseldikçe {} ile yapmak daha mantıklı\n", "[x for x in liste if re.match(\"kıır[aeıioöuü]\",x)]" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['gool', 'gooool']" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#{min,max}\n", "liste=[\"gol\",\"gool\",\"gooool\",\"gööl\",\"gooooooool\"]\n", "[x for x in liste if re.match(\"[a-z]o{2,5}l\",x)] #en az 2 en çok 5 oo içersin" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Çeşitli linkler" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Regex dünyası çok büyük bi dünya, burada hepsini anlatmak yerine kısa bir girizgah yapmış olduk. Öncelikle genel oalrak regexi kavramanız sonrasında da python implementasonunu kavramanız gerekiyor. Aşağıdaki linkleri incelemenizi tavisye ederim.\n", "\n", "**Genel bilgi**\n", "- https://en.wikipedia.org/wiki/Regular_expression\n", "- https://regexr.com/ (pratik amaçlı)\n", " \n", "**Python**\n", "- https://docs.python.org/3/howto/regex.html\n", "- https://docs.python.org/3/library/re.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## json" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### jsondan pythona" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "json yapısı python dictionary'lerine çok benzer. elde edeceğimiz nesne de bir dictionary olacaktır" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:50:09.106861Z", "start_time": "2021-04-11T10:50:09.100878Z" } }, "outputs": [], "source": [ "import json" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:50:09.603020Z", "start_time": "2021-04-11T10:50:09.595037Z" } }, "outputs": [ { "data": { "text/plain": [ "'John'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#örnek bir json stringden\n", "x = '{ \"name\":\"John\", \"age\":30, \"city\":\"New York\"}'\n", "y=json.loads(x) #dcitionary olarak yükler\n", "type(x)\n", "type(y)\n", "y[\"name\"]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:51:12.111273Z", "start_time": "2021-04-11T10:51:12.102295Z" } }, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "{'Bolge': {'0': 'Akdeniz', '1': 'Marmara', '2': 'Akdeniz', '3': 'Marmara'},\n", " 'Yil': {'0': 2020, '1': 2020, '2': 2021, '3': 2021},\n", " 'Satis': {'0': 10, '1': 15, '2': 42, '3': 56}}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#veya json dosyadan. ama bu indenti dikkate almıyor, çünkü elde edilen nesne bi string değil, dictioanry\n", "with open(r\"E:\\OneDrive\\Dökümanlar\\GitHub\\dataset\\json\\indentli_bolgesatis.json\", mode='r') as f:\n", " data = json.load(f)\n", "type(data)\n", "data " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:52:53.530875Z", "start_time": "2021-04-11T10:52:53.525888Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"Bolge\":{\n", " \"0\":\"Akdeniz\",\n", " \"1\":\"Marmara\",\n", " \"2\":\"Akdeniz\",\n", " \"3\":\"Marmara\"\n", " },\n", " \"Yil\":{\n", " \"0\":2020,\n", " \"1\":2020,\n", " \"2\":2021,\n", " \"3\":2021\n", " },\n", " \"Satis\":{\n", " \"0\":10,\n", " \"1\":15,\n", " \"2\":42,\n", " \"3\":56\n", " }\n", "}\n" ] } ], "source": [ "#indentli formatı yazdırmak istersek dosya okuması yaparak bi string içine okuruz\n", "with open(r\"E:\\OneDrive\\Dökümanlar\\GitHub\\dataset\\json\\indentli_bolgesatis.json\", mode='r') as f:\n", " content=f.read() # bu stringdir, ve indentli yapı korunmuştur\n", "print(content)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"columns\":[\n", " \"Bolge\",\n", " \"Yil\",\n", " \"Satis\"\n", " ],\n", " \"data\":[\n", " [\n", " \"Akdeniz\",\n", " 2020,\n", " 10\n", " ],\n", " [\n", " \"Marmara\",\n", " 2020,\n", " 15\n", " ],\n", " [\n", " \"Akdeniz\",\n", " 2021,\n", " 42\n", " ],\n", " [\n", " \"Marmara\",\n", " 2021,\n", " 56\n", " ]\n", " ]\n", "}\n" ] } ], "source": [ "#split oriented kaydedilmiş dosyadan\n", "with io.open(r\"E:\\OneDrive\\Dökümanlar\\GitHub\\dataset\\json\\indentli_bolgesatis_split.json\", mode='r') as f:\n", " content=f.read() \n", "print(content)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:54:03.948942Z", "start_time": "2021-04-11T10:54:03.598989Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"schema\":{\n", " \"fields\":[\n", " {\n", " \"name\":\"Bolge\",\n", " \"type\":\"string\"\n", " },\n", " {\n", " \"name\":\"Yil\",\n", " \"type\":\"integer\"\n", " },\n", " {\n", " \"name\":\"Satis\",\n", " \"type\":\"integer\"\n", " }\n", " ],\n", " \"pandas_version\":\"0.20.0\"\n", " },\n", " \"data\":[\n", " {\n", " \"Bolge\":\"Akdeniz\",\n", " \"Yil\":2020,\n", " \"Satis\":10\n", " },\n", " {\n", " \"Bolge\":\"Marmara\",\n", " \"Yil\":2020,\n", " \"Satis\":15\n", " },\n", " {\n", " \"Bolge\":\"Akdeniz\",\n", " \"Yil\":2021,\n", " \"Satis\":42\n", " },\n", " {\n", " \"Bolge\":\"Marmara\",\n", " \"Yil\":2021,\n", " \"Satis\":56\n", " }\n", " ]\n", "}\n" ] } ], "source": [ "#table oriented kaydedilmiş dosyadan\n", "with open(r\"E:\\OneDrive\\Dökümanlar\\GitHub\\dataset\\json\\indentli_bolgesatis_table.json\", mode='r') as f:\n", " content=f.read() \n", "print(content)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:54:05.350155Z", "start_time": "2021-04-11T10:54:05.343174Z" } }, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "{'schema': {'fields': [{'name': 'Bolge', 'type': 'string'},\n", " {'name': 'Yil', 'type': 'integer'},\n", " {'name': 'Satis', 'type': 'integer'}],\n", " 'pandas_version': '0.20.0'},\n", " 'data': [{'Bolge': 'Akdeniz', 'Yil': 2020, 'Satis': 10},\n", " {'Bolge': 'Marmara', 'Yil': 2020, 'Satis': 15},\n", " {'Bolge': 'Akdeniz', 'Yil': 2021, 'Satis': 42},\n", " {'Bolge': 'Marmara', 'Yil': 2021, 'Satis': 56}]}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c=json.loads(content)\n", "type(c)\n", "c" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:54:13.377699Z", "start_time": "2021-04-11T10:54:13.369758Z" } }, "outputs": [ { "data": { "text/plain": [ "'Akdeniz'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#içteki tek bir bilgiye ulaşma\n", "c[\"data\"][0][\"Bolge\"] #dict of list of dict" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T10:54:14.362891Z", "start_time": "2021-04-11T10:54:14.358940Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Akdeniz\n", "Marmara\n", "Akdeniz\n", "Marmara\n" ] } ], "source": [ "#tüm bölgeleri alma\n", "for l in c[\"data\"]:\n", " print(l[\"Bolge\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### pythondan jsona" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "str" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}'" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = {\n", " \"name\": \"John\",\n", " \"age\": 30,\n", " \"city\": \"New York\"\n", "}\n", "\n", "j = json.dumps(x)\n", "type(x)\n", "type(j)\n", "j" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\"name\": \"John\", \"age\": 30, \"married\": true, \"divorced\": false, \"children\": [\"Ann\", \"Billy\"], \"pets\": null, \"cars\": [{\"model\": \"BMW 230\", \"mpg\": 27.5}, {\"model\": \"Ford Edge\", \"mpg\": 24.1}]}\n" ] } ], "source": [ "#komplike(nested) json\n", "x = {\n", " \"name\": \"John\",\n", " \"age\": 30,\n", " \"married\": True,\n", " \"divorced\": False,\n", " \"children\": (\"Ann\",\"Billy\"),\n", " \"pets\": None,\n", " \"cars\": [\n", " {\"model\": \"BMW 230\", \"mpg\": 27.5},\n", " {\"model\": \"Ford Edge\", \"mpg\": 24.1}\n", " ]\n", "}\n", "\n", "print(json.dumps(x))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"name\": \"John\",\n", " \"age\": 30,\n", " \"married\": true,\n", " \"divorced\": false,\n", " \"children\": [\n", " \"Ann\",\n", " \"Billy\"\n", " ],\n", " \"pets\": null,\n", " \"cars\": [\n", " {\n", " \"model\": \"BMW 230\",\n", " \"mpg\": 27.5\n", " },\n", " {\n", " \"model\": \"Ford Edge\",\n", " \"mpg\": 24.1\n", " }\n", " ]\n", "}\n" ] } ], "source": [ "#bu da şık hali\n", "print(json.dumps(x,indent=4))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"age\": 30,\n", " \"cars\": [\n", " {\n", " \"model\": \"BMW 230\",\n", " \"mpg\": 27.5\n", " },\n", " {\n", " \"model\": \"Ford Edge\",\n", " \"mpg\": 24.1\n", " }\n", " ],\n", " \"children\": [\n", " \"Ann\",\n", " \"Billy\"\n", " ],\n", " \"divorced\": false,\n", " \"married\": true,\n", " \"name\": \"John\",\n", " \"pets\": null\n", "}\n" ] } ], "source": [ "print(json.dumps(x,indent=4,sort_keys=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bunları aşağıdaki I/O işlemleriyle bir dosyaya da yazdırabilirsiniz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Request" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://realpython.com/python-requests/ sitesinden faydalandım" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Basics" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:34:22.862704Z", "start_time": "2021-05-15T15:34:22.641341Z" } }, "outputs": [], "source": [ "import requests" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:34:24.362239Z", "start_time": "2021-05-15T15:34:24.358213Z" } }, "outputs": [], "source": [ "httpget0=r\"https://www.excelinefendisi.com/httpapiservice/ResponseveRequestTarget.aspx\" #buna parametre verebiliyoruz, Anakonu=VBAMakro, Altkonu=Temeller\n", "httpget0j=r\"https://www.excelinefendisi.com/httpapiservice/ReturnJson.aspx\" #tüm duyurlar as json\n", "httpget1=r\"http://ptsv2.com/t/trump/d/1\"\n", "httpget1json=r\"http://ptsv2.com/t/trump/d/1/json\"\n", "httpget1txt=r\"http://ptsv2.com/t/trump/d/1/text\"\n", "httpget2_auth=r\"http://ptsv2.com/t/volkitolki/post\" #sırayla volki, tolki\n", "httpget3=r\"https://httpbin.org/get\" #as json\n", "httpget4img=r\"https://httpbin.org/image\"\n", "httpget5=r\"https://www.google.com/search?q=excel&oq=excel&aqs=chrome..69i57j35i39l2j0i433l4j46i433l2j0.839j0j15&sourceid=chrome&ie=UTF-8\"\n", "httpget6githubjson=r\"https://raw.githubusercontent.com/VolkiTheDreamer/dataset/master/json/bolgesatis.json\"\n", "getlist=[httpget0,httpget0j,httpget1,httpget1json,httpget1txt,httpget2_auth,httpget3,httpget4img,httpget5]\n", "\n", "httppost1=r\"http://ptsv2.com/t/trump/d/20001\"\n", "httppost2=r\"http://ptsv2.com/t/trump/post\"\n", "httppost3=r\"https://httpbin.org/post\"\n", "httppos4=r\"benimsitedekileri daha sonra ekle\"" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:34:29.194045Z", "start_time": "2021-05-15T15:34:28.511013Z" } }, "outputs": [], "source": [ "r=requests.get(httpget3)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:34:32.053841Z", "start_time": "2021-05-15T15:34:32.048854Z" } }, "outputs": [ { "data": { "text/plain": [ "{'Date': 'Sat, 15 May 2021 15:34:28 GMT', 'Content-Type': 'application/json', 'Content-Length': '306', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'}" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r.headers" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:34:36.018195Z", "start_time": "2021-05-15T15:34:34.687476Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "requests.get('http://volkanyurtseven.com')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:18:33.490545Z", "start_time": "2021-04-12T11:18:32.595460Z" } }, "outputs": [ { "ename": "SSLError", "evalue": "HTTPSConnectionPool(host='volkanyurtseven.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(\"hostname 'volkanyurtseven.com' doesn't match either of 'milyaplastic.com', 'www.milyaplastic.com'\")))", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mSSLCertVerificationError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[0;32m 669\u001b[0m \u001b[1;31m# Make the request on the httplib connection object.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 670\u001b[1;33m httplib_response = self._make_request(\n\u001b[0m\u001b[0;32m 671\u001b[0m \u001b[0mconn\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[1;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[0;32m 380\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 381\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_validate_conn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 382\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mSocketTimeout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mBaseSSLError\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36m_validate_conn\u001b[1;34m(self, conn)\u001b[0m\n\u001b[0;32m 977\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"sock\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# AppEngine might not have `.sock`\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 978\u001b[1;33m \u001b[0mconn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 979\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\urllib3\\connection.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 396\u001b[0m )\n\u001b[1;32m--> 397\u001b[1;33m \u001b[0m_match_hostname\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcert\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0massert_hostname\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mserver_hostname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 398\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\urllib3\\connection.py\u001b[0m in \u001b[0;36m_match_hostname\u001b[1;34m(cert, asserted_hostname)\u001b[0m\n\u001b[0;32m 406\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 407\u001b[1;33m \u001b[0mmatch_hostname\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcert\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0masserted_hostname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 408\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mCertificateError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\ssl.py\u001b[0m in \u001b[0;36mmatch_hostname\u001b[1;34m(cert, hostname)\u001b[0m\n\u001b[0;32m 415\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdnsnames\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 416\u001b[1;33m raise CertificateError(\"hostname %r \"\n\u001b[0m\u001b[0;32m 417\u001b[0m \u001b[1;34m\"doesn't match either of %s\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mSSLCertVerificationError\u001b[0m: (\"hostname 'volkanyurtseven.com' doesn't match either of 'milyaplastic.com', 'www.milyaplastic.com'\",)", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[1;31mMaxRetryError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\requests\\adapters.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 438\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mchunked\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 439\u001b[1;33m resp = conn.urlopen(\n\u001b[0m\u001b[0;32m 440\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[0;32m 725\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 726\u001b[1;33m retries = retries.increment(\n\u001b[0m\u001b[0;32m 727\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merror\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_pool\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_stacktrace\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexc_info\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\urllib3\\util\\retry.py\u001b[0m in \u001b[0;36mincrement\u001b[1;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[0;32m 438\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mnew_retry\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_exhausted\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 439\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mMaxRetryError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_pool\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merror\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mResponseError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcause\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 440\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mMaxRetryError\u001b[0m: HTTPSConnectionPool(host='volkanyurtseven.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(\"hostname 'volkanyurtseven.com' doesn't match either of 'milyaplastic.com', 'www.milyaplastic.com'\")))", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[1;31mSSLError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mrequests\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'https://volkanyurtseven.com'\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#https versiyonu yok, hata alcaz\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\requests\\api.py\u001b[0m in \u001b[0;36mget\u001b[1;34m(url, params, **kwargs)\u001b[0m\n\u001b[0;32m 74\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 75\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'allow_redirects'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 76\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'get'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 77\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 78\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\requests\\api.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(method, url, **kwargs)\u001b[0m\n\u001b[0;32m 59\u001b[0m \u001b[1;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 60\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 61\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 62\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 63\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\requests\\sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[0;32m 528\u001b[0m }\n\u001b[0;32m 529\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 530\u001b[1;33m \u001b[0mresp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 531\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 532\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\requests\\sessions.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, **kwargs)\u001b[0m\n\u001b[0;32m 641\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 642\u001b[0m \u001b[1;31m# Send the request\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 643\u001b[1;33m \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 644\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 645\u001b[0m \u001b[1;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mc:\\users\\volka\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\requests\\adapters.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 512\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreason\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_SSLError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 513\u001b[0m \u001b[1;31m# This branch is for urllib3 v1.22 and later.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 514\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mSSLError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 515\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 516\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mSSLError\u001b[0m: HTTPSConnectionPool(host='volkanyurtseven.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(\"hostname 'volkanyurtseven.com' doesn't match either of 'milyaplastic.com', 'www.milyaplastic.com'\")))" ] } ], "source": [ "requests.get('https://volkanyurtseven.com') #https versiyonu yok, hata alcaz" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:18:46.903444Z", "start_time": "2021-04-12T11:18:46.773750Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "requests.get('http://volkanyurtseven.com/olmayansayfa') #bu sefer site doğru ama bahsekonu sayfa yoksa 404" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:18:52.376056Z", "start_time": "2021-04-12T11:18:52.246402Z" } }, "outputs": [ { "data": { "text/plain": [ "200" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response = requests.get('http://volkanyurtseven.com')\n", "response.status_code" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:50:00.510411Z", "start_time": "2021-04-12T11:50:00.239067Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "b'\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n PTS - V2\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Dump View

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\nWhat is this?
\\r\\nSome Rules
\\r\\nHow it works
\\r\\nWhat\\'s in a dump
\\r\\nContact
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n

Dump 1

\\r\\n Parent Toilet
\\r\\n View this as: json or raw text
\\r\\n See what\\'s in a dump for info on how these fields are populated.
\\r\\n\\r\\n

Details

\\r\\n Posted: 2018-05-17 16:55:50 UTC
\\r\\n Method: GET
\\r\\n Source: 177.23.244.132
\\r\\n\\r\\n

Headers

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
HeaderValues
Accept\\r\\n \\r\\n text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 \\r\\n
Accept-Language\\r\\n \\r\\n en-GB,en;q=0.5 \\r\\n
Host\\r\\n \\r\\n ptsv2.com \\r\\n
Referer\\r\\n \\r\\n http://ptsv2.com/t/trump \\r\\n
Upgrade-Insecure-Requests\\r\\n \\r\\n 1 \\r\\n
User-Agent\\r\\n \\r\\n Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 \\r\\n
X-Cloud-Trace-Context\\r\\n \\r\\n 7a8644a414c1c3d2b54c9c795d1bdcc1/5295215977831438294 \\r\\n
X-Google-Apps-Metadata\\r\\n \\r\\n domain=gmail.com,host=ptsv2.com \\r\\n
\\r\\n\\r\\n

Parameters

\\r\\n \\r\\n No Parameters.\\r\\n \\r\\n\\r\\n

Post Body

\\r\\n \\r\\n No Body.\\r\\n \\r\\n\\r\\n

Multipart Files

\\r\\n \\r\\n No Files\\r\\n \\r\\n\\r\\n

Multipart Values

\\r\\n \\r\\n No Multipart Values\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n '" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response = requests.get(httpget1)\n", "response.content #byte olarak" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:50:02.611257Z", "start_time": "2021-04-12T11:50:02.604275Z" } }, "outputs": [ { "data": { "text/plain": [ "'\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n PTS - V2\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Dump View

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\nWhat is this?
\\r\\nSome Rules
\\r\\nHow it works
\\r\\nWhat\\'s in a dump
\\r\\nContact
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n

Dump 1

\\r\\n Parent Toilet
\\r\\n View this as: json or raw text
\\r\\n See what\\'s in a dump for info on how these fields are populated.
\\r\\n\\r\\n

Details

\\r\\n Posted: 2018-05-17 16:55:50 UTC
\\r\\n Method: GET
\\r\\n Source: 177.23.244.132
\\r\\n\\r\\n

Headers

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
HeaderValues
Accept\\r\\n \\r\\n text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 \\r\\n
Accept-Language\\r\\n \\r\\n en-GB,en;q=0.5 \\r\\n
Host\\r\\n \\r\\n ptsv2.com \\r\\n
Referer\\r\\n \\r\\n http://ptsv2.com/t/trump \\r\\n
Upgrade-Insecure-Requests\\r\\n \\r\\n 1 \\r\\n
User-Agent\\r\\n \\r\\n Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 \\r\\n
X-Cloud-Trace-Context\\r\\n \\r\\n 7a8644a414c1c3d2b54c9c795d1bdcc1/5295215977831438294 \\r\\n
X-Google-Apps-Metadata\\r\\n \\r\\n domain=gmail.com,host=ptsv2.com \\r\\n
\\r\\n\\r\\n

Parameters

\\r\\n \\r\\n No Parameters.\\r\\n \\r\\n\\r\\n

Post Body

\\r\\n \\r\\n No Body.\\r\\n \\r\\n\\r\\n

Multipart Files

\\r\\n \\r\\n No Files\\r\\n \\r\\n\\r\\n

Multipart Values

\\r\\n \\r\\n No Multipart Values\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n '" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response.text #string olarak" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:50:07.692493Z", "start_time": "2021-04-12T11:50:07.689491Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response.raw" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Böyle çok karışık oldu, bunu json olarak okuyalım. ama tabi önce bunun son versiyonuna tekrar bi get atalım." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:50:45.445755Z", "start_time": "2021-04-12T11:50:45.165506Z" } }, "outputs": [ { "data": { "text/plain": [ "'{\"Timestamp\":\"2018-05-17T16:55:50.865299Z\",\"Method\":\"GET\",\"RemoteAddr\":\"177.23.244.132\",\"ID\":1,\"Headers\":{\"Accept\":[\"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\"],\"Accept-Language\":[\"en-GB,en;q=0.5\"],\"Host\":[\"ptsv2.com\"],\"Referer\":[\"http://ptsv2.com/t/trump\"],\"Upgrade-Insecure-Requests\":[\"1\"],\"User-Agent\":[\"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0\"],\"X-Cloud-Trace-Context\":[\"7a8644a414c1c3d2b54c9c795d1bdcc1/5295215977831438294\"],\"X-Google-Apps-Metadata\":[\"domain=gmail.com,host=ptsv2.com\"]},\"FormValues\":{},\"Body\":\"\",\"Files\":null,\"MultipartValues\":null}'" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#hala biraz okunaklı değil gibi\n", "response = requests.get(httpget1json)\n", "response.text" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:50:31.769676Z", "start_time": "2021-04-12T11:50:31.761693Z" } }, "outputs": [ { "data": { "text/plain": [ "{'Timestamp': '2018-05-17T16:55:50.865299Z',\n", " 'Method': 'GET',\n", " 'RemoteAddr': '177.23.244.132',\n", " 'ID': 1,\n", " 'Headers': {'Accept': ['text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'],\n", " 'Accept-Language': ['en-GB,en;q=0.5'],\n", " 'Host': ['ptsv2.com'],\n", " 'Referer': ['http://ptsv2.com/t/trump'],\n", " 'Upgrade-Insecure-Requests': ['1'],\n", " 'User-Agent': ['Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0'],\n", " 'X-Cloud-Trace-Context': ['7a8644a414c1c3d2b54c9c795d1bdcc1/5295215977831438294'],\n", " 'X-Google-Apps-Metadata': ['domain=gmail.com,host=ptsv2.com']},\n", " 'FormValues': {},\n", " 'Body': '',\n", " 'Files': None,\n", " 'MultipartValues': None}" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "json.loads(response.text)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:49:39.489580Z", "start_time": "2021-04-12T11:49:39.480603Z" } }, "outputs": [ { "data": { "text/plain": [ "{'Timestamp': '2018-05-17T16:55:50.865299Z',\n", " 'Method': 'GET',\n", " 'RemoteAddr': '177.23.244.132',\n", " 'ID': 1,\n", " 'Headers': {'Accept': ['text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'],\n", " 'Accept-Language': ['en-GB,en;q=0.5'],\n", " 'Host': ['ptsv2.com'],\n", " 'Referer': ['http://ptsv2.com/t/trump'],\n", " 'Upgrade-Insecure-Requests': ['1'],\n", " 'User-Agent': ['Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0'],\n", " 'X-Cloud-Trace-Context': ['7a8644a414c1c3d2b54c9c795d1bdcc1/5295215977831438294'],\n", " 'X-Google-Apps-Metadata': ['domain=gmail.com,host=ptsv2.com']},\n", " 'FormValues': {},\n", " 'Body': '',\n", " 'Files': None,\n", " 'MultipartValues': None}" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#veya responseun json metopdunu kullanabiliriz\n", "response.json()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It should be noted that the success of the call to r.json() does not indicate the success of the response. Some servers may return a JSON object in a failed response (e.g. error details with HTTP 500). Such JSON will be decoded and returned. To check that a request is successful, use r.raise_for_status() or check r.status_code is what you expect." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:51:01.521114Z", "start_time": "2021-04-12T11:51:01.517158Z" } }, "outputs": [ { "data": { "text/plain": [ "200" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response.raise_for_status()\n", "response.status_code" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:51:09.536268Z", "start_time": "2021-04-12T11:51:09.531280Z" } }, "outputs": [ { "data": { "text/plain": [ "{'Content-Type': 'application/json',\n", " 'Vary': 'Accept-Encoding',\n", " 'Content-Encoding': 'gzip',\n", " 'X-Cloud-Trace-Context': '5af5d5bd00d8797062a003642f0c310e',\n", " 'Date': 'Mon, 12 Apr 2021 11:50:43 GMT',\n", " 'Server': 'Google Frontend',\n", " 'Cache-Control': 'private',\n", " 'Content-Length': '463'}" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(response.headers)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:51:15.329872Z", "start_time": "2021-04-12T11:51:15.323889Z" } }, "outputs": [ { "data": { "text/plain": [ "'application/json'" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response.headers['Content-Type']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### QueryString parameters" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:51:35.981224Z", "start_time": "2021-04-12T11:51:34.739424Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Repository name: grequests\n", "Repository description: Requests + Gevent = <3\n", "https://api.github.com/search/repositories?q=requests%2Blanguage%3Apython\n" ] } ], "source": [ "# Search GitHub's repositories for requests\n", "response = requests.get(\n", " 'https://api.github.com/search/repositories',\n", " params={'q': 'requests+language:python'},\n", ")\n", "\n", "# Inspect some attributes of the `requests` repository\n", "json_response = response.json()\n", "repository = json_response['items'][0]\n", "print(f'Repository name: {repository[\"name\"]}') # Python 3.6+\n", "print(f'Repository description: {repository[\"description\"]}') # Python 3.6+\n", "print(response.url)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "ExecuteTime": { "end_time": "2021-04-12T11:51:36.220773Z", "start_time": "2021-04-12T11:51:35.991157Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://www.excelinefendisi.com/httpapiservice/ResponseveRequestTarget.aspx?Anakonu=VBAMakro&Altkonu=Temeller\n" ] } ], "source": [ "response = requests.get(\n", " 'https://www.excelinefendisi.com/httpapiservice/ResponseveRequestTarget.aspx',\n", " params={'Anakonu':'VBAMakro', 'Altkonu':'Temeller'},\n", ")\n", "\n", "print(response.url)" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T11:54:43.262529Z", "start_time": "2021-04-11T11:54:43.257543Z" } }, "outputs": [ { "data": { "text/plain": [ "'root dizin : www.excelinefendisi.com
sonraki dizin : /httpapiservice/ResponseveRequestTarget.aspx
Full adres : https://www.excelinefendisi.com/httpapiservice/ResponseveRequestTarget.aspx?Anakonu=VBAMakro&Altkonu=Temeller
Portlu Full adres : https://www.excelinefendisi.com:443/httpapiservice/ResponseveRequestTarget.aspx?Anakonu=VBAMakro&Altkonu=Temeller
Portu : 443
Query :?Anakonu=VBAMakro&Altkonu=Temeller
http : https
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n

Genel bilgier

\\r\\n Label

\\r\\n Label

\\r\\n -Temeller

\\r\\n
\\r\\n
\\r\\n

Data bölgesi

\\r\\n VBAMakro anakousu ve Temeller altkonusu altında toplam 5 adet konu var\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n'" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response.text" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T11:48:29.128562Z", "start_time": "2021-04-11T11:48:28.375577Z" } }, "outputs": [], "source": [ "payload = {'key1': 'value1', 'key2': 'value2'}\n", "r = requests.get('https://httpbin.org/get', params=payload)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Headers" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T11:49:45.766142Z", "start_time": "2021-04-11T11:49:45.761157Z" } }, "outputs": [ { "data": { "text/plain": [ "{'Date': 'Sun, 11 Apr 2021 11:48:29 GMT', 'Content-Type': 'application/json', 'Content-Length': '377', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'}" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r.headers" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:30:34.969712Z", "start_time": "2021-04-11T15:30:33.026070Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Text matches: [{'object_url': 'https://api.github.com/repositories/4290214', 'object_type': 'Repository', 'property': 'description', 'fragment': 'Requests + Gevent = <3', 'matches': [{'text': 'Requests', 'indices': [0, 8]}]}]\n" ] } ], "source": [ "#custimize header\n", "response = requests.get(\n", " 'https://api.github.com/search/repositories',\n", " params={'q': 'requests+language:python'},\n", " headers={'Accept': 'application/vnd.github.v3.text-match+json'},\n", ")\n", "\n", "# View the new `text-matches` array which provides information\n", "# about your search term within the results\n", "json_response = response.json()\n", "repository = json_response['items'][0]\n", "print(f'Text matches: {repository[\"text_matches\"]}')" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:32:08.420664Z", "start_time": "2021-04-11T15:32:04.440680Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "requests.post('https://httpbin.org/post', data={'key':'value'})\n", "requests.put('https://httpbin.org/put', data={'key':'value'})\n", "requests.delete('https://httpbin.org/delete')\n", "requests.head('https://httpbin.org/get')\n", "requests.patch('https://httpbin.org/patch', data={'key':'value'})\n", "requests.options('https://httpbin.org/get')" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:38:34.572083Z", "start_time": "2021-04-11T15:38:33.892213Z" } }, "outputs": [ { "data": { "text/plain": [ "'application/json'" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response = requests.head('https://httpbin.org/get')\n", "response.headers['Content-Type']" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:38:35.242197Z", "start_time": "2021-04-11T15:38:34.581059Z" } }, "outputs": [ { "data": { "text/plain": [ "{}" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response = requests.delete('https://httpbin.org/delete')\n", "json_response = response.json()\n", "json_response['args']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "According to the HTTP specification, POST, PUT, and the less common PATCH requests pass their data through the message body rather than through parameters in the query string." ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:42:05.930360Z", "start_time": "2021-04-11T15:42:05.214746Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "requests.post('https://httpbin.org/post', data={'key':'value'}) #veya data=[('key', 'value')]" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:42:05.930360Z", "start_time": "2021-04-11T15:42:05.214746Z" } }, "outputs": [ { "data": { "text/plain": [ "'{\"key\": \"value\"}'" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'{\"key\": \"value\"}'" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'application/json'" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'application/json'" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ ">>> response = requests.post('https://httpbin.org/post', json={'key':'value'})\n", ">>> json_response = response.json()\n", ">>> json_response['data']\n", "'{\"key\": \"value\"}'\n", ">>> json_response['headers']['Content-Type']\n", "'application/json'" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:43:12.381811Z", "start_time": "2021-04-11T15:43:10.781580Z" } }, "outputs": [ { "data": { "text/plain": [ "'application/json'" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'application/json'" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'https://httpbin.org/post'" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'https://httpbin.org/post'" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "b'{\"key\": \"value\"}'" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "b'{\"key\": \"value\"}'" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ ">>> response = requests.post('https://httpbin.org/post', json={'key':'value'})\n", ">>> response.request.headers['Content-Type']\n", "'application/json'\n", ">>> response.request.url\n", "'https://httpbin.org/post'\n", ">>> response.request.body\n", "b'{\"key\": \"value\"}'" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:44:21.560506Z", "start_time": "2021-04-11T15:44:21.551487Z" } }, "outputs": [ { "data": { "text/plain": [ "'https://httpbin.org/post'" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "{'Date': 'Sun, 11 Apr 2021 15:43:12 GMT', 'Content-Type': 'application/json', 'Content-Length': '480', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'}" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "'https://httpbin.org/post'" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "{'User-Agent': 'python-requests/2.24.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '16', 'Content-Type': 'application/json'}" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response.url\n", "response.headers\n", "response.request.url\n", "response.request.headers" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T15:46:11.366531Z", "start_time": "2021-04-11T15:46:07.443303Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "········\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#authhentication\n", ">>> from getpass import getpass\n", ">>> requests.get('https://api.github.com/user', auth=('username', getpass()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### webserive" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## BeautifulSoup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://realpython.com/beautiful-soup-web-scraper-python/" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:36:30.137338Z", "start_time": "2021-05-15T15:36:28.992174Z" } }, "outputs": [], "source": [ "URL = 'https://www.monster.com/jobs/search/?q=Software-Developer&where=Australia'\n", "page = requests.get(URL)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:36:31.477395Z", "start_time": "2021-05-15T15:36:30.887143Z" } }, "outputs": [], "source": [ "import requests\n", "from bs4 import BeautifulSoup\n", "\n", "URL = 'https://www.excelinefendisi.com/Konular/Excel/Giris_PratikKisayollar.aspx'\n", "page = requests.get(URL)\n", "\n", "soup = BeautifulSoup(page.content, 'html.parser')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2021-05-15T15:36:33.839511Z", "start_time": "2021-05-15T15:36:33.831531Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
AmaçKısayol
Sayfalar arasında dolaşmakCTRL + PgUp/PgDn
Bugünün Tarihini yazmakCTRL + SHIFT +,
Tüm açık dosyalarda calculation yapmakF9
Seçili kısmın değerini hesaplayıp göstermekHücre içindeki formül seçilip F9
Aktif sayfada calculation yapmakSHIFT+F9
Sadece belli range için calculation yapmakVBA ile yapılır. Burdan bakın.
Bulunduğun hücrenin CurrentRegion'ını seçmeCTRL+ A
Bulunduğun hücreden CurrentRegion'ın uç noktlarına gitmekCTRL+ Ok tuşları
Bulunduğun hücreden itibaren belli bir yöne doğru seçim yapmakSHIFT+Ok tuşları
Bulunduğun hücreden itibaren CurrentRegion bir ucuna doğru toplu seçim yapmakCTRL+SHIFT+Ok tuşları
Bulunduğun hücreden CurrentRegion'ın Sağ Aşağı uç noktlasına gitmekCTRL+END
Bulunduğun hücreden CurrentRegion'ın Sağ Aşağı uç noktlasına kadar seçmekCTRL+SHIFT+END
Bulunduğun hücreden A1 hücresine kadar olan alanı(sol yukarı) seçmekCTRL+SHIFT+HOME
Bir hücre içinde veri girerken, aynı hücre içinde yeni bir satır açıp oradan devam etmekALT+ENTER
Veri/Formül girişi yaptığınız hücrede alt hücreye geçmeden giriş tamamlamak CTRL+ENTER
Ekranda bir sayfa sağa kaymak.ALT+PGE DOWN
AutoFilter'ı aktif/pasif hale getirmekCTRL+SHIFT+L
Bulunduğunuz hücrenin satır ve sütununa aynı anda freeze uygulamak/kaldırmakAlt+W+FF
VBA editörünü açmakAlt+F11
Ribbonu küçültüp/büyütmekCTRL+F1
Üst hücrelerdeki tüm rakamların toplamını almakALT+=
Flash Fill uygulamakCTRL+E
Sadece görünen hücreleri seçmekALT+;
\n", "\n" ] } ], "source": [ "results = soup.find_all(class_='alterantelitable')\n", "for r in results: \n", " print(r, end='\\n'*2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gereksiz elementlerden ve taglerden kurtulalım" ] }, { "cell_type": "code", "execution_count": 136, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T16:29:28.266800Z", "start_time": "2021-04-11T16:29:28.257824Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sayfalar arasında dolaşmak\n", "CTRL + PgUp/PgDn\n", "Bugünün Tarihini yazmak\n", "CTRL + SHIFT +, \n", "Tüm açık dosyalarda calculation yapmak\n", "F9\n", "Seçili kısmın değerini hesaplayıp göstermek\n", "Hücre içindeki formül seçilip F9\n", "Aktif sayfada calculation yapmak\n", "SHIFT+F9\n", "Sadece belli range için calculation yapmak\n", "VBA ile yapılır. Burdan bakın.\n", "Bulunduğun hücrenin CurrentRegion'ını seçme\n", "CTRL+ A\n", "Bulunduğun hücreden CurrentRegion'ın uç noktlarına gitmek\n", "CTRL+ Ok tuşları\n", "Bulunduğun hücreden itibaren belli bir yöne doğru seçim yapmak\n", "SHIFT+Ok tuşları\n", "Bulunduğun hücreden itibaren CurrentRegion bir ucuna doğru toplu seçim yapmak\n", "CTRL+SHIFT+Ok tuşları\n", "Bulunduğun hücreden CurrentRegion'ın Sağ Aşağı uç noktlasına gitmek\n", "CTRL+END\n", "Bulunduğun hücreden CurrentRegion'ın Sağ Aşağı uç noktlasına kadar seçmek\n", "CTRL+SHIFT+END\n", "Bulunduğun hücreden A1 hücresine kadar olan alanı(sol yukarı) seçmek\n", "CTRL+SHIFT+HOME\n", "Bir hücre içinde veri girerken, aynı hücre içinde yeni bir satır açıp oradan devam etmek\n", "ALT+ENTER\n", "Veri/Formül girişi yaptığınız hücrede alt hücreye geçmeden giriş tamamlamak \n", "CTRL+ENTER\n", " Ekranda bir sayfa sağa kaymak.\n", "ALT+PGE DOWN\n", "AutoFilter'ı aktif/pasif hale getirmek\n", "CTRL+SHIFT+L\n", "Bulunduğunuz hücrenin satır ve sütununa aynı anda freeze uygulamak/kaldırmak\n", "Alt+W+FF\n", "VBA editörünü açmak\n", "Alt+F11\n", "Ribbonu küçültüp/büyütmek\n", "CTRL+F1\n", "Üst hücrelerdeki tüm rakamların toplamını almak\n", "ALT+=\n", "Flash Fill uygulamak\n", "CTRL+E\n", "Sadece görünen hücreleri seçmek\n", "ALT+;\n" ] } ], "source": [ "results = soup.find_all(class_='alterantelitable')\n", "for r in results:\n", " tds=r.find_all(\"td\")\n", " for td in tds:\n", " print(td.text)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "İşlemle ilgili kısayolu altalta değil de yanyana yazmasını sağlayalım," ] }, { "cell_type": "code", "execution_count": 154, "metadata": { "ExecuteTime": { "end_time": "2021-04-11T16:43:05.446075Z", "start_time": "2021-04-11T16:43:05.431291Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sayfalar arasında dolaşmak : CTRL + PgUp/PgDn\n", "Bugünün Tarihini yazmak : CTRL + SHIFT +, \n", "Tüm açık dosyalarda calculation yapmak : F9\n", "Seçili kısmın değerini hesaplayıp göstermek : Hücre içindeki formül seçilip F9\n", "Aktif sayfada calculation yapmak : SHIFT+F9\n", "Sadece belli range için calculation yapmak : VBA ile yapılır. Burdan bakın.\n", "Bulunduğun hücrenin CurrentRegion'ını seçme : CTRL+ A\n", "Bulunduğun hücreden CurrentRegion'ın uç noktlarına gitmek : CTRL+ Ok tuşları\n", "Bulunduğun hücreden itibaren belli bir yöne doğru seçim yapmak : SHIFT+Ok tuşları\n", "Bulunduğun hücreden itibaren CurrentRegion bir ucuna doğru toplu seçim yapmak : CTRL+SHIFT+Ok tuşları\n", "Bulunduğun hücreden CurrentRegion'ın Sağ Aşağı uç noktlasına gitmek : CTRL+END\n", "Bulunduğun hücreden CurrentRegion'ın Sağ Aşağı uç noktlasına kadar seçmek : CTRL+SHIFT+END\n", "Bulunduğun hücreden A1 hücresine kadar olan alanı(sol yukarı) seçmek : CTRL+SHIFT+HOME\n", "Bir hücre içinde veri girerken, aynı hücre içinde yeni bir satır açıp oradan devam etmek : ALT+ENTER\n", "Veri/Formül girişi yaptığınız hücrede alt hücreye geçmeden giriş tamamlamak : CTRL+ENTER\n", " Ekranda bir sayfa sağa kaymak. : ALT+PGE DOWN\n", "AutoFilter'ı aktif/pasif hale getirmek : CTRL+SHIFT+L\n", "Bulunduğunuz hücrenin satır ve sütununa aynı anda freeze uygulamak/kaldırmak : Alt+W+FF\n", "VBA editörünü açmak : Alt+F11\n", "Ribbonu küçültüp/büyütmek : CTRL+F1\n", "Üst hücrelerdeki tüm rakamların toplamını almak : ALT+=\n", "Flash Fill uygulamak : CTRL+E\n", "Sadece görünen hücreleri seçmek : ALT+;\n" ] } ], "source": [ "results = soup.find_all(class_='alterantelitable')\n", "for r in results:\n", " trs=r.find_all(\"tr\")\n", " for tr in trs:\n", " td1=tr.select(\"td\")[0] #tr.find(\"td\") de olurdu ama aşağıdakiyle bütünlük olması adına ikisini de select ile yaptık\n", " td2=tr.select(\"td\")[1]\n", " print(td1.text,\":\",td2.text)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bunun bir de MechanicalSoup versiyonu var, onda websitelerindeki formları da otomatik doldurma işlemi yaptırabiliyorsunuz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Logging" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Programınızı test ederken print değil bunu kullanmanız önerilir." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2021-05-12T20:51:08.220308Z", "start_time": "2021-05-12T20:51:08.214322Z" }, "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:This is a warning message\n", "ERROR:root:This is an error message\n", "CRITICAL:root:This is a critical message\n" ] } ], "source": [ "import logging\n", "\n", "logging.debug('This is a debug message') \n", "logging.info('This is an info message')\n", "#by default, the logging module logs the messages with a severity level of WARNING or above\n", "logging.warning('This is a warning message')\n", "logging.error('This is an error message')\n", "logging.critical('This is a critical message')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "root= default logger" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2021-05-12T20:55:46.385664Z", "start_time": "2021-05-12T20:55:46.381676Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "DEBUG:root:This will get logged\n" ] } ], "source": [ "logging.basicConfig(level=logging.DEBUG,force=True) #son parametre gerekli. Detay için: https://stackoverflow.com/questions/30861524/logging-basicconfig-not-creating-log-file-when-i-run-in-pycharm/42210221\n", "logging.debug('This will get logged')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2021-05-12T20:56:20.598673Z", "start_time": "2021-05-12T20:56:20.592689Z" } }, "outputs": [], "source": [ "logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s',force=True)\n", "logging.warning('This will get logged to a file')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2021-05-12T21:01:25.865412Z", "start_time": "2021-05-12T21:01:25.861458Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "root - INFO - 2021-05-13 00:01:25,862 - Admin logged in\n" ] } ], "source": [ "logging.basicConfig(format='%(name)s - %(levelname)s - %(asctime)s - %(message)s', level=logging.INFO,force=True)\n", "logging.info('Admin logged in')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2021-05-12T21:01:28.566129Z", "start_time": "2021-05-12T21:01:28.561176Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "root - ERROR - 2021-05-13 00:01:28,562 - John raised an error\n" ] } ], "source": [ "name = 'John'\n", "logging.error(f'{name} raised an error')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2021-05-12T21:02:03.896954Z", "start_time": "2021-05-12T21:02:03.892964Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "root - ERROR - 2021-05-13 00:02:03,893 - Exception occurred\n", "Traceback (most recent call last):\n", " File \"\", line 5, in \n", " c = a / b\n", "ZeroDivisionError: division by zero\n" ] } ], "source": [ "a = 5\n", "b = 0\n", "\n", "try:\n", " c = a / b\n", "except Exception as e:\n", " logging.error(\"Exception occurred\", exc_info=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## tqdm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Döngüsel işlemlerde progressbar sağlar" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████████████████████████████████████| 10/10 [00:01<00:00, 9.24it/s]\n" ] } ], "source": [ "from tqdm import tqdm\n", "from time import sleep\n", " \n", "for i in tqdm(range(10)):\n", " sleep(.1)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4a1e73012b7d4562a4429ceccad14dc6", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value=''), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# Simple loop\n", "for i in range(100):\n", " pass\n", "\n", "# Loop with a progress bar\n", "for i in trange(100):\n", " time.sleep(0.01)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ea54255312e340f9a87911c4a7c7a758", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='1st loop'), FloatProgress(value=0.0, max=3.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e8f656fb294f4fefa6440fe1aaace1da", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='2nd loop'), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "466f74e83ee044b9989f04d6427b77d9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='2nd loop'), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "78f9b4ab861d4021a13eb0d4190c9731", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='2nd loop'), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] } ], "source": [ "from tqdm.notebook import trange, tqdm\n", "from time import sleep\n", "\n", "for i in trange(3, desc='1st loop'):\n", " for j in tqdm(range(100), desc='2nd loop'):\n", " sleep(0.01)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Eğer progresbar görünmüyorsa mıuhtemelen nbextensionstaki bi widget üyüzndendir, şuraya bakın : \n", "https://stackoverflow.com/questions/57343134/jupyter-notebooks-not-displaying-progress-bars" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Enabling notebook extension jupyter-js-widgets/extension...\n", " - Validating: ok\n" ] } ], "source": [ "!jupyter nbextension enable --py widgetsnbextension" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5297d309abf14331a0c57ea4a649acb3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='1st loop'), FloatProgress(value=0.0, max=4.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "96147d3ab7b645cc989800c7ae5ae1dc", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='2nd loop'), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0774ea0ce017448fb9a0b50cc22f0841", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='2nd loop'), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f93b3735a25b41c384f076ad324bfcd2", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='2nd loop'), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "260a7ee6f1204ad7ab490b47869852f1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value='2nd loop'), FloatProgress(value=0.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] } ], "source": [ "from tqdm import tqdm_notebook\n", "from tqdm.notebook import trange\n", "from time import sleep\n", "\n", "for i in trange(4, desc='1st loop'):\n", " for j in trange(100, desc='2nd loop'):\n", " sleep(0.01)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b747260b4139494f888c0af5e0bec7d2", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=10.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "from tqdm.notebook import tqdm_notebook\n", "import time\n", "\n", "for i in tqdm_notebook(range(10)):\n", " time.sleep(0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### looplarda tqdm" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loop 1: 0%| | 0/2 [00:00Güvenli dosya işlemleri" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dosyalarla işiniz bitince kapatmak önemlidir. Kapandığından emin olmak için with bloğu içinde yazmak gerekir" ] }, { "cell_type": "code", "execution_count": 188, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "selam\n" ] } ], "source": [ "with io.open(\"test.txt\", \"r\") as dosya:\n", " print(dosya.read())" ] }, { "cell_type": "code", "execution_count": 189, "metadata": {}, "outputs": [], "source": [ "#hem okuma hem yazma moduyla açıp başa bilgi ekleme\n", "with io.open(\"test.txt\", \"r+\") as f:\n", " content = f.read()\n", " f.seek(0) #Dosyayı başa sarıyoruz\n", " f.write(\"volkan\\n\"+content)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Türkçe karakter**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "utf-8 mi cp1254 mü?
\n", "\n", "https://python-istihza.yazbel.com/karakter_kodlama.html" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T13:53:00.576889Z", "start_time": "2020-11-22T13:53:00.572903Z" } }, "outputs": [ { "data": { "text/plain": [ "'cp1254'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import locale\n", "locale.getpreferredencoding()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2020-11-22T13:53:07.023663Z", "start_time": "2020-11-22T13:53:07.017681Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bu birinci satır\n", "bu ikinci\n", "bu da üçüncü\n" ] } ], "source": [ "with open(r\"E:\\OneDrive\\Dökümanlar\\GitHub\\PythonRocks\\abc.txt\", \"r\", encoding='cp1254') as f:\n", " print(f.read())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Yazma" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "yenidosya=io.open(\"writetest.txt\",\"w\") #x\n", "yenidosya.write(\"merhaba\\n\")\n", "lines=[\"satır1\\n\",\"satır2\\n\"]\n", "yenidosya.writelines(lines)\n", "yenidosya.close()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#varolana yaz, sonuna ekleme\n", "yenidosya=io.open(\"writetest.txt\",\"a\")\n", "yenidosya.write(\"\\nselam\")\n", "yenidosya.flush() #hemen yazsın. bunu kullanmazsak yaptığımız değişiklikleri hemen görmeyiz\n", "yenidosya.close()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = io.open(r\"E:\\OneDrive\\Dökümanlar\\GitHub\\PythonRocks\\abc.txt\", \"a\", encoding='utf-8')\n", "f.write(\"yeni satır ekleniyor\")\n", "f.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Veritabanı işlemleri" ] }, { "cell_type": "code", "execution_count": 190, "metadata": {}, "outputs": [], "source": [ "import sqlite3 as sql #python içinde otomatikman gelir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "sqlite sayfasından chinook databaseini indirin" ] }, { "cell_type": "code", "execution_count": 191, "metadata": {}, "outputs": [], "source": [ "vt = sql.connect(r'C:\\Users\\volka\\Downloads\\chinook\\chinook.db')" ] }, { "cell_type": "code", "execution_count": 192, "metadata": {}, "outputs": [], "source": [ "cur=vt.cursor()" ] }, { "cell_type": "code", "execution_count": 193, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 193, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cur.execute(\"select * from albums\")" ] }, { "cell_type": "code", "execution_count": 194, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(1, 'For Those About To Rock We Salute You', 1),\n", " (2, 'Balls to the Wall', 2),\n", " (3, 'Restless and Wild', 2)]" ] }, "execution_count": 194, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cur.fetchmany(3)" ] }, { "cell_type": "code", "execution_count": 195, "metadata": {}, "outputs": [], "source": [ "veriler = cur.fetchall()" ] }, { "cell_type": "code", "execution_count": 196, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[(4, 'Let There Be Rock', 1),\n", " (5, 'Big Ones', 3),\n", " (6, 'Jagged Little Pill', 4),\n", " (7, 'Facelift', 5),\n", " (8, 'Warner 25 Anos', 6)]" ] }, "execution_count": 196, "metadata": {}, "output_type": "execute_result" } ], "source": [ "veriler[:5] #ilk 3ünü çektiğimiz için 4ten devam ediyor" ] }, { "cell_type": "code", "execution_count": 197, "metadata": {}, "outputs": [], "source": [ "vt.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

NOT:sqlite3 çok basit bir veritabanı olup, oracle veya sql server gibi güçlü veritabanlarını sorgulamak için sqlalchemy veya pyodbc gibi modülleri kullanırız ve buradan aldığmız datayı pandas ile işleyebiliriz. Bunun için benim github repomdaki Python Veri Analizi notebookuna bakmanızı tavsiye ederim.

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://sqlitebrowser.org/. sitesi de incelenebilir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Classlar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python nesne yönelimli(oo) bir dildir ve tüm oo dillerde olduğu gibi sınıflar yaratılabilir. Örnek bir sınıf yaratımı aşağıdaki gibi olup detaylar için googlelamanızı rica ederim." ] }, { "cell_type": "code", "execution_count": 198, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "yeni araç hazır\n", "yeni araç hazır\n", "yeni araç hazır\n", "<__main__.Araba object at 0x0000018A63391860>\n", "çalışıyor\n", "durdu\n", "Mekanik\n", "Mekanik\n" ] } ], "source": [ "class Araba:\n", " aractipi=\"Mekanik\" #class seviyesinde, tüm Arabalar tarafından paylaşılan bir değer\n", " def __init__(self,model,marka,km):\n", " self.model=model\n", " self.marka=marka\n", " self.km=km\n", " print(\"yeni araç hazır\")\n", " def run(self):\n", " print(\"çalışıyor\")\n", " def stop(self):\n", " print(\"durdu\")\n", "\n", "bmw0=Araba(2011,\"bmw\",0)\n", "bmw1=Araba(2014,\"bmw\",0)\n", "audi=Araba(2011,\"audi\",0)\n", "print(bmw0)\n", "bmw0.run()\n", "bmw0.stop()\n", "print(bmw0.aractipi)\n", "print(audi.aractipi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Paralelleştirme" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Özellikle analitik model kurma sırasında çok işimize yarayan bir olgudur. Bunun için ayrı bir notebook'um olacak. Önden araştırmak isteyenler şu kavramları araştırabilir. Multi-threading, multiprocessing, conccurency ve parallelism" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Verimlilik ve Diğer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## debugging" ] }, { "cell_type": "code", "execution_count": 199, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "--Return--\n", "> (3)()->None\n", "-> pdb.set_trace() #c devam, n:next gibi seçenekler var\n", "(Pdb) c\n", "asda\n" ] } ], "source": [ "import pdb\n", "print(4)\n", "pdb.set_trace() #c devam, n:next gibi seçenekler var\n", "print(\"asda\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "ename": "ZeroDivisionError", "evalue": "division by zero", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mZeroDivisionError\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 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0myeniliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmyfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mliste\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[0myeniliste\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36mmyfunc\u001b[1;34m(list_)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmyfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlist_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mx\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlist_\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0myeniliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmyfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mliste\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmyfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlist_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mx\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlist_\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0myeniliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmyfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mliste\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mZeroDivisionError\u001b[0m: division by zero" ] } ], "source": [ "def myfunc(list_):\n", " return [1/x for x in list_]\n", " \n", "liste=[3,5,0,6,7] \n", "yeniliste=myfunc(liste)\n", "yeniliste" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "> \u001b[1;32m\u001b[0m(2)\u001b[0;36m\u001b[1;34m()\u001b[0m\n", "\u001b[1;32m 1 \u001b[1;33m\u001b[1;32mdef\u001b[0m \u001b[0mmyfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlist_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[1;32m----> 2 \u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mx\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlist_\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[1;32m 3 \u001b[1;33m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[1;32m 4 \u001b[1;33m\u001b[0mliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[1;32m 5 \u001b[1;33m\u001b[0myeniliste\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmyfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mliste\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\n", "ipdb> x\n", "0\n", "ipdb> quit\n" ] } ], "source": [ "%debug" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## memory yönetimi" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "64\n", "80\n", "76\n" ] } ], "source": [ "import sys\n", "import array\n", "t=(1,2,3)\n", "l=[1,2,\"3\"]\n", "a=array.array(\"l\",[1,2,3])\n", "print(sys.getsizeof(t)) #immutabel olduğu için daha az\n", "print(sys.getsizeof(l)) #mutable olduğu için tupldan daha çok, içine farklı tipler alabileceğim için arraydan daha çok\n", "print(sys.getsizeof(a)) #eleman tipi belli olduğu için listten daha az" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Kod saklama" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Özellikle Data Science çalışmalarınızda olmak üzere bazen detay bilgi verdiğiniz markdown açıklamaları bazen de python kodunuzu gizlemek ve dokümanınızın boyutunu küçültebilrsiniz. Markdownlar için, sadece ilgili yeri okumak isteyenler gizlenmiş kısmı açarak okuyabilir. Kodlar için ise, kodun kendisinden ziyade kodun sonucunu(özellikle görselleştirme kodunu) görmek isteyenlere sadece sonucunu gösterme imkanı bulmuş olursunuz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Markdownda detay bilgi gizleme" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Falanca konu(detay görmek için tıklayın)\n", "

Buraya çeşitli bilgiler yazılabilir.

\n", "

Burası bir markdown hücresi olup içeriği görmek için çift tıklayın.

\n", "

Gördüğünüz gibi burada details elementi içinde summary elementi kullanıyoruz

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Kod gizleme" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kodlarınızı gizlemek için ise aşağıdaki kodu kullanabilirsiniz.\n", "\n", "DİKKAT:Bu örnekte, butona bastığınızda sayfadaki tüm input hücreleri gizlenir. Bunlar tekrar göstermek için butona bir kez daha basın.\n", "\n", "Bu konuda daha farklı çözümleri şu sayfada bulabilirsiniz." ] }, { "cell_type": "code", "execution_count": 201, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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74WZMyF/fq+jMiZ07N+/n86dO1O9enVParWnhX2gas6gCs8/D4MGudK9I0da2V5jkuvUqRPHjx9nzJgx5ArRH5DQjMp4Ij4eOnSAUaPcZhsffAAhsqrLmJAxadIkIiIi6N+/PxUrVvQ6nFTZj64B4PRpePhhl9hffhmGDLHEbkxy0dHRdOrUiZtvvplevXp5Hc452cjdcPIk3H8/fPcdDBzoNrQ2xpztueee48iRIyxYsCBkp2MShXZ0JuCOHIF77nFXn44cCU8+ef7XGJMdTZ06la+//prXX3+dG264wetwzsuSezb2669uNcz27W6/0wdSvEbTGHPw4EE6duxI5cqV6d07a2w0Z8k9m5o0ya1hL1jQ1WKvU8friIwJXV27duXgwYNERkaSO3dur8NJE/vILJuJj4cXX4QHH3QbWa9aZYndmHOZMWMG48ePp1+/ftx441l1E0OWjdyzkYMHoVUrV/jrmWfcUse8eb2OypjQdfjwYZ555hkqVapE3759vQ4nXSy5ZxNr1sB998Hu3fbBqTFp1b17d/bv38+sWbPIkyeP1+Gki03LZANffgm1akFcnKvqaIndmPObPXs2Y8eOpU+fPlSpUsXrcNLNknsYi4119WHatIEaNdz8eijtdWpMqDpy5AgdOnTguuuu46WXXvI6nAyxaZkwtW+f+9D0hx+gWzd47z3IIh/yG+Op48ePc88997B3716mTp1K3iz6wZQl9zD0889ufv3QITcl88gjXkdkTNZw7NgxGjduzM8//8yECROoVq2a1yFlWLqmZUTkChH5XkQ2icivItLVd/xVEdklImt9X3cFJlxzPiNHug2sc+d2V51mx8T+119/AVyTQj+9WETmichm320R33ERkaEiskVE1ovIvxOsItLWd/5mEWmbcosmHBw5coRGjRqxYsUKJk6cyANZ/Kq+9M65xwE9VfVaoCbQSUQSy6INVtXKvq85fo3SnNepU66i49NPQ716sHIlVK7sdVTe8NX82JlCP+0NLFDVcsAC32OAJkA531d74GNwvwyAV4AauL1XX0n8hWDCy+HDh7njjjtYvXo1ERER3HfffV6HlGnpSu6qukdVV/vuHwc2ASUCEZhJu127XEIfMQJ694Y5c6BoUa+j8s7ll18OcBLO6qfNgbG+08YCLXz3mwPj1FkGXCQilwN3AvNU9ZCqHgbmAY2D9o2YoDh48CANGzZk/fr1TJkyhebNm3sdkl9keLWMiJQGbgKW+w519v1JO9pGN8GhCl984a403bABIiLg7bchxLZy9FSyflpcVfeAG6gAl/pOKwH8leRlO33HUjtuwsSBAwdo2LAhGzduZNq0aTRt2tTrkPwmQ8ldRAoAk4FuqnoM92dsWaAysAcYmMrr2ovIShFZGR0dncGQDcCOHXDXXfDYY1ChgpuGuf9+r6MKLSn001RPTeGYnuN4Sm1Z385i9u/fT4MGDYiKimLGjBk0adLE65D8Kt3JXURy435gxqvqFABV3aeq8aqaAHyGm588i6qOUNWqqlr1kksuyUzc2VZCAnz0EVx3nbsgaehQdxuC+/N6TUjWT4F9vukWfLf7fcd3AlckeW1JYPc5jp/F+nbWsm/fPurXr8+WLVuYNWsWjRo18jokv0vvahkBRgGbVHVQkuOXJzntXuAX/4RnkoqKgrp1oXNnuOUW+OUXtx2e7Zh0JlUFuJJk/RSYASSueGkLTE9y/DHfqpmawFHftE0k0EhEivimGhv5jpksbM+ePdSrV4/t27czZ84cGjZs6HVIAZHede61gTbABhFZ6zvWF3hYRCrj/mTdDnTwW4SGuDgYMABefRUuvBDGjHGbV0tKkwaGJUuWABQFGiTrp+8AE0XkSWAHkLjWbQ5wF7AF90FsOwBVPSQibwArfOe9rqqHgvJNmIDYtWsXDRo0YNeuXXz33XfceuutXocUMOlK7qr6IynPQ9rSxwBZu9bVglm92s2pDxsGl13mdVShrY6rYbxKVaum8PRZwzR1Q/1OKb2Xqo4GRvs1QOOJv/76i/r167N//34iIyOpXbu21yEFlP1BH6JiYqBfP6ha1S11jIhwX5bYjUm/P//8k7p16xIdHc3cuXPDPrGDlR8ISUuWuNF6VBQ8/rjbtPrii72Oypisadu2bdSvX5+jR48yf/78LF1SID1s5B5CTpyA555z5QNiYiAy0s2vW2I3JmP++OMP6taty7Fjx7JVYgcbuYeMyEhXPmDHDrcapn9/KFDA66iMybo2b95M/fr1iYmJYeHChVTOZvU4bOTusZ9+gjvugMaN3UqYxLXrltiNyZjY2FgGDx7MzTffzKlTp7JlYgdL7p5Zvtwl9Nq1Yd06t9RxzRr32BiTMYsWLeKmm26iR48e1KlTh2XLllGpUiWvw/KEJfcgW7kS7r4batZ0OyO9+y5s2wY9e8IFF3gdnTFZ065du3j44YepX78+f//9N9OmTWP27NmULVvW69A8Y8k9SFavhnvugWrVYNkyV+Br2zZ44QXIn9/r6IzJmmJjYxkwYAAVKlRg6tSpvPzyy2zcuJHmzZsj2fwqP/tANcDWrnVXlk6fDkWKwJtvupIBhQp5HZkxWdvChQvp3LkzmzZtomnTpnzwwQfZeqSenI3cA2TDBndF6U03waJF8PrrbqTer58ldmMyY+fOnTz00EM0bNiQU6dOMXPmTGbOnGmJPRkbufvZL7/Aa6+5q0kLFYJXXnEbVF90kdeRGZO1nT59msGDB/PGG28QHx/Pa6+9xgsvvMAF9mFViiy5+4EqrFgBgwbBxIluGeNLL0GPHm4qxhiTOfPmzaNLly5ERUXRvHlzBg8eTJkyZbwOK6RZcs+ErVvhyy/d1+bN7oPRPn1cUs/O29wZ4y87duygR48eTJ48mauvvpo5c+aE3aYagWLJPZ0OHoRJk9z2dj/95I7Vqwcvvujm2G36xZjMOXr0KLNmzSIiIoJvv/2WHDly8Oabb9KzZ0+bgkkHS+5pEBMDs2e7hD5nDsTGQsWKbjlj69ZQqpTXERqTtR05coQZM2YwadIk5s6dy+nTpylRogQdOnSgR48eXHnllV6HmOVYck9FQgL8+KNL6JMmwdGjrtxuly7Qpg3ceKNtlmFMZhw8eJDp06cTERHB/PnziY2N5YorrqBTp0488MAD1KhRgxy2zViGWXJPZtMml9DHj3dFvPLnh/vucwm9QQPImdPrCI3JuqKjo5k2bRqTJk1i4cKFxMfHU7p0abp160bLli2pVq1atr/4yF+ydXKPj3fJfNkyV+tl6VL49VeXwBs1ctMuzZvbFaTGZMbevXuZOnUqERERLFq0iISEBK6++mp69epFy5YtqVKliiX0AMhWyX3vXpfEly93CX3FCldDHdySxRo14Kmn4OGHoXhxb2M1Jqs5fPgwv/3221lfmzdvRlUpX748ffv2pWXLllSqVMkSeoD5NbmLSGNgCJATGKmq7/jz/dMjJsbVc0lM5MuXw59/uudy5XJz5m3buoResyZcfbXNoZuUhVK/9lp8fDw7duxIMYnv37//3/Py5MlDuXLluOGGG3j00Ue59957ue666yyhB5HfkruI5AQ+Au4AdgIrRGSGqm70VxvgLhg6fhwOHXJfBw+eebt7txuRr1vnVrWAW81Ss6bb5ahmTVcS4MIL/RmVCVfB6tdeiYuL49ixYxw9evSMr+THtm3b9u8oPCYm5t/XFytWjAoVKtCsWTMqVKhAhQoVKF++PKVLlyZXrmw1MRBy/PmvXx3YoqpbAUTka6A5kK4fgshIVwo3pcSdeBsXl/rrCxd2ybtnTzcqr1EDLr88E9+Vye780q8TEhL44IMPzjimqul6nJCQQFxcHPHx8cTHx6d4P7VjsbGxHD9+/KwkfvLkyfPGnjdvXkqVKkWFChVo3Lgx5cuX/zeJFytWLD3/DCaI/JncSwB/JXm8E6iR9AQRaQ+0ByiVyuLwCRNg7FjIl8/tHVq0qLu97rozH6d0W6QI5Mnjx+/ImDT0azh/305ISKBnz55+DSxnzpzkzJmTXLlynXGb0v1cuXJRqFAhChcuTKlSpf69f66vxHPy5s3r17hNcPgzuac0mXbG0ENVRwAjAKpWraopnM/QofDJJ7ZxhQkZ5+3XcP6+nTNnTo4ePXr2myebgz7XYxH5N2nnyJHD5q/NOfkzue8ErkjyuCSwO71vYuVwTYjxS78WEQpZ5zZB5M/Lv1YA5USkjIjkAVoBM/z4/sZ4wfq1yZL8NnJX1TgR6QxE4paMjVbVX/31/sZ4wfq1yaok+SfyQWtYJBr4M5WniwEHghhOdm87HL/nK1X1kgC873mFaN8Ox//j7Np2mvq2Z8n9XERkpapWtbbDu12v2/aC/R9b28FiJdeMMSYMWXI3xpgwFKrJfYS1nS3a9bptL9j/sbUdFCE5526MMSZzQnXkbowxJhNCLrmLSGMRiRKRLSLSO0htXiEi34vIJhH5VUS6BqPdZDHkFJE1IjIryO1eJCIRIvKb7/u/JYhtd/f9e/8iIhNEJGyLTnjRr33tWt8Oct8OlX4dUsk9SXnVJkBF4GERqRiEpuOAnqp6LVAT6BSkdpPqCmwKcpvg6pR/p6oVgBuDFYOIlACeA6qq6vW4C4RaBaPtYPOwX4P17aD27VDq1yGV3ElSXlVVTwOJ5VUDSlX3qOpq3/3juE5QItDtJhKRksDdwMhgtelrtxBwGzAKQFVPq+qRIIaQC7hQRHIB+chAzZYswpN+Dda38aZvh0S/DrXknlJ51aB1RAARKQ3cBCwPYrMfAC8ACUFsE+AqIBoY4/uzeaSIBGXHWFXdBQwAdgB7gKOqOjcYbXvA834N1reD0bdDqV+HWnJPU3nVgDUuUgCYDHRT1WNBarMpsF9VVwWjvWRyAVWAj1X1JuBvIFifcxTBjV7LAP8B8ovIo8Fo2wOe9muwvk2Q+nYo9etQS+5+Ka+aESKSG9f5x6vqlGC06VMbaCYi23F/rjcQkS+D1PZOYKeqJo7kInA/EMFwO7BNVaNVNRaYAtQKUtvB5lm/BuvbvsfB6tsh069DLbl7Ul5V3K4Ho4BNqjoo0O0lpap9VLWkqpbGfb8LVTUov+lVdS/wl4iU9x1qSDq3j8uEHUBNEcnn+/dviDcfugWDZ2WDrW8HvW+HTL8OqR1sPSyvWhtoA2wQkbW+Y31VdU4Q2vZaF2C8L+lsBdoFo1FVXS4iEcBq3IqONYTp1aoelw22vh3Evh1K/dquUDXGmDAUatMyxhhj/MCSuzHGhCFL7sYYE4YsuRtjTBiy5G6MMWHIkrsxxoQhS+7GGBOGLLkbY0wY+j+90/EprpCmsQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
" ], "text/plain": [ "" ] }, "execution_count": 201, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#python code\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "_, axes = plt.subplots(2, 2)\n", "\n", "axes[0, 0].plot(range(10), 'r') #row=0, col=0\n", "axes[1, 0].plot([x**2 for x in range(10)], 'b') #row=1, col=0\n", "axes[0, 1].plot([x**3 for x in range(10)], 'g') #row=0, col=1\n", "axes[1, 1].plot([x**4 for x in range(10)], 'k') #row=1, col=1\n", "plt.show()\n", "\n", "#kod gizlemek için burdan itibaren olan kısım kullanılır\n", "from IPython.display import HTML\n", "\n", "HTML('''\n", "
''')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cheatsheet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![cheatsheet.png](cheatsheet.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Kendinizi test edin " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Aşağıdaki adreslerden birinden challange sorularını görebilirsiniz.\n", "* https://mybinder.org/v2/gh/VolkiTheDreamer/PythonRocks/master (Interaktiftir, download etmenize gerek yok)\n", "* https://github.com/VolkiTheDreamer/PythonRocks\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bunun dışında şu sitelerde de pratik yapma imkanı bulabilirsiniz.\n", "\n", "- https://www.w3resource.com/python-exercises/\n", "- https://www.practicepython.org/\n", "- https://www.w3schools.com/python/python_exercises.asp\n", "- https://pynative.com/python-exercises-with-solutions/" ] } ], "metadata": { "hide_input": false, "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.8.6" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "708px", "left": "300px", "top": "148px", "width": "305.625px" }, "toc_section_display": true, "toc_window_display": true }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }