diff --git a/.gitignore b/.gitignore index 62273454..2151ab46 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -# Google App Engine generated folder -appengine-generated/ +.DS_Store +.ipynb_checkpoints diff --git "a/JupyterNotebooks/Cap\303\255tulo01/DSA-Python-Cap\303\255tulo1-Como utilizar o Jupyter Notebook.ipynb" b/Cap01/DSA-Python-Cap01-ComoUtilizarJupyterNotebook.ipynb similarity index 57% rename from "JupyterNotebooks/Cap\303\255tulo01/DSA-Python-Cap\303\255tulo1-Como utilizar o Jupyter Notebook.ipynb" rename to Cap01/DSA-Python-Cap01-ComoUtilizarJupyterNotebook.ipynb index ca607ca8..e692a12e 100644 --- "a/JupyterNotebooks/Cap\303\255tulo01/DSA-Python-Cap\303\255tulo1-Como utilizar o Jupyter Notebook.ipynb" +++ b/Cap01/DSA-Python-Cap01-ComoUtilizarJupyterNotebook.ipynb @@ -12,35 +12,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Como utilizar o Jupyer Notebook" + "## Como Utilizar o Jupyter Notebook" ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "')" ] }, { @@ -61,9 +63,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -75,9 +77,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo01/Jupyter Notebook-Manual de Usu\303\241rio.ipynb" b/Cap01/JupyterNotebook-ManualUsuario.ipynb similarity index 100% rename from "JupyterNotebooks/Cap\303\255tulo01/Jupyter Notebook-Manual de Usu\303\241rio.ipynb" rename to Cap01/JupyterNotebook-ManualUsuario.ipynb diff --git a/Cap01/hello.py b/Cap01/hello.py new file mode 100644 index 00000000..8e235769 --- /dev/null +++ b/Cap01/hello.py @@ -0,0 +1 @@ +print("Hello World") \ No newline at end of file diff --git a/Cap02/Lab01/game_v1.py b/Cap02/Lab01/game_v1.py new file mode 100644 index 00000000..5d3329cf --- /dev/null +++ b/Cap02/Lab01/game_v1.py @@ -0,0 +1,145 @@ +# Game Ping-Pong + +from tkinter import * +import random +import time + +level = int(input("Qual nível você gostaria de jogar? 1/2/3/4/5 \n")) +length = 500/level + + +root = Tk() +root.title("Ping Pong") +root.resizable(0,0) +root.wm_attributes("-topmost", -1) + +canvas = Canvas(root, width=800, height=600, bd=0,highlightthickness=0) +canvas.pack() + +root.update() + +# Variável +count = 0 +lost = False + +class Bola: + def __init__(self, canvas, Barra, color): + self.canvas = canvas + self.Barra = Barra + self.id = canvas.create_oval(0, 0, 15, 15, fill=color) + self.canvas.move(self.id, 245, 200) + + starts_x = [-3, -2, -1, 1, 2, 3] + random.shuffle(starts_x) + + self.x = starts_x[0] + self.y = -3 + + self.canvas_height = self.canvas.winfo_height() + self.canvas_width = self.canvas.winfo_width() + + + def draw(self): + self.canvas.move(self.id, self.x, self.y) + + pos = self.canvas.coords(self.id) + + if pos[1] <= 0: + self.y = 3 + + if pos[3] >= self.canvas_height: + self.y = -3 + + if pos[0] <= 0: + self.x = 3 + + if pos[2] >= self.canvas_width: + self.x = -3 + + self.Barra_pos = self.canvas.coords(self.Barra.id) + + + if pos[2] >= self.Barra_pos[0] and pos[0] <= self.Barra_pos[2]: + if pos[3] >= self.Barra_pos[1] and pos[3] <= self.Barra_pos[3]: + self.y = -3 + global count + count +=1 + score() + + + if pos[3] <= self.canvas_height: + self.canvas.after(10, self.draw) + else: + game_over() + global lost + lost = True + + +class Barra: + def __init__(self, canvas, color): + self.canvas = canvas + self.id = canvas.create_rectangle(0, 0, length, 10, fill=color) + self.canvas.move(self.id, 200, 400) + + self.x = 0 + + self.canvas_width = self.canvas.winfo_width() + + self.canvas.bind_all("", self.move_left) + self.canvas.bind_all("", self.move_right) + + def draw(self): + self.canvas.move(self.id, self.x, 0) + + self.pos = self.canvas.coords(self.id) + + if self.pos[0] <= 0: + self.x = 0 + + if self.pos[2] >= self.canvas_width: + self.x = 0 + + global lost + + if lost == False: + self.canvas.after(10, self.draw) + + def move_left(self, event): + if self.pos[0] >= 0: + self.x = -3 + + def move_right(self, event): + if self.pos[2] <= self.canvas_width: + self.x = 3 + + +def start_game(event): + global lost, count + lost = False + count = 0 + score() + canvas.itemconfig(game, text=" ") + + time.sleep(1) + Barra.draw() + Bola.draw() + + +def score(): + canvas.itemconfig(score_now, text="Pontos: " + str(count)) + +def game_over(): + canvas.itemconfig(game, text="Game over!") + + +Barra = Barra(canvas, "orange") +Bola = Bola(canvas, Barra, "purple") + + +score_now = canvas.create_text(430, 20, text="Pontos: " + str(count), fill = "green", font=("Arial", 16)) +game = canvas.create_text(400, 300, text=" ", fill="red", font=("Arial", 40)) + + +canvas.bind_all("", start_game) + +root.mainloop() \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-N\303\272meros.ipynb" b/Cap02/Notebooks/DSA-Python-Cap02-01-Numeros.ipynb similarity index 86% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-N\303\272meros.ipynb" rename to Cap02/Notebooks/DSA-Python-Cap02-01-Numeros.ipynb index d94bfcf3..81e996d5 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-N\303\272meros.ipynb" +++ b/Cap02/Notebooks/DSA-Python-Cap02-01-Numeros.ipynb @@ -13,29 +13,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Números " + "## Números e Operações Matemáticas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Operações Básicas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Pressione as teclas shift e enter para executar o código em uma célula" + "# Pressione as teclas shift e enter para executar o código em uma célula ou pressione o botão Play no menu superior" ] }, { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -56,9 +47,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -79,9 +68,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -102,9 +89,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -125,9 +110,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -148,9 +131,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -178,9 +159,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -200,9 +179,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -222,9 +199,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -252,9 +227,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -274,9 +247,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -296,9 +267,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -318,9 +287,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -341,9 +308,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -364,9 +329,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -386,9 +349,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -415,9 +376,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -437,9 +396,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -459,9 +416,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -488,9 +443,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -510,9 +463,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -532,9 +483,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -554,9 +503,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -583,9 +530,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -606,9 +551,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -629,9 +572,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -652,9 +593,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -675,9 +614,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -713,9 +650,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -727,9 +664,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Vari\303\241veis.ipynb" b/Cap02/Notebooks/DSA-Python-Cap02-02-Variaveis.ipynb similarity index 86% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Vari\303\241veis.ipynb" rename to Cap02/Notebooks/DSA-Python-Cap02-02-Variaveis.ipynb index 9895358a..562f186d 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Vari\303\241veis.ipynb" +++ b/Cap02/Notebooks/DSA-Python-Cap02-02-Variaveis.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -54,9 +52,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -74,9 +70,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "NameError", @@ -109,9 +103,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -131,9 +123,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -164,9 +154,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -197,9 +185,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -237,9 +223,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -259,9 +243,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -281,9 +263,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -314,9 +294,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -336,9 +314,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -355,6 +331,29 @@ "fruta2" ] }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'Fruta2' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mFruta2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'Fruta2' is not defined" + ] + } + ], + "source": [ + "# Fique atento!!! Python é case-sensitive. Criamos a variável fruta2, mas não a variável Fruta2.\n", + "# Letras maiúsculas e minúsculas tem diferença no nome da variável.\n", + "Fruta2" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -364,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": { "collapsed": true }, @@ -375,10 +374,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -386,7 +383,7 @@ "50" ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -397,17 +394,15 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 22, + "metadata": {}, "outputs": [ { "ename": "SyntaxError", - "evalue": "invalid syntax (, line 2)", + "evalue": "invalid syntax (, line 2)", "output_type": "error", "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m 1x = 50\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m 1x = 50\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], @@ -459,17 +454,15 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 23, + "metadata": {}, "outputs": [ { "ename": "SyntaxError", - "evalue": "invalid syntax (, line 2)", + "evalue": "invalid syntax (, line 2)", "output_type": "error", "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m break = 1\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m break = 1\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], @@ -487,7 +480,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": { "collapsed": true }, @@ -498,7 +491,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": { "collapsed": true }, @@ -509,7 +502,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": { "collapsed": true }, @@ -520,10 +513,8 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, + "execution_count": 27, + "metadata": {}, "outputs": [ { "data": { @@ -531,7 +522,7 @@ "8" ] }, - "execution_count": 26, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -542,7 +533,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -553,10 +544,8 @@ }, { "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -564,7 +553,7 @@ "12" ] }, - "execution_count": 28, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -575,9 +564,9 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -587,10 +576,8 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": false - }, + "execution_count": 31, + "metadata": {}, "outputs": [ { "data": { @@ -598,7 +585,7 @@ "32" ] }, - "execution_count": 30, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -616,7 +603,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": { "collapsed": true }, @@ -627,7 +614,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -638,10 +625,8 @@ }, { "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, + "execution_count": 34, + "metadata": {}, "outputs": [ { "data": { @@ -649,7 +634,7 @@ "60" ] }, - "execution_count": 33, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -660,10 +645,8 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": { - "collapsed": false - }, + "execution_count": 35, + "metadata": {}, "outputs": [ { "data": { @@ -671,7 +654,7 @@ "10" ] }, - "execution_count": 34, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -682,10 +665,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, + "execution_count": 36, + "metadata": {}, "outputs": [ { "data": { @@ -693,7 +674,7 @@ "875" ] }, - "execution_count": 35, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -704,10 +685,8 @@ }, { "cell_type": "code", - "execution_count": 36, - "metadata": { - "collapsed": false - }, + "execution_count": 37, + "metadata": {}, "outputs": [ { "data": { @@ -715,7 +694,7 @@ "1.4" ] }, - "execution_count": 36, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -726,10 +705,8 @@ }, { "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": false - }, + "execution_count": 38, + "metadata": {}, "outputs": [ { "data": { @@ -737,7 +714,7 @@ "10" ] }, - "execution_count": 37, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -755,29 +732,29 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 39, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "nome = \"Luis\"" + "nome = \"Steve\"" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "sobrenome = \"Suarez\"" + "sobrenome = \"Jobs\"" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 41, "metadata": { "collapsed": true }, @@ -788,18 +765,16 @@ }, { "cell_type": "code", - "execution_count": 41, - "metadata": { - "collapsed": false - }, + "execution_count": 42, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Luis Suarez'" + "'Steve Jobs'" ] }, - "execution_count": 41, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -826,9 +801,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -840,9 +815,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Strings.ipynb" b/Cap02/Notebooks/DSA-Python-Cap02-03-Strings.ipynb similarity index 87% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Strings.ipynb" rename to Cap02/Notebooks/DSA-Python-Cap02-03-Strings.ipynb index 18a93489..ccfb5e4a 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Strings.ipynb" +++ b/Cap02/Notebooks/DSA-Python-Cap02-03-Strings.ipynb @@ -27,14 +27,12 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Olá'" + "'Oi'" ] }, "execution_count": 1, @@ -44,20 +42,18 @@ ], "source": [ "# Uma única palavra\n", - "'Olá'" + "'Oi'" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Isto é uma string em Python'" + "'Criando uma string em Python'" ] }, "execution_count": 2, @@ -67,20 +63,18 @@ ], "source": [ "# Uma frase\n", - "'Isto é uma string em Python'" + "'Criando uma string em Python'" ] }, { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Isto é uma string em Python, usando aspas duplas'" + "'Podemos usar aspas duplas ou simples para strings em Python'" ] }, "execution_count": 3, @@ -90,15 +84,13 @@ ], "source": [ "# Podemos usar aspas duplas\n", - "\"Isto é uma string em Python, usando aspas duplas\"" + "\"Podemos usar aspas duplas ou simples para strings em Python\"" ] }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -126,9 +118,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -145,9 +135,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -167,9 +155,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -206,9 +192,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -225,9 +209,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -248,9 +230,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -270,9 +250,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -299,9 +277,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -315,7 +291,7 @@ } ], "source": [ - "# Retorna todos os elementos da string, começando pela posição (lembre que Python começa a indexação pela posição 0),\n", + "# Retorna todos os elementos da string, começando pela posição (lembre-se que Python começa a indexação pela posição 0),\n", "# até o fim da string.\n", "s[1:]" ] @@ -323,9 +299,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -346,9 +320,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -369,9 +341,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -391,9 +361,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -414,9 +382,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -444,9 +410,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -466,9 +430,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -488,9 +450,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -517,9 +477,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -539,9 +497,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "TypeError", @@ -563,9 +519,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -597,9 +551,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -628,9 +580,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -657,9 +607,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -679,9 +627,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -702,9 +648,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -725,9 +669,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -766,9 +708,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -802,20 +742,18 @@ }, "outputs": [], "source": [ - "s = 'olá! seja bem vindo ao universo de python'" + "s = 'seja bem vindo ao universo de python'" ] }, { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Olá! seja bem vindo ao universo de python'" + "'Seja bem vindo ao universo de python'" ] }, "execution_count": 35, @@ -830,9 +768,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -852,14 +788,12 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "35" + "30" ] }, "execution_count": 37, @@ -874,14 +808,12 @@ { "cell_type": "code", "execution_count": 38, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'olá! seja bem vindo ao universo de python'" + "'seja bem vindo ao universo de python'" ] }, "execution_count": 38, @@ -896,9 +828,7 @@ { "cell_type": "code", "execution_count": 39, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -918,9 +848,7 @@ { "cell_type": "code", "execution_count": 40, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -940,9 +868,7 @@ { "cell_type": "code", "execution_count": 41, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -962,9 +888,7 @@ { "cell_type": "code", "execution_count": 42, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -984,9 +908,7 @@ { "cell_type": "code", "execution_count": 43, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1006,14 +928,12 @@ { "cell_type": "code", "execution_count": 44, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "('olá', '!', ' seja bem vindo ao universo de python')" + "('seja bem vindo ao universo de python', '', '')" ] }, "execution_count": 44, @@ -1035,9 +955,7 @@ { "cell_type": "code", "execution_count": 45, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1054,9 +972,7 @@ { "cell_type": "code", "execution_count": 46, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1088,9 +1004,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1102,9 +1018,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Listas.ipynb" b/Cap02/Notebooks/DSA-Python-Cap02-04-Listas.ipynb similarity index 91% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Listas.ipynb" rename to Cap02/Notebooks/DSA-Python-Cap02-04-Listas.ipynb index ce551c4b..3fbfedbc 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Listas.ipynb" +++ b/Cap02/Notebooks/DSA-Python-Cap02-04-Listas.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -63,9 +61,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -95,9 +91,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -116,7 +110,7 @@ "cell_type": "code", "execution_count": 7, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -140,9 +134,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -167,9 +159,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -202,9 +192,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -232,9 +220,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "IndexError", @@ -268,9 +254,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -311,9 +295,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -346,9 +328,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -379,9 +359,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -412,9 +390,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -445,9 +421,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -478,9 +452,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -511,9 +483,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -544,9 +514,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -585,9 +553,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -619,9 +585,7 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -652,9 +616,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -685,9 +647,7 @@ { "cell_type": "code", "execution_count": 39, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -718,9 +678,7 @@ { "cell_type": "code", "execution_count": 41, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -751,9 +709,7 @@ { "cell_type": "code", "execution_count": 43, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -791,9 +747,7 @@ { "cell_type": "code", "execution_count": 45, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -824,9 +778,7 @@ { "cell_type": "code", "execution_count": 47, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -858,9 +810,7 @@ { "cell_type": "code", "execution_count": 49, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -899,9 +849,7 @@ { "cell_type": "code", "execution_count": 51, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -919,9 +867,7 @@ { "cell_type": "code", "execution_count": 52, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -946,9 +892,7 @@ { "cell_type": "code", "execution_count": 53, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -969,9 +913,7 @@ { "cell_type": "code", "execution_count": 54, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -992,9 +934,7 @@ { "cell_type": "code", "execution_count": 55, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1039,9 +979,7 @@ { "cell_type": "code", "execution_count": 58, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1072,9 +1010,7 @@ { "cell_type": "code", "execution_count": 60, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1094,9 +1030,7 @@ { "cell_type": "code", "execution_count": 61, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1128,9 +1062,7 @@ { "cell_type": "code", "execution_count": 63, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1147,9 +1079,7 @@ { "cell_type": "code", "execution_count": 64, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1180,9 +1110,7 @@ { "cell_type": "code", "execution_count": 66, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1213,9 +1141,7 @@ { "cell_type": "code", "execution_count": 68, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1270,9 +1196,7 @@ { "cell_type": "code", "execution_count": 72, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1325,9 +1249,7 @@ { "cell_type": "code", "execution_count": 76, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1347,9 +1269,7 @@ { "cell_type": "code", "execution_count": 77, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1369,9 +1289,7 @@ { "cell_type": "code", "execution_count": 78, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1390,9 +1308,7 @@ { "cell_type": "code", "execution_count": 79, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1419,9 +1335,7 @@ { "cell_type": "code", "execution_count": 80, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ValueError", @@ -1442,9 +1356,7 @@ { "cell_type": "code", "execution_count": 81, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1465,7 +1377,7 @@ "cell_type": "code", "execution_count": 82, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1475,9 +1387,7 @@ { "cell_type": "code", "execution_count": 83, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1509,9 +1419,7 @@ { "cell_type": "code", "execution_count": 85, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1543,9 +1451,7 @@ { "cell_type": "code", "execution_count": 87, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1577,9 +1483,7 @@ { "cell_type": "code", "execution_count": 89, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1611,9 +1515,7 @@ { "cell_type": "code", "execution_count": 91, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1648,9 +1550,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1662,9 +1564,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Dicion\303\241rios.ipynb" b/Cap02/Notebooks/DSA-Python-Cap02-05-Dicionarios.ipynb similarity index 86% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Dicion\303\241rios.ipynb" rename to Cap02/Notebooks/DSA-Python-Cap02-05-Dicionarios.ipynb index 7107af78..7eda25a2 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Dicion\303\241rios.ipynb" +++ b/Cap02/Notebooks/DSA-Python-Cap02-05-Dicionarios.ipynb @@ -25,20 +25,18 @@ "outputs": [], "source": [ "# Isso é uma lista\n", - "estudantes_lst = [\"Pedro\", 24, \"Fernando\", 22, \"Tania\", 26, \"Cris\", 25] " + "estudantes_lst = [\"Mateus\", 24, \"Fernanda\", 22, \"Tamires\", 26, \"Cristiano\", 25] " ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['Pedro', 24, 'Fernando', 22, 'Tania', 26, 'Cris', 25]" + "['Mateus', 24, 'Fernanda', 22, 'Tamires', 26, 'Cristiano', 25]" ] }, "execution_count": 2, @@ -59,20 +57,18 @@ "outputs": [], "source": [ "# Isso é um dicionário\n", - "estudantes_dict = {\"Pedro\":24, \"Fernando\":22, \"Tania\":26, \"Cris\":25}" + "estudantes_dict = {\"Mateus\":24, \"Fernanda\":22, \"Tamires\":26, \"Cristiano\":25}" ] }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'Cris': 25, 'Fernando': 22, 'Pedro': 24, 'Tania': 26}" + "{'Cristiano': 25, 'Fernanda': 22, 'Mateus': 24, 'Tamires': 26}" ] }, "execution_count": 4, @@ -87,9 +83,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -103,7 +97,7 @@ } ], "source": [ - "estudantes_dict[\"Pedro\"]" + "estudantes_dict[\"Mateus\"]" ] }, { @@ -120,9 +114,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -142,9 +134,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -158,7 +148,7 @@ } ], "source": [ - "estudantes_dict[\"Tania\"]" + "estudantes_dict[\"Tamires\"]" ] }, { @@ -175,9 +165,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -208,9 +196,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "NameError", @@ -236,20 +222,18 @@ }, "outputs": [], "source": [ - "estudantes = {\"Pedro\":24, \"Fernando\":22, \"Tania\":26, \"Cris\":25}" + "estudantes = {\"Mateus\":24, \"Fernanda\":22, \"Tamires\":26, \"Cristiano\":25}" ] }, { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'Cris': 25, 'Fernando': 22, 'Pedro': 24, 'Tania': 26}" + "{'Cristiano': 25, 'Fernanda': 22, 'Mateus': 24, 'Tamires': 26}" ] }, "execution_count": 14, @@ -264,9 +248,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -286,14 +268,12 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "dict_keys(['Cris', 'Pedro', 'Tania', 'Fernando'])" + "dict_keys(['Mateus', 'Fernanda', 'Tamires', 'Cristiano'])" ] }, "execution_count": 16, @@ -308,14 +288,12 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "dict_values([25, 24, 26, 22])" + "dict_values([24, 22, 26, 25])" ] }, "execution_count": 17, @@ -330,14 +308,12 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "dict_items([('Cris', 25), ('Pedro', 24), ('Tania', 26), ('Fernando', 22)])" + "dict_items([('Mateus', 24), ('Fernanda', 22), ('Tamires', 26), ('Cristiano', 25)])" ] }, "execution_count": 18, @@ -363,9 +339,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -396,20 +370,18 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'Cris': 25,\n", + "{'Cristiano': 25,\n", " 'Erika': 28,\n", - " 'Fernando': 22,\n", + " 'Fernanda': 22,\n", " 'Maria': 27,\n", + " 'Mateus': 24,\n", " 'Milton': 26,\n", - " 'Pedro': 24,\n", - " 'Tania': 26}" + " 'Tamires': 26}" ] }, "execution_count": 22, @@ -435,9 +407,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -468,9 +438,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -498,9 +466,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -525,20 +491,18 @@ }, "outputs": [], "source": [ - "dic1[8.2] = \"Olá\"" + "dic1[8.2] = \"Python\"" ] }, { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'key_one': 2, 8.2: 'Olá', 10: 5}" + "{'key_one': 2, 10: 5, 8.2: 'Python'}" ] }, "execution_count": 30, @@ -564,14 +528,12 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'key_one': 2, 8.2: 'Olá', 10: 5, 'teste': 5}" + "{'key_one': 2, 10: 5, 8.2: 'Python', 'teste': 5}" ] }, "execution_count": 32, @@ -597,9 +559,7 @@ { "cell_type": "code", "execution_count": 34, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -641,9 +601,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -708,9 +666,7 @@ { "cell_type": "code", "execution_count": 42, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -763,9 +719,7 @@ { "cell_type": "code", "execution_count": 46, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -797,9 +751,7 @@ { "cell_type": "code", "execution_count": 48, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -819,9 +771,7 @@ { "cell_type": "code", "execution_count": 49, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -841,9 +791,7 @@ { "cell_type": "code", "execution_count": 50, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -876,9 +824,7 @@ { "cell_type": "code", "execution_count": 52, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -910,9 +856,7 @@ { "cell_type": "code", "execution_count": 54, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -951,9 +895,7 @@ { "cell_type": "code", "execution_count": 56, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -973,9 +915,7 @@ { "cell_type": "code", "execution_count": 57, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1010,9 +950,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1024,9 +964,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Tuplas.ipynb" b/Cap02/Notebooks/DSA-Python-Cap02-06-Tuplas.ipynb similarity index 91% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Tuplas.ipynb" rename to Cap02/Notebooks/DSA-Python-Cap02-06-Tuplas.ipynb index 1e4d6ff0..54c2e7ea 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Tuplas.ipynb" +++ b/Cap02/Notebooks/DSA-Python-Cap02-06-Tuplas.ipynb @@ -25,20 +25,18 @@ "outputs": [], "source": [ "# Criando uma tupla\n", - "tupla1 = (\"Matemática\", 23, \"Gatos\")" + "tupla1 = (\"Geografia\", 23, \"Elefantes\")" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "('Matemática', 23, 'Gatos')" + "('Geografia', 23, 'Elefantes')" ] }, "execution_count": 2, @@ -54,9 +52,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "AttributeError", @@ -78,9 +74,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "TypeError", @@ -114,9 +108,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -141,20 +133,18 @@ }, "outputs": [], "source": [ - "tupla1 = (\"Matemática\", 23, \"Gatos\")" + "tupla1 = (\"Geografia\", 23, \"Elefantes\")" ] }, { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Matemática'" + "'Geografia'" ] }, "execution_count": 8, @@ -169,9 +159,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -192,14 +180,12 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(23, 'Gatos')" + "(23, 'Elefantes')" ] }, "execution_count": 10, @@ -215,9 +201,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -231,15 +215,13 @@ } ], "source": [ - "tupla1.index('Gatos')" + "tupla1.index('Elefantes')" ] }, { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "TypeError", @@ -273,9 +255,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "NameError", @@ -308,9 +288,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -330,9 +308,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "TypeError", @@ -366,9 +342,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -411,9 +385,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -448,9 +420,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -462,9 +434,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap02/Notebooks/DSA-Python-Cap02-Exercicios-Solucao.ipynb b/Cap02/Notebooks/DSA-Python-Cap02-Exercicios-Solucao.ipynb new file mode 100644 index 00000000..fe10febb --- /dev/null +++ b/Cap02/Notebooks/DSA-Python-Cap02-Exercicios-Solucao.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Science Academy - Python Fundamentos - Capítulo 2\n", + "\n", + "## Download: http://github.com/dsacademybr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercícios Cap02 - Soluções" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n" + ] + } + ], + "source": [ + "# Exercício 1 - Imprima na tela os números de 1 a 10. Use uma lista para armazenar os números.\n", + "lista = [1,2,3,4,5,6,7,8,9,10]\n", + "print(lista)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chocolate', 'banana', 'abacaxi', 'uva', 'morango']\n" + ] + } + ], + "source": [ + "# Exercício 2 - Crie uma lista de 5 objetos e imprima na tela\n", + "lista = ['chocolate', 'banana', 'abacaxi', 'uva', 'morango']\n", + "print(lista)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Se beber não dirija!\n" + ] + } + ], + "source": [ + "# Exercício 3 - Crie duas strings e concatene as duas em uma terceira string\n", + "frase1 = 'Se beber '\n", + "frase2 = 'não dirija!'\n", + "frase_final = frase1 + frase2\n", + "print(frase_final)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercício 4 - Crie uma tupla com os seguintes elementos: 1, 2, 2, 3, 4, 4, 4, 5 e depois utilize a função count do \n", + "# objeto tupla para verificar quantas vezes o número 4 aparece na tupla\n", + "tup1 = (1, 2, 2, 3, 4, 4, 4, 5)\n", + "tup1.count(4)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{}\n" + ] + } + ], + "source": [ + "# Exercício 5 - Crie um dicionário vazio e imprima na tela\n", + "dict3 = {}\n", + "print(dict3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'k1': 'martelo', 'k2': 'serrote', 'k3': 'machado'}\n" + ] + } + ], + "source": [ + "# Exercício 6 - Crie um dicionário com 3 chaves e 3 valores e imprima na tela\n", + "dict = {'k1':'martelo', 'k2':'serrote', 'k3':'machado'}\n", + "print(dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'k1': 'martelo', 'k2': 'serrote', 'k3': 'machado', 'k4': 'parafuso'}\n" + ] + } + ], + "source": [ + "# Exercício 7 - Adicione mais um elemento ao dicionário criado no exercício anterior e imprima na tela\n", + "dict['k4'] = 'parafuso'\n", + "print(dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'chave1': 'Geografia', 'chave2': 'Biologia', 'chave3': [70, 90]}\n" + ] + } + ], + "source": [ + "# Exercício 8 - Crie um dicionário com 3 chaves e 3 valores. Um dos valores deve ser uma lista de 2 elementos numéricos. \n", + "# Imprima o dicionário na tela.\n", + "dict2 = {'chave1':'Geografia', 'chave2':'Biologia', 'chave3':[70, 90]}\n", + "print(dict2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['String1', (90, 92), {'k1': 'v1', 'k2': 'v2'}, 99.98]\n" + ] + } + ], + "source": [ + "# Exercício 9 - Crie uma lista de 4 elementos. O primeiro elemento deve ser uma string, \n", + "# o segundo uma tupla de 2 elementos, o terceiro um dcionário com 2 chaves e 2 valores e \n", + "# o quarto elemento um valor do tipo float.\n", + "# Imprima a lista na tela.\n", + "lst = ['String1', (90, 92), {'k1':'v1', 'k2':'v2'}, 99.98]\n", + "print(lst)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Cientista de Dados'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercício 10 - Considere a string abaixo. Imprima na tela apenas os caracteres da posição 1 a 18.\n", + "frase = 'Cientista de Dados é o profissional mais sexy do século XXI'\n", + "frase[0:18]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fim" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Obrigado - Data Science Academy - facebook.com/dsacademybr" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Exerc\303\255cios.ipynb" b/Cap02/Notebooks/DSA-Python-Cap02-Exercicios.ipynb similarity index 61% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Exerc\303\255cios.ipynb" rename to Cap02/Notebooks/DSA-Python-Cap02-Exercicios.ipynb index f4f7e176..0fa62962 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Exerc\303\255cios.ipynb" +++ b/Cap02/Notebooks/DSA-Python-Cap02-Exercicios.ipynb @@ -13,123 +13,103 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Exercícios" + "## Exercícios Cap02" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 1 - Imprima na tela os números de 1 a 10\n" + "# Exercício 1 - Imprima na tela os números de 1 a 10. Use uma lista para armazenar os números." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 2 - Crie uma lista de 5 objetos e imprima na tela\n" + "# Exercício 2 - Crie uma lista de 5 objetos e imprima na tela" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 3 - Crie duas strings e concatene as duas em uma terceira string\n" + "# Exercício 3 - Crie duas strings e concatene as duas em uma terceira string" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# Exercício 4 - Crie uma tupla com os seguintes elementos: 1, 2, 2, 3, 4, 4, 4, 5 e depois utilize a função count do \n", - "# objeto tupla para verificar quantas vezes o número 4 aparece na tupla\n" + "# objeto tupla para verificar quantas vezes o número 4 aparece na tupla" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 5 - Crie um dicionário com 3 chaves e 3 valores e imprima na tela\n" + "# Exercício 5 - Crie um dicionário vazio e imprima na tela" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 6 - Adicione mais uma ferramenta ao dicionário criado no exercício anterior e imprima na tela\n" + "# Exercício 6 - Crie um dicionário com 3 chaves e 3 valores e imprima na tela" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 7 - Crie um arquivo chamado nomes.txt no diretório onde está este notebook, grave 5 nomes no arquivo e \n", - "# feche-o.\n" + "# Exercício 7 - Adicione mais um elemento ao dicionário criado no exercício anterior e imprima na tela" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 8 - Abra o arquivo criado no item anterior e leia o arquivo na tela.\n" + "# Exercício 8 - Crie um dicionário com 3 chaves e 3 valores. Um dos valores deve ser uma lista de 2 elementos numéricos. \n", + "# Imprima o dicionário na tela." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 9 - Crie um dicionário vazio e imrpima na tela\n" + "# Exercício 9 - Crie uma lista de 4 elementos. O primeiro elemento deve ser uma string, \n", + "# o segundo uma tupla de 2 elementos, o terceiro um dcionário com 2 chaves e 2 valores e \n", + "# o quarto elemento um valor do tipo float.\n", + "# Imprima a lista na tela." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Exercício 10 - Complelete o trecho de código abaixo criado com Pandas e use a função tail() para ler os últimos \n", - "# elementos do dataset.\n", - "import pandas as pd\n", - "file_name = \"http://www.ats.ucla.edu/stat/data/binary.csv\"\n", - "df = pd.read_csv(file_name)" + "# Exercício 10 - Considere a string abaixo. Imprima na tela apenas os caracteres da posição 1 a 18.\n", + "frase = 'Cientista de Dados é o profissional mais sexy do século XXI'" ] }, { @@ -163,9 +143,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap03/Lab01/game_v2.py b/Cap03/Lab01/game_v2.py new file mode 100644 index 00000000..63f6c122 --- /dev/null +++ b/Cap03/Lab01/game_v2.py @@ -0,0 +1,208 @@ +# Game Ping-Pong + +# Imports +from tkinter import * +import random +import time + +# Variável recebendo o valor digitado pelo usuário +level = int(input("Qual nível você gostaria de jogar? 1/2/3/4/5 \n")) + +# Variável +length = 500/level + +# Instância do Objeto Tk +root = Tk() +root.title("Ping Pong") +root.resizable(0,0) +root.wm_attributes("-topmost", -1) + +# Variável recebendo o resultado da função Canvas +canvas = Canvas(root, width=800, height=600, bd=0,highlightthickness=0) +canvas.pack() +root.update() + +# Variável +count = 0 + +# Variável +lost = False + +# Classe +class Bola: + def __init__(self, canvas, Barra, color): + + # Variáveis + self.canvas = canvas + self.Barra = Barra + self.id = canvas.create_oval(0, 0, 15, 15, fill=color) + self.canvas.move(self.id, 245, 200) + + # Lista + starts_x = [-3, -2, -1, 1, 2, 3] + random.shuffle(starts_x) + + # Variáveis + self.x = starts_x[0] + self.y = -3 + self.canvas_height = self.canvas.winfo_height() + self.canvas_width = self.canvas.winfo_width() + + # Função + def draw(self): + + # Variáveis + self.canvas.move(self.id, self.x, self.y) + pos = self.canvas.coords(self.id) + + # Condicional if + if pos[1] <= 0: + + # Variável + self.y = 3 + + # Condicional if + if pos[3] >= self.canvas_height: + + # Variável + self.y = -3 + + # Condicional if + if pos[0] <= 0: + + # Variável + self.x = 3 + + # Condicional if + if pos[2] >= self.canvas_width: + + # Variável + self.x = -3 + + # Variável + self.Barra_pos = self.canvas.coords(self.Barra.id) + + # Condicional if aninhado + if pos[2] >= self.Barra_pos[0] and pos[0] <= self.Barra_pos[2]: + if pos[3] >= self.Barra_pos[1] and pos[3] <= self.Barra_pos[3]: + + # Variáveis + self.y = -3 + global count + count +=1 + + # Chamada à função + score() + + # Condicional if + if pos[3] <= self.canvas_height: + + # Variável + self.canvas.after(10, self.draw) + else: + + # Chamada à função + game_over() + + # Variáveis + global lost + lost = True + +# Classe +class Barra: + def __init__(self, canvas, color): + + # Variáveis + self.canvas = canvas + self.id = canvas.create_rectangle(0, 0, length, 10, fill=color) + self.canvas.move(self.id, 200, 400) + self.x = 0 + self.canvas_width = self.canvas.winfo_width() + self.canvas.bind_all("", self.move_left) + self.canvas.bind_all("", self.move_right) + + # Função + def draw(self): + + # Chamada ao método + self.canvas.move(self.id, self.x, 0) + + # Variável + self.pos = self.canvas.coords(self.id) + + # Condicional if + if self.pos[0] <= 0: + + # Variável + self.x = 0 + + # Condicional if + if self.pos[2] >= self.canvas_width: + + # Variável + self.x = 0 + + global lost + + # Condicional if + if lost == False: + self.canvas.after(10, self.draw) + + # Função + def move_left(self, event): + + # Condicional if + if self.pos[0] >= 0: + + # Variável + self.x = -3 + + # Função + def move_right(self, event): + + # Condicional if + if self.pos[2] <= self.canvas_width: + + # Variável + self.x = 3 + +# Função +def start_game(event): + + # Variáveis + global lost, count + lost = False + count = 0 + + # Chamada à função + score() + + # Variável que recebe o resultado da função + canvas.itemconfig(game, text=" ") + + # Métodos dos objetos + time.sleep(1) + Barra.draw() + Bola.draw() + +# Função +def score(): + canvas.itemconfig(score_now, text="Pontos: " + str(count)) + +# Função +def game_over(): + canvas.itemconfig(game, text="Game over!") + +# Instâncias dos objetos Barra e Bola +Barra = Barra(canvas, "orange") +Bola = Bola(canvas, Barra, "purple") + +# Variáveis que recebem o resultado das funções +score_now = canvas.create_text(430, 20, text="Pontos: " + str(count), fill = "green", font=("Arial", 16)) +game = canvas.create_text(400, 300, text=" ", fill="red", font=("Arial", 40)) +canvas.bind_all("", start_game) + +# Executa o programa +root.mainloop() + + diff --git a/Cap03/Lab02/calculadora_v1.py b/Cap03/Lab02/calculadora_v1.py new file mode 100644 index 00000000..097a578a --- /dev/null +++ b/Cap03/Lab02/calculadora_v1.py @@ -0,0 +1,8 @@ +# Calculadora em Python + +# Desenvolva uma calculadora em Python com tudo que você aprendeu nos capítulos 2 e 3. +# A solução será apresentada no próximo capítulo! +# Assista o vídeo com a execução do programa! + +print("\n******************* Python Calculator *******************") + diff --git "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-If-Elif-Else.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-01-If-Elif-Else.ipynb similarity index 83% rename from "JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-If-Elif-Else.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-01-If-Elif-Else.ipynb index 76b5cd27..0007b264 100644 --- "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-If-Elif-Else.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-01-If-Elif-Else.ipynb @@ -19,9 +19,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -34,16 +32,13 @@ "source": [ "# Condicional If\n", "if 5 > 2:\n", - " print(\"Python funciona!\")\n", - " " + " print(\"Python funciona!\")" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -64,9 +59,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -86,9 +79,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -108,9 +99,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -130,9 +119,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -152,9 +139,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -172,9 +157,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -192,9 +175,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "SyntaxError", @@ -211,19 +192,37 @@ " print(\"Tudo funciona!\")" ] }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "ename": "IndentationError", + "evalue": "expected an indented block (, line 3)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m3\u001b[0m\n\u001b[0;31m print(\"Tudo funciona!\")\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m expected an indented block\n" + ] + } + ], + "source": [ + "# Atenção com a sintaxe\n", + "if 4 > 3:\n", + "print(\"Tudo funciona!\")" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Condicionais aninhados" + "### Condicionais Aninhados" ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -241,10 +240,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -265,10 +262,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -287,10 +282,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -316,10 +309,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -339,10 +330,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -370,10 +359,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -392,10 +379,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -413,17 +398,15 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Digite o nome da disciplina: Matemática\n", - "Digite a nota final (entre 0 e 100): 90\n", + "Digite o nome da disciplina: Geografia\n", + "Digite a nota final (entre 0 e 100): 76\n", "Você foi aprovado!\n" ] } @@ -434,7 +417,7 @@ "disciplina = input('Digite o nome da disciplina: ')\n", "nota_final = input('Digite a nota final (entre 0 e 100): ')\n", "\n", - "if disciplina == 'Matemática' and nota_final >= '50':\n", + "if disciplina == 'Geografia' and nota_final >= '70':\n", " print('Você foi aprovado!')\n", "else:\n", " print('Lamento, acho que você precisa estudar mais!')" @@ -442,19 +425,17 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Digite o nome da disciplina: Matemática\n", - "Digite a nota final (entre 0 e 100): 90\n", - "Digite o semestre (1 a 4): 3\n", - "Você foi aprovado em Matemática com média final '90'!\n" + "Digite o nome da disciplina: Geografia\n", + "Digite a nota final (entre 0 e 100): 87\n", + "Digite o semestre (1 a 4): 2\n", + "Você foi aprovado em Geografia com média final '87'!\n" ] } ], @@ -465,7 +446,7 @@ "nota_final = input('Digite a nota final (entre 0 e 100): ')\n", "semestre = input('Digite o semestre (1 a 4): ')\n", "\n", - "if disciplina == 'Matemática' and nota_final >= '50' and int(semestre) != 1:\n", + "if disciplina == 'Geografia' and nota_final >= '50' and int(semestre) != 1:\n", " print('Você foi aprovado em %s com média final %r!' %(disciplina, nota_final))\n", "else:\n", " print('Lamento, acho que você precisa estudar mais!')" @@ -475,7 +456,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### --> Fique atento aos espaços entre a margem e cada um dos seus comandos. Falaremos mais sobre indentação ao longo do curso." + "### --> Fique atento aos espaços entre a margem e cada um dos seus comandos. Falaremos mais sobre indentação ao longo do curso. A indentação faz parte da sintaxe da linguagem Python." ] }, { @@ -509,9 +490,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-For.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-02-For.ipynb similarity index 91% rename from "JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-For.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-02-For.ipynb index 5e410751..6a68cfd3 100644 --- "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-For.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-02-For.ipynb @@ -20,9 +20,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -36,17 +34,15 @@ ], "source": [ "# Criando uma tupla e imprimindo cada um dos valores\n", - "tupla = (2,3,4)\n", - "for i in tupla:\n", + "tp = (2,3,4)\n", + "for i in tp:\n", " print(i)" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -68,9 +64,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -93,9 +87,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -120,9 +112,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -191,9 +181,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -266,9 +254,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -311,10 +297,8 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -338,9 +322,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -362,9 +344,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -387,9 +367,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -413,9 +391,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -438,9 +414,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -462,9 +436,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -513,9 +485,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-While.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-03-While.ipynb similarity index 94% rename from "JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-While.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-03-While.ipynb index 5e1ae173..b6b635b6 100644 --- "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-While.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-03-While.ipynb @@ -19,9 +19,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -51,9 +49,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -106,9 +102,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -135,9 +129,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -168,9 +160,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -199,6 +189,7 @@ " j = j + 1\n", " else:\n", " j = j + 1\n", + " \n", " if counter == 0:\n", " print(str(i) + \" é um número primo\")\n", " counter = 0\n", @@ -237,9 +228,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Range.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-04-Range.ipynb similarity index 89% rename from "JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Range.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-04-Range.ipynb index b97fd3c9..79104d2e 100644 --- "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Range.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-04-Range.ipynb @@ -19,9 +19,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -65,9 +63,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -87,9 +83,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -116,9 +110,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -126,13 +118,13 @@ "text": [ "Morango\n", "Banana\n", - "Maça\n", + "Abacaxi\n", "Uva\n" ] } ], "source": [ - "lista = ['Morango', 'Banana', 'Maça', 'Uva']\n", + "lista = ['Morango', 'Banana', 'Abacaxi', 'Uva']\n", "lista_tamanho = len(lista)\n", "for i in range(0, lista_tamanho):\n", " print(lista[i])" @@ -141,9 +133,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -192,9 +182,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-M\303\251todos.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-05-Metodos.ipynb similarity index 93% rename from "JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-M\303\251todos.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-05-Metodos.ipynb index 25628b2f..8b6f0445 100644 --- "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-M\303\251todos.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-05-Metodos.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 4\n", + "# Data Science Academy - Python Fundamentos - Capítulo 3\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -43,9 +43,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -66,9 +64,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -89,9 +85,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -113,9 +107,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -137,6 +129,7 @@ " '__iadd__',\n", " '__imul__',\n", " '__init__',\n", + " '__init_subclass__',\n", " '__iter__',\n", " '__le__',\n", " '__len__',\n", @@ -191,9 +184,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -239,9 +230,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Fun\303\247\303\265es.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-06-Funcoes.ipynb similarity index 72% rename from "JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Fun\303\247\303\265es.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-06-Funcoes.ipynb index b7b8cd38..db73984a 100644 --- "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Fun\303\247\303\265es.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-06-Funcoes.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 4\n", + "# Data Science Academy - Python Fundamentos - Capítulo 3\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -26,21 +26,19 @@ "source": [ "# Definindo uma função\n", "def primeiraFunc():\n", - " print ('Olá')" + " print('Hello World')" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Olá\n" + "Hello World\n" ] } ], @@ -58,21 +56,19 @@ "source": [ "# Definindo uma função com parâmetro\n", "def primeiraFunc(nome):\n", - " print ('Olá %s' %(nome))" + " print('Hello %s' %(nome))" ] }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Olá Aluno\n" + "Hello Aluno\n" ] } ], @@ -96,9 +92,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -119,30 +113,28 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Função para somar números\n", "def addNum(firstnum, secondnum):\n", " print(\"Primeiro número: \" + str(firstnum))\n", - " print(\"Segundo número: \" + str(secondnum))" + " print(\"Segundo número: \" + str(secondnum))\n", + " print(\"Soma: \", firstnum + secondnum)" ] }, { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Primeiro número: 45\n", - "Segundo número: 3\n" + "Segundo número: 3\n", + "Soma: 48\n" ] } ], @@ -162,12 +154,13 @@ "cell_type": "code", "execution_count": 9, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Variável Global\n", "var_global = 10 # Esta é uma variável global\n", + "\n", "def multiply(num1, num2):\n", " var_global = num1 * num2 # Esta é uma variável local\n", " print(var_global)" @@ -176,28 +169,24 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "230\n" + "125\n" ] } ], "source": [ - "multiply(10, 23)" + "multiply(5, 25)" ] }, { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -215,42 +204,38 @@ "cell_type": "code", "execution_count": 12, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Variável Local\n", - "var_global = 10\n", + "var_global = 10 # Esta é uma variável global\n", "def multiply(num1, num2):\n", - " var_local = num1 * num2\n", + " var_local = num1 * num2 # Esta é uma variável local\n", " print(var_local)" ] }, { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "230\n" + "125\n" ] } ], "source": [ - "multiply(10, 23)" + "multiply(5, 25)" ] }, { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "NameError", @@ -278,9 +263,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -300,9 +283,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -322,9 +303,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -344,9 +323,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -363,192 +340,6 @@ "bool(1)" ] }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Criando um string\n", - "Frase = \"Eu estou aprendendo Python\"" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "str" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Tipo de variável Frase\n", - "type(Frase)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['__add__',\n", - " '__class__',\n", - " '__contains__',\n", - " '__delattr__',\n", - " '__dir__',\n", - " '__doc__',\n", - " '__eq__',\n", - " '__format__',\n", - " '__ge__',\n", - " '__getattribute__',\n", - " '__getitem__',\n", - " '__getnewargs__',\n", - " '__gt__',\n", - " '__hash__',\n", - " '__init__',\n", - " '__iter__',\n", - " '__le__',\n", - " '__len__',\n", - " '__lt__',\n", - " '__mod__',\n", - " '__mul__',\n", - " '__ne__',\n", - " '__new__',\n", - " '__reduce__',\n", - " '__reduce_ex__',\n", - " '__repr__',\n", - " '__rmod__',\n", - " '__rmul__',\n", - " '__setattr__',\n", - " '__sizeof__',\n", - " '__str__',\n", - " '__subclasshook__',\n", - " 'capitalize',\n", - " 'casefold',\n", - " 'center',\n", - " 'count',\n", - " 'encode',\n", - " 'endswith',\n", - " 'expandtabs',\n", - " 'find',\n", - " 'format',\n", - " 'format_map',\n", - " 'index',\n", - " 'isalnum',\n", - " 'isalpha',\n", - " 'isdecimal',\n", - " 'isdigit',\n", - " 'isidentifier',\n", - " 'islower',\n", - " 'isnumeric',\n", - " 'isprintable',\n", - " 'isspace',\n", - " 'istitle',\n", - " 'isupper',\n", - " 'join',\n", - " 'ljust',\n", - " 'lower',\n", - " 'lstrip',\n", - " 'maketrans',\n", - " 'partition',\n", - " 'replace',\n", - " 'rfind',\n", - " 'rindex',\n", - " 'rjust',\n", - " 'rpartition',\n", - " 'rsplit',\n", - " 'rstrip',\n", - " 'split',\n", - " 'splitlines',\n", - " 'startswith',\n", - " 'strip',\n", - " 'swapcase',\n", - " 'title',\n", - " 'translate',\n", - " 'upper',\n", - " 'zfill']" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Função dir() retorna o que funções podem ser usadas com um determinado objeto\n", - "dir(Frase)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on built-in function upper:\n", - "\n", - "upper(...) method of builtins.str instance\n", - " S.upper() -> str\n", - " \n", - " Return a copy of S converted to uppercase.\n", - "\n" - ] - } - ], - "source": [ - "# Função help() mostra para que serve o método que pode ser usado com o objeto\n", - "help(Frase.upper)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on built-in function replace:\n", - "\n", - "replace(...) method of builtins.str instance\n", - " S.replace(old, new[, count]) -> str\n", - " \n", - " Return a copy of S with all occurrences of substring\n", - " old replaced by new. If the optional argument count is\n", - " given, only the first count occurrences are replaced.\n", - "\n" - ] - } - ], - "source": [ - "help(Frase.replace)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -558,10 +349,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -572,13 +361,13 @@ }, { "ename": "TypeError", - "evalue": "unorderable types: str() > int()", + "evalue": "'>' not supported between instances of 'str' and 'int'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Erro ao executar por causa da conversão\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0midade\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Digite sua idade: \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0midade\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m13\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Você pode acessar o Facebook\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: unorderable types: str() > int()" + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Erro ao executar por causa da conversão\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0midade\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Digite sua idade: \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0midade\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m13\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Você pode acessar o Facebook\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: '>' not supported between instances of 'str' and 'int'" ] } ], @@ -591,10 +380,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -614,10 +401,8 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -625,7 +410,7 @@ "26" ] }, - "execution_count": 26, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -636,10 +421,8 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, + "execution_count": 22, + "metadata": {}, "outputs": [ { "data": { @@ -647,7 +430,7 @@ "123.345" ] }, - "execution_count": 27, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -658,10 +441,8 @@ }, { "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, + "execution_count": 23, + "metadata": {}, "outputs": [ { "data": { @@ -669,7 +450,7 @@ "'14'" ] }, - "execution_count": 28, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -680,10 +461,8 @@ }, { "cell_type": "code", - "execution_count": 29, - "metadata": { - "collapsed": false - }, + "execution_count": 24, + "metadata": {}, "outputs": [ { "data": { @@ -691,7 +470,7 @@ "4" ] }, - "execution_count": 29, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -702,7 +481,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 25, "metadata": { "collapsed": true }, @@ -713,10 +492,8 @@ }, { "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, + "execution_count": 26, + "metadata": {}, "outputs": [ { "data": { @@ -724,7 +501,7 @@ "'c'" ] }, - "execution_count": 31, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -735,10 +512,8 @@ }, { "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, + "execution_count": 27, + "metadata": {}, "outputs": [ { "data": { @@ -746,7 +521,7 @@ "'a'" ] }, - "execution_count": 32, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -757,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -768,10 +543,8 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -779,7 +552,7 @@ "['a', 'b', 'c', 'd', 'A', 'B', 'C', 'D']" ] }, - "execution_count": 34, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -790,10 +563,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, + "execution_count": 30, + "metadata": {}, "outputs": [ { "data": { @@ -801,7 +572,7 @@ "'d'" ] }, - "execution_count": 35, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -812,10 +583,8 @@ }, { "cell_type": "code", - "execution_count": 36, - "metadata": { - "collapsed": false - }, + "execution_count": 31, + "metadata": {}, "outputs": [ { "data": { @@ -823,7 +592,7 @@ "'A'" ] }, - "execution_count": 36, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -834,7 +603,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 32, "metadata": { "collapsed": true }, @@ -845,10 +614,8 @@ }, { "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": false - }, + "execution_count": 33, + "metadata": {}, "outputs": [ { "data": { @@ -856,7 +623,7 @@ "125" ] }, - "execution_count": 38, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -874,7 +641,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 34, "metadata": { "collapsed": true }, @@ -897,10 +664,8 @@ }, { "cell_type": "code", - "execution_count": 40, - "metadata": { - "collapsed": false - }, + "execution_count": 35, + "metadata": {}, "outputs": [ { "data": { @@ -908,7 +673,7 @@ "'Este número é primo'" ] }, - "execution_count": 40, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -926,7 +691,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -939,7 +704,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 37, "metadata": { "collapsed": true }, @@ -950,10 +715,8 @@ }, { "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": false - }, + "execution_count": 38, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -970,7 +733,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 39, "metadata": { "collapsed": true }, @@ -982,10 +745,8 @@ }, { "cell_type": "code", - "execution_count": 45, - "metadata": { - "collapsed": false - }, + "execution_count": 40, + "metadata": {}, "outputs": [ { "data": { @@ -1003,7 +764,7 @@ " 'dados.']" ] }, - "execution_count": 45, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1014,7 +775,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 41, "metadata": { "collapsed": true }, @@ -1025,7 +786,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 42, "metadata": { "collapsed": true }, @@ -1037,7 +798,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -1048,10 +809,8 @@ }, { "cell_type": "code", - "execution_count": 49, - "metadata": { - "collapsed": false - }, + "execution_count": 44, + "metadata": {}, "outputs": [ { "data": { @@ -1059,7 +818,7 @@ "'este texto deveria estar todo em lowercase'" ] }, - "execution_count": 49, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1070,7 +829,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 45, "metadata": { "collapsed": true }, @@ -1089,10 +848,8 @@ }, { "cell_type": "code", - "execution_count": 51, - "metadata": { - "collapsed": false - }, + "execution_count": 46, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1104,15 +861,13 @@ ], "source": [ "# Fazendo chamada à função usando apenas 1 argumento\n", - "printVarInfo(10)\n" + "printVarInfo(10)" ] }, { "cell_type": "code", - "execution_count": 52, - "metadata": { - "collapsed": false - }, + "execution_count": 47, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1159,9 +914,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Lambda.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-07-Lambda.ipynb similarity index 87% rename from "JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Lambda.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-07-Lambda.ipynb index 42703f5a..84a24831 100644 --- "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Lambda.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-07-Lambda.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -68,9 +66,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -91,7 +87,7 @@ "cell_type": "code", "execution_count": 5, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -102,9 +98,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -124,29 +118,36 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, + "outputs": [], + "source": [ + "# Definindo uma expressão lambda\n", + "potencia = lambda num: num**2" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - ">" + "25" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Definindo uma expressão lambda\n", - "lambda num: num**2" + "potencia(5)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": true }, @@ -158,10 +159,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -169,7 +168,7 @@ "False" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -180,10 +179,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -191,7 +188,7 @@ "True" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -202,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": true }, @@ -213,10 +210,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { @@ -224,7 +219,7 @@ "'P'" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -235,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "collapsed": true }, @@ -246,10 +241,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { @@ -257,7 +250,7 @@ "'nohtyP'" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -268,7 +261,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "collapsed": true }, @@ -279,10 +272,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { @@ -290,7 +281,7 @@ "5" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -330,9 +321,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Funcoes-Solucao.ipynb b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Funcoes-Solucao.ipynb new file mode 100644 index 00000000..3177df81 --- /dev/null +++ b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Funcoes-Solucao.ipynb @@ -0,0 +1,627 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Science Academy - Python Fundamentos - Capítulo 3\n", + "\n", + "## Download: http://github.com/dsacademybr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercícios - Métodos e Funções" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "4\n", + "6\n", + "8\n", + "10\n", + "12\n", + "14\n", + "16\n", + "18\n", + "20\n" + ] + } + ], + "source": [ + "# Exercício 1 - Crie uma função que imprima a sequência de números pares entre 1 e 20 (a função não recebe parâmetro) e \n", + "# depois faça uma chamada à função para listar os números\n", + "def listaPar():\n", + " for i in range(2, 21, 2): \n", + " print(i)\n", + " \n", + "listaPar() " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RUMO À ANÁLISE DE DADOS\n" + ] + } + ], + "source": [ + "# Exercício 2 - Crie uam função que receba uma string como argumento e retorne a mesma string em letras maiúsculas.\n", + "# Faça uma chamada à função, passando como parâmetro uma string\n", + "def listaString(texto):\n", + " print(texto.upper())\n", + " return\n", + "\n", + "listaString('Rumo à Análise de Dados')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n", + "None\n", + "[1, 2, 3, 4, 5, 6]\n" + ] + } + ], + "source": [ + "# Exercício 3 - Crie uma função que receba como parâmetro uma lista de 4 elementos, adicione 2 elementos a lista e \n", + "# imprima a lista\n", + "def novaLista(lista):\n", + " print(lista.append(5))\n", + " print(lista.append(6))\n", + " \n", + "lista1 = [1, 2, 3, 4] \n", + "novaLista(lista1)\n", + "print(lista1)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100\n", + "A\n", + "B\n", + "C\n" + ] + } + ], + "source": [ + "# Exercício 4 - Crie uma função que receba um argumento formal e uma possível lista de elementos. Faça duas chamadas \n", + "# à função, com apenas 1 elemento e na segunda chamada com 4 elementos\n", + "def printNum( arg1, *lista ):\n", + " print (arg1)\n", + " for i in lista:\n", + " print (i)\n", + " return;\n", + "\n", + "# Chamada à função\n", + "printNum( 100 )\n", + "printNum( 'A', 'B', 'C' )" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A soma é : 750\n" + ] + } + ], + "source": [ + "# Exercício 5 - Crie uma função anônima e atribua seu retorno a uma variável chamada soma. A expressão vai receber 2 \n", + "# números como parâmetro e retornar a soma deles\n", + "soma = lambda arg1, arg2: arg1 + arg2\n", + "print (\"A soma é : \", soma( 452, 298 ))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dentro da função o total é: 30\n", + "Fora da função o total é: 0\n" + ] + } + ], + "source": [ + "# Exercício 6 - Execute o código abaixo e certifique-se que compreende a diferença entre variável global e local\n", + "\n", + "total = 0\n", + "def soma( arg1, arg2 ):\n", + " total = arg1 + arg2; \n", + " print (\"Dentro da função o total é: \", total)\n", + " return total;\n", + "\n", + "\n", + "soma( 10, 20 );\n", + "print (\"Fora da função o total é: \", total)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[102.56, 97.7, 99.14, 100.03999999999999]\n" + ] + } + ], + "source": [ + "# Exercício 7 - Abaixo você encontra uma lista com temperaturas em graus Celsius\n", + "# Crie uma função anônima que converta cada temperatura para Fahrenheit\n", + "# Dica: para conseguir realizar este exercício, você deve criar sua função lambda, dentro de uma função \n", + "# (que será estudada no próximo capítulo). Isso permite aplicar sua função a cada elemento da lista\n", + "# Como descobrir a fórmula matemática que converte de Celsius para Fahrenheit? Pesquise!!!\n", + "Celsius = [39.2, 36.5, 37.3, 37.8]\n", + "Fahrenheit = map(lambda x: (float(9)/5)*x + 32, Celsius)\n", + "print (list(Fahrenheit))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__contains__',\n", + " '__delattr__',\n", + " '__delitem__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__getitem__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__iter__',\n", + " '__le__',\n", + " '__len__',\n", + " '__lt__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__setitem__',\n", + " '__sizeof__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " 'clear',\n", + " 'copy',\n", + " 'fromkeys',\n", + " 'get',\n", + " 'items',\n", + " 'keys',\n", + " 'pop',\n", + " 'popitem',\n", + " 'setdefault',\n", + " 'update',\n", + " 'values']" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercício 8\n", + "# Crie um dicionário e liste todos os métodos e atributos do dicionário\n", + "dic = {'k1': 'Natal', 'k2': 'Recife'}\n", + "dir(dic)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Categorical',\n", + " 'CategoricalIndex',\n", + " 'DataFrame',\n", + " 'DateOffset',\n", + " 'DatetimeIndex',\n", + " 'ExcelFile',\n", + " 'ExcelWriter',\n", + " 'Expr',\n", + " 'Float64Index',\n", + " 'Grouper',\n", + " 'HDFStore',\n", + " 'Index',\n", + " 'IndexSlice',\n", + " 'Int64Index',\n", + " 'Interval',\n", + " 'IntervalIndex',\n", + " 'MultiIndex',\n", + " 'NaT',\n", + " 'Panel',\n", + " 'Panel4D',\n", + " 'Period',\n", + " 'PeriodIndex',\n", + " 'RangeIndex',\n", + " 'Series',\n", + " 'SparseArray',\n", + " 'SparseDataFrame',\n", + " 'SparseList',\n", + " 'SparseSeries',\n", + " 'Term',\n", + " 'TimeGrouper',\n", + " 'Timedelta',\n", + " 'TimedeltaIndex',\n", + " 'Timestamp',\n", + " 'UInt64Index',\n", + " 'WidePanel',\n", + " '_DeprecatedModule',\n", + " '__builtins__',\n", + " '__cached__',\n", + " '__doc__',\n", + " '__docformat__',\n", + " '__file__',\n", + " '__loader__',\n", + " '__name__',\n", + " '__package__',\n", + " '__path__',\n", + " '__spec__',\n", + " '__version__',\n", + " '_hashtable',\n", + " '_lib',\n", + " '_libs',\n", + " '_np_version_under1p10',\n", + " '_np_version_under1p11',\n", + " '_np_version_under1p12',\n", + " '_np_version_under1p13',\n", + " '_np_version_under1p14',\n", + " '_np_version_under1p8',\n", + " '_np_version_under1p9',\n", + " '_tslib',\n", + " '_version',\n", + " 'api',\n", + " 'bdate_range',\n", + " 'compat',\n", + " 'concat',\n", + " 'core',\n", + " 'crosstab',\n", + " 'cut',\n", + " 'date_range',\n", + " 'datetime',\n", + " 'datetools',\n", + " 'describe_option',\n", + " 'errors',\n", + " 'eval',\n", + " 'ewma',\n", + " 'ewmcorr',\n", + " 'ewmcov',\n", + " 'ewmstd',\n", + " 'ewmvar',\n", + " 'ewmvol',\n", + " 'expanding_apply',\n", + " 'expanding_corr',\n", + " 'expanding_count',\n", + " 'expanding_cov',\n", + " 'expanding_kurt',\n", + " 'expanding_max',\n", + " 'expanding_mean',\n", + " 'expanding_median',\n", + " 'expanding_min',\n", + " 'expanding_quantile',\n", + " 'expanding_skew',\n", + " 'expanding_std',\n", + " 'expanding_sum',\n", + " 'expanding_var',\n", + " 'factorize',\n", + " 'get_dummies',\n", + " 'get_option',\n", + " 'get_store',\n", + " 'groupby',\n", + " 'infer_freq',\n", + " 'interval_range',\n", + " 'io',\n", + " 'isnull',\n", + " 'json',\n", + " 'lib',\n", + " 'lreshape',\n", + " 'match',\n", + " 'melt',\n", + " 'merge',\n", + " 'merge_asof',\n", + " 'merge_ordered',\n", + " 'notnull',\n", + " 'np',\n", + " 'offsets',\n", + " 'option_context',\n", + " 'options',\n", + " 'ordered_merge',\n", + " 'pandas',\n", + " 'parser',\n", + " 'period_range',\n", + " 'pivot',\n", + " 'pivot_table',\n", + " 'plot_params',\n", + " 'plotting',\n", + " 'pnow',\n", + " 'qcut',\n", + " 'read_clipboard',\n", + " 'read_csv',\n", + " 'read_excel',\n", + " 'read_feather',\n", + " 'read_fwf',\n", + " 'read_gbq',\n", + " 'read_hdf',\n", + " 'read_html',\n", + " 'read_json',\n", + " 'read_msgpack',\n", + " 'read_pickle',\n", + " 'read_sas',\n", + " 'read_sql',\n", + " 'read_sql_query',\n", + " 'read_sql_table',\n", + " 'read_stata',\n", + " 'read_table',\n", + " 'reset_option',\n", + " 'rolling_apply',\n", + " 'rolling_corr',\n", + " 'rolling_count',\n", + " 'rolling_cov',\n", + " 'rolling_kurt',\n", + " 'rolling_max',\n", + " 'rolling_mean',\n", + " 'rolling_median',\n", + " 'rolling_min',\n", + " 'rolling_quantile',\n", + " 'rolling_skew',\n", + " 'rolling_std',\n", + " 'rolling_sum',\n", + " 'rolling_var',\n", + " 'rolling_window',\n", + " 'scatter_matrix',\n", + " 'set_eng_float_format',\n", + " 'set_option',\n", + " 'show_versions',\n", + " 'stats',\n", + " 'test',\n", + " 'testing',\n", + " 'timedelta_range',\n", + " 'to_datetime',\n", + " 'to_msgpack',\n", + " 'to_numeric',\n", + " 'to_pickle',\n", + " 'to_timedelta',\n", + " 'tools',\n", + " 'tseries',\n", + " 'tslib',\n", + " 'unique',\n", + " 'util',\n", + " 'value_counts',\n", + " 'wide_to_long']" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercício 9\n", + "# Abaixo você encontra a importação do Pandas, um dos principais pacotes Python para análise de dados.\n", + "# Analise atentamente todos os métodos disponíveis. Um deles você vai usar no próximo exercício.\n", + "import pandas as pd\n", + "dir(pd)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\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", + "
admitgregparank
count5.0000005.0000005.0000005.000000
mean0.600000616.0000003.4800003.000000
std0.547723185.1485890.4213071.224745
min0.000000380.0000002.9300001.000000
25%0.000000520.0000003.1900003.000000
50%1.000000640.0000003.6100003.000000
75%1.000000660.0000003.6700004.000000
max1.000000880.0000004.0000004.000000
\n", + "
" + ], + "text/plain": [ + " admit gre gpa rank\n", + "count 5.000000 5.000000 5.000000 5.000000\n", + "mean 0.600000 616.000000 3.480000 3.000000\n", + "std 0.547723 185.148589 0.421307 1.224745\n", + "min 0.000000 380.000000 2.930000 1.000000\n", + "25% 0.000000 520.000000 3.190000 3.000000\n", + "50% 1.000000 640.000000 3.610000 3.000000\n", + "75% 1.000000 660.000000 3.670000 4.000000\n", + "max 1.000000 880.000000 4.000000 4.000000" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ************* Desafio ************* (pesquise na documentação Python)\n", + "\n", + "# Exercício 10 - Crie uma função que receba o arquivo abaixo como argumento e retorne um resumo estatístico descritivo \n", + "# do arquivo. Dica, use Pandas e um de seus métodos, describe()\n", + "# Arquivo: \"binary.csv\"\n", + "import pandas as pd\n", + "file_name = \"binary.csv\"\n", + "\n", + "def retornaArq(file_name):\n", + " df = pd.read_csv(file_name)\n", + " return df.describe()\n", + " \n", + "retornaArq(file_name) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fim" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Obrigado - Data Science Academy - facebook.com/dsacademybr" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Exerc\303\255cios.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Funcoes.ipynb similarity index 52% rename from "JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Exerc\303\255cios.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Funcoes.ipynb index 68a63dec..2c45f023 100644 --- "a/JupyterNotebooks/Cap\303\255tulo04/DSA-Python-Cap\303\255tulo4-Exerc\303\255cios.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Funcoes.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 4\n", + "# Data Science Academy - Python Fundamentos - Capítulo 3\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -13,92 +13,149 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Exercícios" + "## Exercícios - Métodos e Funções" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 1 - Crie uma função que imprima a sequência de números pares entre 1 e 20 (a função não recebe parâmetro) e \n", - "# depois faça uma chamada à função para listar os números\n", - " " + "# depois faça uma chamada à função para listar os números " ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 2 - Crie uam função que receba uma string como argumento e retorne a mesma string em letras maiúsculas.\n", - "# Faça uma chamada à função, passando como parâmetro uma string\n" + "# Faça uma chamada à função, passando como parâmetro uma string" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 3 - Crie uma função que receba como parâmetro uma lista de 4 elementos, adicione 2 elementos a lista e \n", - "# imprima a lista\n" + "# imprima a lista" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 4 - Crie uma função que receba um argumento formal e uma possível lista de elementos. Faça duas chamadas \n", - "# à função, com apenas 1 elemento e na segunda chamada com 4 elementos\n" + "# à função, com apenas 1 elemento e na segunda chamada com 4 elementos" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 5 - Crie uma função anônima e atribua seu retorno a uma variável chamada soma. A expressão vai receber 2 \n", - "# números como parâmetro e retornar a soma deles\n" + "# números como parâmetro e retornar a soma deles" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "# Exercício 6 - Execute o código abaixo e certifique-se que compreende a diferença entre variável global e local\n" + "# Exercício 6 - Execute o código abaixo e certifique-se que compreende a diferença entre variável global e local\n", + "total = 0\n", + "def soma( arg1, arg2 ):\n", + " total = arg1 + arg2; \n", + " print (\"Dentro da função o total é: \", total)\n", + " return total;\n", + "\n", + "\n", + "soma( 10, 20 );\n", + "print (\"Fora da função o total é: \", total)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Exercício 7 - Abaixo você encontra uma lista com temperaturas em graus Celsius\n", + "# Crie uma função anônima que converta cada temperatura para Fahrenheit\n", + "# Dica: para conseguir realizar este exercício, você deve criar sua função lambda, dentro de uma função \n", + "# (que será estudada no próximo capítulo). Isso permite aplicar sua função a cada elemento da lista\n", + "# Como descobrir a fórmula matemática que converte de Celsius para Fahrenheit? Pesquise!!!\n", + "Celsius = [39.2, 36.5, 37.3, 37.8]\n", + "Fahrenheit = map(coloque_aqui_sua_função_lambda)\n", + "print (list(Fahrenheit))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Exercício 8\n", + "# Crie um dicionário e liste todos os métodos e atributos do dicionário" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "# Exercício 7 - Crie uma função que receba o arquivo abaixo como argumento e retorne um resumo estatístico descritivo \n", + "# Exercício 9\n", + "# Abaixo você encontra a importação do Pandas, um dos principais pacotes Python para análise de dados.\n", + "# Analise atentamente todos os métodos disponíveis. Um deles você vai usar no próximo exercício.\n", + "import pandas as pd\n", + "dir(pd)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# ************* Desafio ************* (pesquise na documentação Python)\n", + "\n", + "# Exercício 10 - Crie uma função que receba o arquivo abaixo como argumento e retorne um resumo estatístico descritivo \n", "# do arquivo. Dica, use Pandas e um de seus métodos, describe()\n", - "# Arquivo: \"http://www.ats.ucla.edu/stat/data/binary.csv\"\n", + "# Arquivo: \"binary.csv\"\n", + "import pandas as pd\n", + "file_name = \"binary.csv\"\n", " " ] }, @@ -133,9 +190,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Exerc\303\255cios-Solu\303\247\303\243o.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Loops-Condiconais-Solucao.ipynb similarity index 88% rename from "JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Exerc\303\255cios-Solu\303\247\303\243o.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Loops-Condiconais-Solucao.ipynb index 4265233e..5a2b5885 100644 --- "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Exerc\303\255cios-Solu\303\247\303\243o.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Loops-Condiconais-Solucao.ipynb @@ -13,22 +13,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Exercícios" + "## Exercícios - Loops e Condiconais - Solução" ] }, { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Digite o dia da semana: Sábado\n", - "Hoje é dia de descanso\n" + "Digite o dia da semana: segunda\n", + "Você precisa trabalhar!\n" ] } ], @@ -45,9 +43,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -68,9 +64,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -94,9 +88,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -140,9 +132,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -168,9 +158,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -205,20 +193,18 @@ "source": [ "# Exercício 6 - Crie uma variável chamada contador = 0. Enquanto counter for menor que 100, imprima os valores na tela,\n", "# mas quando for encontrado o valor 23, interrompa a execução do programa\n", - "counter = 0\n", - "while counter < 100:\n", - " if counter == 23:\n", + "contador = 0\n", + "while contador < 100:\n", + " if contador == 23:\n", " break\n", - " print(counter)\n", - " counter += 1" + " print(contador)\n", + " contador += 1" ] }, { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -242,9 +228,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -263,9 +247,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -288,20 +270,18 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "O caracter a aparece 9 vezes na frase.\n" + "O caracter r aparece 6 vezes na frase.\n" ] } ], "source": [ - "# Exercício 10 - Faça um programa que conte quantas vezes a letra \"a\" aparece na frase abaixo. Use um placeholder na \n", + "# Exercício 10 - Faça um programa que conte quantas vezes a letra \"r\" aparece na frase abaixo. Use um placeholder na \n", "# sua instrução de impressão\n", "\n", "# “É melhor, muito melhor, contentar-se com a realidade; se ela não é tão brilhante como os sonhos, tem pelo menos a \n", @@ -310,9 +290,9 @@ "frase = \"É melhor, muito melhor, contentar-se com a realidade; se ela não é tão brilhante como os sonhos, tem pelo menos a vantagem de existir.\" \n", "count = 0\n", "for caracter in frase:\n", - " if caracter == 'a':\n", + " if caracter == 'r':\n", " count += 1\n", - "print(\"O caracter a aparece %s vezes na frase.\" %(count))" + "print(\"O caracter r aparece %s vezes na frase.\" %(count))" ] }, { @@ -346,9 +326,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Exerc\303\255cios.ipynb" b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Loops-Condiconais.ipynb similarity index 79% rename from "JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Exerc\303\255cios.ipynb" rename to Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Loops-Condiconais.ipynb index bf185807..aa7d8146 100644 --- "a/JupyterNotebooks/Cap\303\255tulo03/DSA-Python-Cap\303\255tulo3-Exerc\303\255cios.ipynb" +++ b/Cap03/Notebooks/DSA-Python-Cap03-Exercicios-Loops-Condiconais.ipynb @@ -13,132 +13,132 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Exercícios" + "## Exercícios - Loops e Condiconais" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 1 - Crie uma estrutura que pergunte ao usuário qual o dia da semana. Se o dia for igual a Domingo ou \n", - "# igual a sábado, imprima na tela \"Hoje é dia de descanso\", caso contrário imprima na tela \"Você precisa trabalhar!\"\n" + "# igual a sábado, imprima na tela \"Hoje é dia de descanso\", caso contrário imprima na tela \"Você precisa trabalhar!\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "# Exercício 2 - Crie uma lista de 5 frutas e verifique se a fruta 'Morango' faz parte da lista\n" + "# Exercício 2 - Crie uma lista de 5 frutas e verifique se a fruta 'Morango' faz parte da lista" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 3 - Crie uma tupla de 4 elementos, multiplique cada elemento da tupla por 2 e guarde os resultados em uma \n", - "# lista\n" + "# lista" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "# Exercício 4 - Crie uma sequência de números pares entre 100 e 150 e imprima na tela\n" + "# Exercício 4 - Crie uma sequência de números pares entre 100 e 150 e imprima na tela" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 5 - Crie uma variável chamada temperatura e atribua o valor 40. Enquanto temperatura for maior que 35, \n", - "# imprima as temperaturas na tela\n" + "# imprima as temperaturas na tela" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 6 - Crie uma variável chamada contador = 0. Enquanto counter for menor que 100, imprima os valores na tela,\n", - "# mas quando for encontrado o valor 23, interrompa a execução do programa\n" + "# mas quando for encontrado o valor 23, interrompa a execução do programa" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 7 - Crie uma lista vazia e uma variável com valor 4. Enquanto o valor da variável for menor ou igual a 20, \n", - "# adicione à lista, apenas os valores pares e imprima a lista\n" + "# adicione à lista, apenas os valores pares e imprima a lista" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "# Exercício 8 - Transforme o resultado desta função range em uma lista: range(5, 45, 2)\n" + "# Exercício 8 - Transforme o resultado desta função range em uma lista: range(5, 45, 2)\n", + "nums = range(5, 45, 2)" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# Exercício 9 - Faça a correção dos erros no código abaixo e execute o programa. Dica: são 3 erros.\n", - "temperatura = float(input('Qual a temperatura? ')\n", - " if temperatura > 30\n", - " print('Vista roupas leves.')\n", - " else:\n", - " print('Busque seus casacos.')\n" + "temperatura = float(input('Qual a temperatura? '))\n", + "if temperatura > 30\n", + "print('Vista roupas leves.')\n", + "else\n", + " print('Busque seus casacos.')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "# Exercício 10 - Faça um programa que conte quantas vezes a letra \"a\" aparece na frase abaixo. Use um placeholder na \n", + "# Exercício 10 - Faça um programa que conte quantas vezes a letra \"r\" aparece na frase abaixo. Use um placeholder na \n", "# sua instrução de impressão\n", "\n", "# “É melhor, muito melhor, contentar-se com a realidade; se ela não é tão brilhante como os sonhos, tem pelo menos a \n", "# vantagem de existir.” (Machado de Assis)\n", - "\n" + "\n", + "frase = \"É melhor, muito melhor, contentar-se com a realidade; se ela não é tão brilhante como os sonhos, tem pelo menos a vantagem de existir.\" " ] }, { @@ -172,9 +172,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap03/Notebooks/binary.csv b/Cap03/Notebooks/binary.csv new file mode 100755 index 00000000..b2488b11 --- /dev/null +++ b/Cap03/Notebooks/binary.csv @@ -0,0 +1,6 @@ +admit,gre,gpa,rank +0,380,3.61,3 +1,660,3.67,3 +1,880,4.00,1 +1,640,3.19,4 +0,520,2.93,4 diff --git a/Cap04/Lab02/calculadora_v2.py b/Cap04/Lab02/calculadora_v2.py new file mode 100644 index 00000000..f1506e9c --- /dev/null +++ b/Cap04/Lab02/calculadora_v2.py @@ -0,0 +1,51 @@ +# Calculadora em Python + +print("\n******************* Python Calculator *******************") + +def add(x, y): + return x + y + +def subtract(x, y): + return x - y + +def multiply(x, y): + return x * y + +def divide(x, y): + return x / y + +print("\nSelecione o número da operação desejada: \n") +print("1 - Soma") +print("2 - Subtração") +print("3 - Multiplicação") +print("4 - Divisão") + +escolha = input("\nDigite sua opção (1/2/3/4): ") + +num1 = int(input("\nDigite o primeiro número: ")) +num2 = int(input("\nDigite o segundo número: ")) + +if escolha == '1': + print("\n") + print(num1, "+", num2, "=", add(num1, num2)) + print("\n") + +elif escolha == '2': + print("\n") + print(num1, "-", num2, "=", subtract(num1, num2)) + print("\n") + +elif escolha == '3': + print("\n") + print(num1, "*", num2, "=", multiply(num1, num2)) + print("\n") + +elif escolha == '4': + print("\n") + print(num1, "/", num2, "=", divide(num1, num2)) + print("\n") + +else: + print("\nOpção Inválida!") + + \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Arquivos.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-01-Arquivos-Parte1.ipynb similarity index 99% rename from "JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Arquivos.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-01-Arquivos-Parte1.ipynb index af80c93e..e285c23a 100644 --- "a/JupyterNotebooks/Cap\303\255tulo02/DSA-Python-Cap\303\255tulo2-Arquivos.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-01-Arquivos-Parte1.ipynb @@ -4,11 +4,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 2\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ************ ATENÇÃO ************\n", + "Caso você tenha problemas com acentos nos arquivos:\n", + "\n", + "Primeiro, recomendamos a leitura do material sobre Formato Unicode, ao final do capítulo 4.\n", + "\n", + "Uma forma de resolver esse problema, é abrir o arquivo em um editor de texto como o Sublime Text, clicar em File - Save with Encoding e então salvar com encoding UTF-8.\n", + "\n", + "Outra opção é incluir o parâmetro encoding='utf8' ao abrir o arquivo para leitura ou escrita.\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -20,7 +34,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Obs: Crie um arquivo txt, chamado arquivo-dsc.txt no mesmo diretório onde está seu Jupyter Notebook, digite a frase: Python é uma linguagem poderosa! e salve o arquivo." + "Obs: Crie um arquivo txt, chamado arquivo1.txt no diretório \"arquivos\" na pasta onde está seu Jupyter Notebook, digite a frase: Python é uma linguagem poderosa! \n", + "e salve o arquivo." ] }, { @@ -39,21 +54,19 @@ "outputs": [], "source": [ "# Abrindo o arquivo para leitura\n", - "arq1 = open(\"arquivo-dsc.txt\", \"r\")" + "arq1 = open(\"arquivos/arquivo1.txt\", \"r\")" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Testando gravação de arquivos em Python Acrescentando conteúdo\n" + "Python é uma linguagem poderosa!\n" ] } ], @@ -65,15 +78,13 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "65\n" + "33\n" ] } ], @@ -85,9 +96,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -105,15 +114,13 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Testando g\n" + "Python é u\n" ] } ], @@ -138,15 +145,13 @@ "outputs": [], "source": [ "# Abrindo arquivo para gravação\n", - "arq2 = open(\"arquivo-dsc.txt\", \"w\")" + "arq2 = open(\"arquivos/arquivo1.txt\", \"w\")" ] }, { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "UnsupportedOperation", @@ -168,9 +173,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -208,15 +211,13 @@ "outputs": [], "source": [ "# Lendo arquivo gravado\n", - "arq2 = open(\"arquivo-dsc.txt\", \"r\")" + "arq2 = open(\"arquivos/arquivo1.txt\", \"r\")" ] }, { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -239,20 +240,18 @@ "outputs": [], "source": [ "# Acrescentando conteúdo\n", - "arq2 = open(\"arquivo-dsc.txt\", \"a\")" + "arq2 = open(\"arquivos/arquivo1.txt\", \"a\")" ] }, { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "22" + "23" ] }, "execution_count": 13, @@ -261,7 +260,7 @@ } ], "source": [ - "arq2.write(\"Acrescentando conteúdo\")" + "arq2.write(\" Acrescentando conteúdo\")" ] }, { @@ -283,21 +282,19 @@ }, "outputs": [], "source": [ - "arq2 = open(\"arquivo-dsc.txt\", \"r\")" + "arq2 = open(\"arquivos/arquivo1.txt\", \"r\")" ] }, { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Testando gravação de arquivos em Python Acrescentando conteúdo\n" + "Testando gravação de arquivos em Python Acrescentando conteúdo\n" ] } ], @@ -308,9 +305,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -331,15 +326,13 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Testando gravação de arquivos em Python Acrescentando conteúdo\n" + "Testando gravação de arquivos em Python Acrescentando conteúdo\n" ] } ], @@ -357,9 +350,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -398,9 +389,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -421,7 +410,7 @@ "cell_type": "code", "execution_count": 23, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -432,7 +421,7 @@ "cell_type": "code", "execution_count": 24, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -442,9 +431,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -480,9 +467,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Faça download do arquivo salarios.csv em nosso repositório no github. Este arquivo foi obtido no sites de dados abertos do governo da cidade de Chicago, nos EUA: https://data.cityofchicago.org/\n", - "\n", - "Download od arquivo: http://github.com/dsacademybr/JupyterNotebooks/Capitulo02/salarios.csv" + "Faça download do arquivo salarios.csv em nosso repositório no github. Este arquivo foi obtido no site de dados abertos do governo da cidade de Chicago, nos EUA: https://data.cityofchicago.org/" ] }, { @@ -493,7 +478,7 @@ }, "outputs": [], "source": [ - "f = open('salarios.csv', 'r')" + "f = open('arquivos/salarios.csv', 'r')" ] }, { @@ -521,9 +506,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -552,7 +535,7 @@ }, "outputs": [], "source": [ - "f = open('salarios.csv', 'r')" + "f = open('arquivos/salarios.csv', 'r')" ] }, { @@ -592,7 +575,7 @@ "cell_type": "code", "execution_count": 35, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -604,9 +587,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -635,7 +616,7 @@ }, "outputs": [], "source": [ - "f = open('salarios.csv', 'r')" + "f = open('arquivos/salarios.csv', 'r')" ] }, { @@ -700,9 +681,7 @@ { "cell_type": "code", "execution_count": 43, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -731,7 +710,7 @@ }, "outputs": [], "source": [ - "f = open('salarios.csv', 'r')\n", + "f = open('arquivos/salarios.csv', 'r')\n", "data = f.read()\n", "rows = data.split('\\n')\n", "full_data = []" @@ -761,15 +740,17 @@ "outputs": [], "source": [ "for column in first_row:\n", - " count = count + 1" + " count = count + 1\n", + " \n", + "# Outra solução possível\n", + "# for column in full_data[0]:\n", + "# count = count + 1" ] }, { "cell_type": "code", "execution_count": 47, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -793,20 +774,18 @@ { "cell_type": "code", "execution_count": 48, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Overwriting teste.txt\n" + "Overwriting arquivos/teste.txt\n" ] } ], "source": [ - "%%writefile teste.txt \n", + "%%writefile arquivos/teste.txt \n", "Olá este arquivo foi gerado pelo próprio Jupyter Notebook.\n", "Podemos gerar quantas linhas quisermos e o Jupyter gera o arquivo final." ] @@ -815,19 +794,17 @@ "cell_type": "code", "execution_count": 49, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "arq4 = open(\"teste.txt\", 'r')" + "arq4 = open(\"arquivos/teste.txt\", 'r')" ] }, { "cell_type": "code", "execution_count": 50, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -847,9 +824,7 @@ { "cell_type": "code", "execution_count": 51, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -870,9 +845,7 @@ { "cell_type": "code", "execution_count": 52, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -893,9 +866,7 @@ { "cell_type": "code", "execution_count": 53, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -917,9 +888,7 @@ { "cell_type": "code", "execution_count": 54, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -933,7 +902,7 @@ ], "source": [ "# Podemos usar um loop for para ler o arquivo\n", - "for line in open('teste.txt'):\n", + "for line in open('arquivos/teste.txt'):\n", " print(line)" ] }, @@ -963,14 +932,14 @@ }, "outputs": [], "source": [ - "file_name = \"http://www.ats.ucla.edu/stat/data/binary.csv\"" + "file_name = \"arquivos/binary.csv\"" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -980,14 +949,25 @@ { "cell_type": "code", "execution_count": 58, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -1016,7 +996,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1042,7 +1022,7 @@ " admit gre gpa rank\n", "0 0 380 3.61 3\n", "1 1 660 3.67 3\n", - "2 1 800 4.00 1\n", + "2 1 880 4.00 1\n", "3 1 640 3.19 4\n", "4 0 520 2.93 4" ] @@ -1060,11 +1040,11 @@ "cell_type": "code", "execution_count": 59, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "file2 = \"salarios.csv\"" + "file2 = \"arquivos/salarios.csv\"" ] }, { @@ -1081,14 +1061,25 @@ { "cell_type": "code", "execution_count": 61, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
218008804.001
\n", " \n", " \n", @@ -1181,9 +1172,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [Root]", + "display_name": "Python 3", "language": "python", - "name": "Python [Root]" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1195,9 +1186,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Manipula\303\247\303\243o de Arquivos.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-02-Arquivos-Parte2.ipynb similarity index 71% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Manipula\303\247\303\243o de Arquivos.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-02-Arquivos-Parte2.ipynb index 5ff7e898..bfe345b7 100755 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Manipula\303\247\303\243o de Arquivos.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-02-Arquivos-Parte2.ipynb @@ -4,11 +4,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ************ ATENÇÃO ************\n", + "Caso você tenha problemas com acentos nos arquivos:\n", + "\n", + "Primeiro, recomendamos a leitura do material sobre Formato Unicode, ao final do capítulo 4.\n", + "\n", + "Uma forma de resolver esse problema, é abrir o arquivo em um editor de texto como o Sublime Text, clicar em File - Save with Encoding e então salvar com encoding UTF-8.\n", + "\n", + "Outra opção é incluir o parâmetro encoding='utf8' ao abrir o arquivo para leitura ou escrita.\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -20,9 +34,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "- Text files\n", - "- CSV files\n", - "- JSON" + "- Arquivos TXT\n", + "- Arquivos CSV \n", + "- Arquivos JSON" ] }, { @@ -40,41 +54,39 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "texto = \"Cientista de Dados é a profissão que mais tem crescido ultimamente.\\n\"\n", - "texto = texto + \"Esses profissionais precisam se especializar em Estatística, Programação e Machine Learning.\\n\"\n", + "texto = \"Cientista de Dados é a profissão que mais tem crescido em todo mundo.\\n\"\n", + "texto = texto + \"Esses profissionais precisam se especializar em Programação, Estatística e Machine Learning.\\n\"\n", "texto += \"E claro, em Big Data.\"" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Cientista de Dados é a profissão que mais tem crescido ultimamente.\n", - "Esses profissionais precisam se especializar em Estatística, Programação e Machine Learning.\n", + "Cientista de Dados é a profissão que mais tem crescido em todo mundo.\n", + "Esses profissionais precisam se especializar em Programação, Estatística e Machine Learning.\n", "E claro, em Big Data.\n" ] } ], "source": [ - "print (texto)" + "print(texto)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -86,19 +98,19 @@ "cell_type": "code", "execution_count": 4, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "# Criando um arquivo (no mesmo diretório onde está o Jupyter Notebook)\n", - "arquivo = open(os.path.join('cientista.txt'),'w')" + "# Criando um arquivo \n", + "arquivo = open(os.path.join('arquivos/cientista.txt'),'w')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -111,7 +123,7 @@ "cell_type": "code", "execution_count": 6, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -122,44 +134,23 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cientista de Dados é a profissão que mais tem crescido ultimamente. Esses profissionais precisam se especializar em Estatística, Programação e Machine Learning. E claro, em Big Data. " - ] - } - ], - "source": [ - "!cat cientista.txt" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Cientista de Dados é a profissão que mais tem crescido ultimamente. Esses profissionais precisam se especializar em Estatística, Programação e Machine Learning. E claro, em Big Data. \n" + "Cientista de Dados é a profissão que mais tem crescido em todo mundo. Esses profissionais precisam se especializar em Programação, Estatística e Machine Learning. E claro, em Big Data. \n" ] } ], "source": [ "# Lendo o arquivo\n", - "arquivo = open('cientista.txt','r')\n", - "texto = arquivo.read()\n", + "arquivo = open('arquivos/cientista.txt','r')\n", + "conteudo = arquivo.read()\n", "arquivo.close()\n", "\n", - "print (texto)" + "print(conteudo)" ] }, { @@ -177,63 +168,59 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "with open('cientista.txt','r') as arquivo:\n", - " texto = arquivo.read()" + "with open('arquivos/cientista.txt','r') as arquivo:\n", + " conteudo = arquivo.read()" ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "183\n" + "185\n" ] } ], "source": [ - "print (len(texto))" + "print(len(conteudo))" ] }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Cientista de Dados é a profissão que mais tem crescido ultimamente. Esses profissionais precisam se especializar em Estatística, Programação e Machine Learning. E claro, em Big Data. \n" + "Cientista de Dados é a profissão que mais tem crescido em todo mundo. Esses profissionais precisam se especializar em Programação, Estatística e Machine Learning. E claro, em Big Data. \n" ] } ], "source": [ - "print (texto)" + "print(conteudo)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "with open('cientista.txt','w') as arquivo:\n", + "with open('arquivos/cientista.txt','w') as arquivo:\n", " arquivo.write(texto[:21])\n", " arquivo.write('\\n')\n", " arquivo.write(texto[:33])" @@ -241,22 +228,25 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Cientista de Dados é \r\n", - "Cientista de Dados é a profissão " + "Cientista de Dados é \n", + "Cientista de Dados é a profissão \n" ] } ], "source": [ - "!cat cientista.txt" + "# Lendo o arquivo\n", + "arquivo = open('arquivos/cientista.txt','r')\n", + "conteudo = arquivo.read()\n", + "arquivo.close()\n", + "\n", + "print (conteudo)" ] }, { @@ -272,9 +262,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -284,13 +274,13 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "with open('numeros.csv','w') as arquivo:\n", + "with open('arquivos/numeros.csv','w') as arquivo:\n", " writer = csv.writer(arquivo)\n", " writer.writerow(('primeira','segunda','terceira'))\n", " writer.writerow((55,93,76)) \n", @@ -299,34 +289,35 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "primeira,segunda,terceira\r", - "\r\n", - "55,93,76\r", - "\r\n", - "62,14,86\r", - "\r\n" + "Número de colunas: 3\n", + "['primeira', 'segunda', 'terceira']\n", + "Número de colunas: 3\n", + "['55', '93', '76']\n", + "Número de colunas: 3\n", + "['62', '14', '86']\n" ] } ], "source": [ - "!cat numeros.csv" + "# Leitura de arquivos csv\n", + "with open('arquivos/numeros.csv','r') as arquivo:\n", + " leitor = csv.reader(arquivo)\n", + " for x in leitor:\n", + " print ('Número de colunas:', len(x))\n", + " print(x)" ] }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -342,8 +333,8 @@ } ], "source": [ - "# Leitura de arquivos csv\n", - "with open('numeros.csv','r') as arquivo:\n", + "# Código alternativo para eventuais problemas com linhas em branco no arquivo\n", + "with open('arquivos/numeros.csv','r', encoding='utf8', newline = '\\r\\n') as arquivo:\n", " leitor = csv.reader(arquivo)\n", " for x in leitor:\n", " print ('Número de colunas:', len(x))\n", @@ -352,10 +343,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -367,7 +356,7 @@ ], "source": [ "# Gerando uma lista com dados do arquivo csv\n", - "with open('numeros.csv','r') as arquivo:\n", + "with open('arquivos/numeros.csv','r') as arquivo:\n", " leitor = csv.reader(arquivo)\n", " dados = list(leitor)\n", " \n", @@ -377,10 +366,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -411,9 +398,9 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -426,18 +413,16 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "similar ['c', 'Modula-3', 'lisp']\n", "nome Guido van Rossum\n", "linguagem Python\n", + "similar ['c', 'Modula-3', 'lisp']\n", "users 1000000\n" ] } @@ -449,9 +434,9 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -461,18 +446,16 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, + "execution_count": 22, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'{\"similar\": [\"c\", \"Modula-3\", \"lisp\"], \"nome\": \"Guido van Rossum\", \"linguagem\": \"Python\", \"users\": 1000000}'" + "'{\"nome\": \"Guido van Rossum\", \"linguagem\": \"Python\", \"similar\": [\"c\", \"Modula-3\", \"lisp\"], \"users\": 1000000}'" ] }, - "execution_count": 23, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -484,43 +467,41 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Criando um arquivo Json\n", - "with open('dados.json','w') as arquivo:\n", + "with open('arquivos/dados.json','w') as arquivo:\n", " arquivo.write(json.dumps(dict))" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Leitura de arquivos Json\n", - "with open('dados.json','r') as arquivo:\n", + "with open('arquivos/dados.json','r') as arquivo:\n", " texto = arquivo.read()\n", " data = json.loads(texto)" ] }, { "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, + "execution_count": 25, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'similar': ['c', 'Modula-3', 'lisp'], 'nome': 'Guido van Rossum', 'linguagem': 'Python', 'users': 1000000}\n" + "{'nome': 'Guido van Rossum', 'linguagem': 'Python', 'similar': ['c', 'Modula-3', 'lisp'], 'users': 1000000}\n" ] } ], @@ -530,10 +511,8 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, + "execution_count": 26, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -549,9 +528,9 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -564,19 +543,17 @@ }, { "cell_type": "code", - "execution_count": 29, - "metadata": { - "collapsed": false - }, + "execution_count": 28, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Título: The Good Man trailer\n", - "URL: http://vimeo.com/57733101\n", + "URL: https://vimeo.com/57733101\n", "Duração: 143\n", - "Número de Visualizações: 5206\n" + "Número de Visualizações: 5514\n" ] } ], @@ -589,7 +566,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -598,15 +575,15 @@ "# Copiando o conteúdo de um arquivo para outro\n", "import os\n", "\n", - "arquivo_fonte = 'dados.json'\n", - "arquivo_destino = 'json_data.txt'" + "arquivo_fonte = 'arquivos/dados.json'\n", + "arquivo_destino = 'arquivos/json_data.txt'" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -619,10 +596,8 @@ }, { "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, + "execution_count": 31, + "metadata": {}, "outputs": [ { "data": { @@ -630,7 +605,7 @@ "107" ] }, - "execution_count": 32, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -642,21 +617,33 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": { - "collapsed": false + "collapsed": true }, + "outputs": [], + "source": [ + "# Leitura de arquivos Json\n", + "with open('arquivos/json_data.txt','r') as arquivo:\n", + " texto = arquivo.read()\n", + " data = json.loads(texto)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{\"similar\": [\"c\", \"Modula-3\", \"lisp\"], \"nome\": \"Guido van Rossum\", \"linguagem\": \"Python\", \"users\": 1000000}" + "{'nome': 'Guido van Rossum', 'linguagem': 'Python', 'similar': ['c', 'Modula-3', 'lisp'], 'users': 1000000}\n" ] } ], "source": [ - "!cat json_data.txt" + "print(data)" ] }, { @@ -697,9 +684,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap04/Notebooks/DSA-Python-Cap04-03-Modulos-e-Pacotes.ipynb b/Cap04/Notebooks/DSA-Python-Cap04-03-Modulos-e-Pacotes.ipynb new file mode 100755 index 00000000..b18f853e --- /dev/null +++ b/Cap04/Notebooks/DSA-Python-Cap04-03-Modulos-e-Pacotes.ipynb @@ -0,0 +1,541 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", + "\n", + "## Download: http://github.com/dsacademybr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Módulos e Pacotes" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Importando um módulo em Python\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__doc__',\n", + " '__file__',\n", + " '__loader__',\n", + " '__name__',\n", + " '__package__',\n", + " '__spec__',\n", + " 'acos',\n", + " 'acosh',\n", + " 'asin',\n", + " 'asinh',\n", + " 'atan',\n", + " 'atan2',\n", + " 'atanh',\n", + " 'ceil',\n", + " 'copysign',\n", + " 'cos',\n", + " 'cosh',\n", + " 'degrees',\n", + " 'e',\n", + " 'erf',\n", + " 'erfc',\n", + " 'exp',\n", + " 'expm1',\n", + " 'fabs',\n", + " 'factorial',\n", + " 'floor',\n", + " 'fmod',\n", + " 'frexp',\n", + " 'fsum',\n", + " 'gamma',\n", + " 'gcd',\n", + " 'hypot',\n", + " 'inf',\n", + " 'isclose',\n", + " 'isfinite',\n", + " 'isinf',\n", + " 'isnan',\n", + " 'ldexp',\n", + " 'lgamma',\n", + " 'log',\n", + " 'log10',\n", + " 'log1p',\n", + " 'log2',\n", + " 'modf',\n", + " 'nan',\n", + " 'pi',\n", + " 'pow',\n", + " 'radians',\n", + " 'sin',\n", + " 'sinh',\n", + " 'sqrt',\n", + " 'tan',\n", + " 'tanh',\n", + " 'tau',\n", + " 'trunc']" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Verificando todos os métodos disponíveis no módulo\n", + "dir(math)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Usando um dos métodos do módulo math\n", + "math.sqrt(25)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Importando apenas um dos métodos do módulo math\n", + "from math import sqrt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Usando o método\n", + "sqrt(9)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']\n" + ] + } + ], + "source": [ + "# Imprimindo todos os métodos do módulo math\n", + "print(dir(math))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on built-in function sqrt in module math:\n", + "\n", + "sqrt(...)\n", + " sqrt(x)\n", + " \n", + " Return the square root of x.\n", + "\n" + ] + } + ], + "source": [ + "# Help do método sqrt do módulo math\n", + "help(sqrt)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Maça'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "random.choice(['Maça', 'Banana', 'Laranja'])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[54, 37, 67, 23, 97, 8, 16, 10, 72, 59]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "random.sample(range(100), 10)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import statistics" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dados = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.6071428571428572" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "statistics.mean(dados)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.25" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "statistics.median(dados)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/dmpm/Dropbox/DSA/PythonFundamentos/Cap04/Notebooks'" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "os.getcwd()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CLD_CONTINUED', 'CLD_DUMPED', 'CLD_EXITED', 'CLD_TRAPPED', 'DirEntry', 'EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST', 'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER', 'EX_OK', 'EX_OSERR', 'EX_OSFILE', 'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE', 'EX_USAGE', 'F_LOCK', 'F_OK', 'F_TEST', 'F_TLOCK', 'F_ULOCK', 'MutableMapping', 'NGROUPS_MAX', 'O_ACCMODE', 'O_APPEND', 'O_ASYNC', 'O_CLOEXEC', 'O_CREAT', 'O_DIRECTORY', 'O_DSYNC', 'O_EXCL', 'O_EXLOCK', 'O_NDELAY', 'O_NOCTTY', 'O_NOFOLLOW', 'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_SHLOCK', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'PRIO_PGRP', 'PRIO_PROCESS', 'PRIO_USER', 'P_ALL', 'P_NOWAIT', 'P_NOWAITO', 'P_PGID', 'P_PID', 'P_WAIT', 'PathLike', 'RTLD_GLOBAL', 'RTLD_LAZY', 'RTLD_LOCAL', 'RTLD_NODELETE', 'RTLD_NOLOAD', 'RTLD_NOW', 'R_OK', 'SCHED_FIFO', 'SCHED_OTHER', 'SCHED_RR', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'ST_NOSUID', 'ST_RDONLY', 'TMP_MAX', 'WCONTINUED', 'WCOREDUMP', 'WEXITED', 'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED', 'WIFSTOPPED', 'WNOHANG', 'WNOWAIT', 'WSTOPPED', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_spawnvef', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chflags', 'chmod', 'chown', 'chroot', 'close', 'closerange', 'confstr', 'confstr_names', 'cpu_count', 'ctermid', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'environb', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fchdir', 'fchmod', 'fchown', 'fdopen', 'fork', 'forkpty', 'fpathconf', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fstatvfs', 'fsync', 'ftruncate', 'get_blocking', 'get_exec_path', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getegid', 'getenv', 'getenvb', 'geteuid', 'getgid', 'getgrouplist', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getpriority', 'getsid', 'getuid', 'initgroups', 'isatty', 'kill', 'killpg', 'lchflags', 'lchmod', 'lchown', 'linesep', 'link', 'listdir', 'lockf', 'lseek', 'lstat', 'major', 'makedev', 'makedirs', 'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', 'openpty', 'pardir', 'path', 'pathconf', 'pathconf_names', 'pathsep', 'pipe', 'popen', 'pread', 'putenv', 'pwrite', 'read', 'readlink', 'readv', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sched_get_priority_max', 'sched_get_priority_min', 'sched_yield', 'sendfile', 'sep', 'set_blocking', 'set_inheritable', 'setegid', 'seteuid', 'setgid', 'setgroups', 'setpgid', 'setpgrp', 'setpriority', 'setregid', 'setreuid', 'setsid', 'setuid', 'spawnl', 'spawnle', 'spawnlp', 'spawnlpe', 'spawnv', 'spawnve', 'spawnvp', 'spawnvpe', 'st', 'stat', 'stat_float_times', 'stat_result', 'statvfs', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sync', 'sys', 'sysconf', 'sysconf_names', 'system', 'tcgetpgrp', 'tcsetpgrp', 'terminal_size', 'times', 'times_result', 'truncate', 'ttyname', 'umask', 'uname', 'uname_result', 'unlink', 'unsetenv', 'urandom', 'utime', 'wait', 'wait3', 'wait4', 'waitpid', 'walk', 'write', 'writev']\n" + ] + } + ], + "source": [ + "print(dir(os))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Teste" + ] + } + ], + "source": [ + "sys.stdout.write('Teste')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'3.6.4 |Anaconda custom (64-bit)| (default, Mar 12 2018, 20:05:31) \\n[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]'" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sys.version" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe', '_git', '_home', '_xoptions', 'abiflags', 'api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'ps3', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions']\n" + ] + } + ], + "source": [ + "print(dir(sys))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Importando o módulo request do pacote urllib, usado para trazer url's \n", + "# para dentro do nosso ambiente Python\n", + "import urllib.request" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Variável resposta armazena o objeto de conexão à url passada como \n", + "# parâmetro\n", + "resposta = urllib.request.urlopen('http://python.org')" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# Objeto resposta\n", + "print(resposta)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Chamando o método read() do objeto resposta e armazenando o código \n", + "# html na variável html\n", + "html = resposta.read()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b'\\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 Welcome to Python.org\\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

Notice: While Javascript is not essential for this website, your interaction with the content will be limited. Please turn Javascript on for the full experience.

\\n
\\n\\n \\n\\n \\n
\\n\\n \\n\\n
\\n\\n \\n
\\n
\\n\\n

\\n \"python™\"\\n

\\n\\n
\\n\\n \\n Menu
\\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
    # Python 3: Fibonacci series up to n\\r\\n>>> def fib(n):\\r\\n>>>     a, b = 0, 1\\r\\n>>>     while a < n:\\r\\n>>>         print(a, end=\\' \\')\\r\\n>>>         a, b = b, a+b\\r\\n>>>     print()\\r\\n>>> fib(1000)\\r\\n0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
    \\n

    Functions Defined

    \\r\\n

    The core of extensible programming is defining functions. Python allows mandatory and optional arguments, keyword arguments, and even arbitrary argument lists. More about defining functions in Python 3

    \\n
  • \\n \\n
  • \\n
    # Python 3: List comprehensions\\r\\n>>> fruits = [\\'Banana\\', \\'Apple\\', \\'Lime\\']\\r\\n>>> loud_fruits = [fruit.upper() for fruit in fruits]\\r\\n>>> print(loud_fruits)\\r\\n[\\'BANANA\\', \\'APPLE\\', \\'LIME\\']\\r\\n\\r\\n# List and the enumerate function\\r\\n>>> list(enumerate(fruits))\\r\\n[(0, \\'Banana\\'), (1, \\'Apple\\'), (2, \\'Lime\\')]
    \\n

    Compound Data Types

    \\r\\n

    Lists (known as arrays in other languages) are one of the compound data types that Python understands. Lists can be indexed, sliced and manipulated with other built-in functions. More about lists in Python 3

    \\n
  • \\n \\n
  • \\n
    # Python 3: Simple arithmetic\\r\\n>>> 1 / 2\\r\\n0.5\\r\\n>>> 2 ** 3\\r\\n8\\r\\n>>> 17 / 3  # classic division returns a float\\r\\n5.666666666666667\\r\\n>>> 17 // 3  # floor division\\r\\n5
    \\n

    Intuitive Interpretation

    \\r\\n

    Calculations are simple with Python, and expression syntax is straightforward: the operators +, -, * and / work as expected; parentheses () can be used for grouping. More about simple math functions in Python 3.

    \\n
  • \\n \\n
  • \\n
    # Python 3: Simple output (with Unicode)\\r\\n>>> print(\"Hello, I\\'m Python!\")\\r\\nHello, I\\'m Python!\\r\\n\\r\\n# Input, assignment\\r\\n>>> name = input(\\'What is your name?\\\\n\\')\\r\\n>>> print(\\'Hi, %s.\\' % name)\\r\\nWhat is your name?\\r\\nPython\\r\\nHi, Python.
    \\n

    Quick & Easy to Learn

    \\r\\n

    Experienced programmers in any other language can pick up Python very quickly, and beginners find the clean syntax and indentation structure easy to learn. Whet your appetite with our Python 3 overview.

    \\r\\n
    \\n
  • \\n \\n
  • \\n
    # For loop on a list\\r\\n>>> numbers = [2, 4, 6, 8]\\r\\n>>> product = 1\\r\\n>>> for number in numbers:\\r\\n...    product = product * number\\r\\n... \\r\\n>>> print(\\'The product is:\\', product)\\r\\nThe product is: 384
    \\n

    All the Flow You’d Expect

    \\r\\n

    Python knows the usual control flow statements that other languages speak — if, for, while and range — with some of its own twists, of course. More control flow tools in Python 3

    \\n
  • \\n \\n
\\n
\\n\\n\\n
\\n\\n \\n
\\n

Python is a programming language that lets you work quickly and integrate systems more effectively. Learn More

\\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

Get Started

\\r\\n

Whether you\\'re new to programming or an experienced developer, it\\'s easy to learn and use Python.

\\r\\n

Start with our Beginner’s Guide

\\n
\\n\\n
\\n

Download

\\n

Python source code and installers are available for download for all versions! Not sure which version to use? Check here.

\\n

Latest: Python 3.6.5 - Python 2.7.14

\\n
\\n\\n
\\n

Docs

\\r\\n

Documentation for Python\\'s standard library, along with tutorials and guides, are available online.

\\r\\n

docs.python.org

\\n
\\n\\n
\\n

Jobs

\\r\\n

Looking for work or have a Python related position that you\\'re trying to hire for? Our relaunched community-run job board is the place to go.

\\r\\n

jobs.python.org

\\n
\\n\\n
\\n\\n
\\n\\n \\n\\n
\\n \\n
\\n \\n

Upcoming Events

\\n

More

\\n \\n \\n
\\n\\n
\\n\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n

Industrial Light & Magic Runs on Python by Tim Fortenberry

\\n
\\n \\n\\n \\n\\n \\n\\n
\\n
\\n

Use Python for…

\\r\\n

More

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

\\n >>> Python Enhancement Proposals (PEPs): The future of Python is discussed here.\\n RSS\\n

\\n\\n\\n \\n \\n
\\n\\n
\\n\\n
\\n \\n

\\r\\n >>> Python Software Foundation\\r\\n

\\r\\n

The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers. Learn more

\\r\\n

\\r\\n Become a Member\\r\\n Donate to the PSF\\r\\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" + ] + } + ], + "source": [ + "# Imprimindo html\n", + "print(html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fim" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### Obrigado - Data Science Academy - facebook.com/dsacademybr" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Datetime.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-04-Datetime.ipynb similarity index 82% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Datetime.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-04-Datetime.ipynb index c34e3c4c..b1ec19ca 100644 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Datetime.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-04-Datetime.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -21,7 +21,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -30,9 +30,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -41,18 +41,16 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "datetime.datetime(2016, 5, 30, 20, 16, 1, 751134)" + "datetime.datetime(2018, 4, 5, 14, 1, 53, 388643)" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -63,9 +61,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -74,10 +72,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -93,10 +89,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -118,10 +112,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -137,7 +129,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "collapsed": true }, @@ -148,20 +140,18 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2016-05-30\n", - "ctime: Mon May 30 00:00:00 2016\n", - "Ano: 2016\n", - "Mês : 5\n", - "Dia : 30\n" + "2018-04-05\n", + "ctime: Thu Apr 5 00:00:00 2018\n", + "Ano: 2018\n", + "Mês : 4\n", + "Dia : 5\n" ] } ], @@ -175,10 +165,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -195,10 +183,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -215,10 +201,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { @@ -226,13 +210,13 @@ "datetime.timedelta(366)" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Diferença em dias emtre duas datas\n", + "# Diferença em dias entre duas datas\n", "d2 - d1" ] }, @@ -267,9 +251,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Map.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-05-Map.ipynb similarity index 87% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Map.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-05-Map.ipynb index 7ac0d66d..00341262 100644 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Map.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-05-Map.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -20,19 +20,17 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Criando duas funções\n", "\n", - "# Função 1 - Recebe uma temperatura como parâmetro e retorna a \n", - "# temperatura em Fahrenheit\n", + "# Função 1 - Recebe uma temperatura como parâmetro e retorna a temperatura em Fahrenheit\n", "def fahrenheit(T):\n", " return ((float(9)/5)*T + 32)\n", "\n", - "# Função 2 - Recebe uma temperatura como parâmetro e retorna a \n", - "# temperatura em Celsius\n", + "# Função 2 - Recebe uma temperatura como parâmetro e retorna a temperatura em Celsius\n", "def celsius(T):\n", " return (float(5)/9)*(T-32)" ] @@ -52,14 +50,12 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -76,9 +72,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -99,9 +93,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -123,14 +115,12 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -146,9 +136,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -168,14 +156,12 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -191,9 +177,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -214,7 +198,7 @@ "cell_type": "code", "execution_count": 10, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -226,9 +210,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -249,7 +231,7 @@ "cell_type": "code", "execution_count": 12, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -262,9 +244,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -312,9 +292,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Reduce.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-06-Reduce.ipynb similarity index 97% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Reduce.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-06-Reduce.ipynb index 259fb2d7..12a294b0 100644 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Reduce.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-06-Reduce.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -20,7 +20,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -43,9 +43,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -66,7 +64,7 @@ "cell_type": "code", "execution_count": 4, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -79,9 +77,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -95,17 +91,14 @@ } ], "source": [ - "# Usando reduce com uma função e uma lista. A função vai retornar o \n", - "# valor máximo\n", + "# Usando reduce com uma função e uma lista. A função vai retornar o valor máximo\n", "reduce(soma, lista)" ] }, { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -121,14 +114,14 @@ ], "source": [ "from IPython.display import Image\n", - "Image('http://github.com/dsacademybr/PythonFundamentos/tree/master/JupyterNotebooks/Cap%C3%ADtulo07/reduce.png')" + "Image('arquivos/reduce.png')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -139,9 +132,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -174,9 +165,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -196,9 +185,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -212,8 +199,7 @@ } ], "source": [ - "# Reduzindo a lista até o valor máximo, através da função criada com a \n", - "# expressão lambda\n", + "# Reduzindo a lista até o valor máximo, através da função criada com a expressão lambda\n", "reduce(max_find2, lst)" ] }, @@ -248,9 +234,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Filter.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-07-Filter.ipynb similarity index 89% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Filter.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-07-Filter.ipynb index 0b5a4f37..1491d539 100644 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Filter.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-07-Filter.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -20,7 +20,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -35,9 +35,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -60,7 +58,7 @@ "cell_type": "code", "execution_count": 3, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -70,9 +68,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -92,14 +88,12 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -114,9 +108,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -136,9 +128,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -158,9 +148,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -208,9 +196,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-List Comprehensions.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-08-List Comprehensions.ipynb similarity index 90% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-List Comprehensions.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-08-List Comprehensions.ipynb index f5e2f82b..9a6edd55 100755 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-List Comprehensions.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-08-List Comprehensions.ipynb @@ -6,7 +6,7 @@ "collapsed": true }, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -56,9 +54,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -84,15 +80,13 @@ "outputs": [], "source": [ "# Raiz quadrada e um range de números e retornar uma lista\n", - "lst = [x**2 for x in range(0,11)]" + "lst = [x**2 for x in range(0, 11)]" ] }, { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -124,9 +118,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -146,9 +138,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -174,7 +164,7 @@ "cell_type": "code", "execution_count": 9, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -185,9 +175,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -235,9 +223,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Zip.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-09-Zip.ipynb similarity index 87% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Zip.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-09-Zip.ipynb index acdd666a..2ff40df1 100644 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Zip.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-09-Zip.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -20,7 +20,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -32,14 +32,12 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -55,9 +53,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -78,9 +74,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -102,7 +96,7 @@ "cell_type": "code", "execution_count": 5, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -114,9 +108,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -137,7 +129,7 @@ "cell_type": "code", "execution_count": 7, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -149,14 +141,12 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[('a', 'd'), ('b', 'c')]" + "[('a', 'c'), ('b', 'd')]" ] }, "execution_count": 8, @@ -172,14 +162,12 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[('a', 5), ('b', 4)]" + "[('a', 4), ('b', 5)]" ] }, "execution_count": 9, @@ -196,7 +184,7 @@ "cell_type": "code", "execution_count": 10, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -213,14 +201,12 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'a': 5, 'b': 4}" + "{'a': 4, 'b': 5}" ] }, "execution_count": 11, @@ -263,9 +249,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Enumerate.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-10-Enumerate.ipynb similarity index 88% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Enumerate.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-10-Enumerate.ipynb index 7d5d792a..68d26f87 100644 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Enumerate.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-10-Enumerate.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -20,7 +20,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -31,14 +31,12 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -53,9 +51,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -75,9 +71,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -90,8 +84,7 @@ } ], "source": [ - "# Imprimindo os valores de uma lista com a função enumerate() e \n", - "# seus respectivos índices\n", + "# Imprimindo os valores de uma lista com a função enumerate() e seus respectivos índices\n", "for indice, valor in enumerate(seq):\n", " print (indice, valor)" ] @@ -99,9 +92,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -134,9 +125,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -156,9 +145,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -192,9 +179,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -249,9 +234,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Erros-e-Exce\303\247\303\265es.ipynb" b/Cap04/Notebooks/DSA-Python-Cap04-11-Erros-e-Excecoes.ipynb similarity index 77% rename from "JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Erros-e-Exce\303\247\303\265es.ipynb" rename to Cap04/Notebooks/DSA-Python-Cap04-11-Erros-e-Excecoes.ipynb index d9b22cd2..ee8aa4ce 100644 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Erros-e-Exce\303\247\303\265es.ipynb" +++ b/Cap04/Notebooks/DSA-Python-Cap04-11-Erros-e-Excecoes.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", "\n", "## Download: http://github.com/dsacademybr" ] @@ -20,7 +20,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "scrolled": true }, "outputs": [ { @@ -54,9 +54,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -74,9 +72,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ZeroDivisionError", @@ -106,9 +102,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "TypeError", @@ -129,9 +123,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -152,9 +144,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -167,7 +157,7 @@ "source": [ "# Utilizando try, except e else\n", "try:\n", - " f = open('testandoerros.txt','w')\n", + " f = open('arquivos/testandoerros.txt','w')\n", " f.write('Gravando no arquivo')\n", "except IOError:\n", " print (\"Erro: arquivo não encontrado ou não pode ser salvo.\")\n", @@ -179,9 +169,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -194,7 +182,7 @@ "source": [ "# Utilizando try, except e else\n", "try:\n", - " f = open('testandoerros','r')\n", + " f = open('arquivos/testandoerros','r')\n", "except IOError:\n", " print (\"Erro: arquivo não encontrado ou não pode ser lido.\")\n", "else:\n", @@ -205,9 +193,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -220,7 +206,7 @@ ], "source": [ "try:\n", - " f = open('testandoerros.txt','w')\n", + " f = open('arquivos/testandoerros.txt','w')\n", " f.write('Gravando no arquivo')\n", "except IOError:\n", " print (\"Erro: arquivo não encontrado ou não pode ser salvo.\")\n", @@ -233,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": { "collapsed": true }, @@ -241,8 +227,8 @@ "source": [ "def askint():\n", " try:\n", - " val = int(input(\"Digite um número: \"))\n", - " except:\n", + " val = int((input(\"Digite um número: \")))\n", + " except UnboundLocalError:\n", " print (\"Você não digitou um número!\")\n", " finally:\n", " print (\"Obrigado!\")\n", @@ -251,18 +237,27 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Digite um número: 2\n", - "Obrigado!\n", - "2\n" + "Digite um número: \n", + "Obrigado!\n" + ] + }, + { + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: ''", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0maskint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36maskint\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0maskint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Digite um número: \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mUnboundLocalError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Você não digitou um número!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: ''" ] } ], @@ -272,7 +267,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "metadata": { "collapsed": true }, @@ -291,35 +286,33 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Digite um número: q\n", + "Digite um número: \n", "Você não digitou um número!\n", - "Tente novamente. Digite um número: w\n", + "Tente novamente. Digite um número: \n", "Obrigado!\n" ] }, { "ename": "ValueError", - "evalue": "invalid literal for int() with base 10: 'w'", + "evalue": "invalid literal for int() with base 10: ''", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36maskint\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Digite um número: \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: 'q'", + "\u001b[0;32m\u001b[0m in \u001b[0;36maskint\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Digite um número: \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: ''", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0maskint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36maskint\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Você não digitou um número!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Tente novamente. Digite um número: \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Obrigado!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: 'w'" + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0maskint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36maskint\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Você não digitou um número!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Tente novamente. Digite um número: \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"Obrigado!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: ''" ] } ], @@ -329,7 +322,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 18, "metadata": { "collapsed": true }, @@ -352,25 +345,38 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Digite um número: q\n", + "Digite um número: \n", + "Você não digitou um número!\n", + "Fim da execução!\n", + "Digite um número: \n", + "Você não digitou um número!\n", + "Fim da execução!\n", + "Digite um número: \n", + "Você não digitou um número!\n", + "Fim da execução!\n", + "Digite um número: \n", "Você não digitou um número!\n", "Fim da execução!\n", - "Digite um número: w\n", + "Digite um número: \n", "Você não digitou um número!\n", "Fim da execução!\n", - "Digite um número: r\n", + "Digite um número: \n", "Você não digitou um número!\n", "Fim da execução!\n", - "Digite um número: 4\n", + "Digite um número: \n", + "Você não digitou um número!\n", + "Fim da execução!\n", + "Digite um número: \n", + "Você não digitou um número!\n", + "Fim da execução!\n", + "Digite um número: 87\n", "Obrigado por digitar um número!\n", "Fim da execução!\n" ] @@ -382,10 +388,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -413,7 +417,7 @@ "source": [ "Uma lista completa de exceções em Python, pode ser encontrada aqui:\n", "\n", - "https://docs.python.org/3.5/library/exceptions.html\n" + "https://docs.python.org/3.6/library/exceptions.html\n" ] }, { @@ -447,9 +451,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap04/Notebooks/DSA-Python-Cap04-ExercicioS.ipynb b/Cap04/Notebooks/DSA-Python-Cap04-ExercicioS.ipynb new file mode 100644 index 00000000..90273da1 --- /dev/null +++ b/Cap04/Notebooks/DSA-Python-Cap04-ExercicioS.ipynb @@ -0,0 +1,168 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", + "\n", + "## Download: http://github.com/dsacademybr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercícios " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 1 - Crie uma lista de 3 elementos e calcule a terceira potência de cada elemento." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 2 - Reescreva o código abaixo, usando a função map(). O resultado final deve ser o mesmo!\n", + "palavras = 'A Data Science Academy oferce os melhores cursos de análise de dados do Brasil'.split()\n", + "resultado = [[w.upper(), w.lower(), len(w)] for w in palavras]\n", + "for i in resultado:\n", + " print (i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 3 - Calcule a matriz transposta da matriz abaixo.\n", + "# Caso não saiba o que é matriz transposta, visite este link: https://pt.wikipedia.org/wiki/Matriz_transposta\n", + "# Matriz transposta é um conceito fundamental na construção de redes neurais artificiais, base de sistemas de IA.\n", + "matrix = [[1, 2],[3,4],[5,6],[7,8]]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 4 - Crie duas funções, uma para elevar um número ao quadrado e outra para elevar ao cubo. \n", + "# Aplique as duas funções aos elementos da lista abaixo. \n", + "# Obs: as duas funções devem ser aplicadas simultaneamente.\n", + "lista = [0, 1, 2, 3, 4]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 5 - Abaixo você encontra duas listas. Faça com que cada elemento da listaA seja elevado \n", + "# ao elemento correspondente na listaB.\n", + "listaA = [2, 3, 4]\n", + "listaB = [10, 11, 12]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 6 - Considerando o range de valores abaixo, use a função filter() para retornar apenas os valores negativos.\n", + "range(-5, 5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 7 - Usando a função filter(), encontre os valores que são comuns às duas listas abaixo.\n", + "a = [1,2,3,5,7,9]\n", + "b = [2,3,5,6,7,8]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 8 - Considere o código abaixo. Obtenha o mesmo resultado usando o pacote time. \n", + "# Não conhece o pacote time? Pesquise!\n", + "import datetime\n", + "print (datetime.datetime.now().strftime(\"%d/%m/%Y %H:%M\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 9 - Considere os dois dicionários abaixo. \n", + "# Crie um terceiro dicionário com as chaves do dicionário 1 e os valores do dicionário 2.\n", + "dict1 = {'a':1,'b':2}\n", + "dict2 = {'c':4,'d':5}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exercício 10 - Considere a lista abaixo e retorne apenas os elementos cujo índice for maior que 5.\n", + "lista = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fim" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Obrigado - Data Science Academy - facebook.com/dsacademybr" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/Cap04/Notebooks/DSA-Python-Cap04-Exercicios-Solucao.ipynb b/Cap04/Notebooks/DSA-Python-Cap04-Exercicios-Solucao.ipynb new file mode 100644 index 00000000..1e9fbde3 --- /dev/null +++ b/Cap04/Notebooks/DSA-Python-Cap04-Exercicios-Solucao.ipynb @@ -0,0 +1,344 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Science Academy - Python Fundamentos - Capítulo 4\n", + "\n", + "## Download: http://github.com/dsacademybr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercícios " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[27, 64, 125]\n" + ] + } + ], + "source": [ + "# Exercício 1 - Crie uma lista de 3 elementos e calcule a terceira potência de cada elemento.\n", + "list1 = [3,4,5]\n", + "quadrado = [item**3 for item in list1] \n", + "print(quadrado)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['A', 'a', 1]\n", + "['DATA', 'data', 4]\n", + "['SCIENCE', 'science', 7]\n", + "['ACADEMY', 'academy', 7]\n", + "['OFERCE', 'oferce', 6]\n", + "['OS', 'os', 2]\n", + "['MELHORES', 'melhores', 8]\n", + "['CURSOS', 'cursos', 6]\n", + "['DE', 'de', 2]\n", + "['ANÁLISE', 'análise', 7]\n", + "['DE', 'de', 2]\n", + "['DADOS', 'dados', 5]\n", + "['DO', 'do', 2]\n", + "['BRASIL', 'brasil', 6]\n" + ] + } + ], + "source": [ + "# Exercício 2 - Reescreva o código abaixo, usando a função map(). O resultado final deve ser o mesmo!\n", + "palavras = 'A Data Science Academy oferce os melhores cursos de análise de dados do Brasil'.split()\n", + "resultado = [[w.upper(), w.lower(), len(w)] for w in palavras]\n", + "for i in resultado:\n", + " print (i)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['A', 'a', 1]\n", + "['DATA', 'data', 4]\n", + "['SCIENCE', 'science', 7]\n", + "['ACADEMY', 'academy', 7]\n", + "['OFERCE', 'oferce', 6]\n", + "['OS', 'os', 2]\n", + "['MELHORES', 'melhores', 8]\n", + "['CURSOS', 'cursos', 6]\n", + "['DE', 'de', 2]\n", + "['ANÁLISE', 'análise', 7]\n", + "['DE', 'de', 2]\n", + "['DADOS', 'dados', 5]\n", + "['DO', 'do', 2]\n", + "['BRASIL', 'brasil', 6]\n" + ] + } + ], + "source": [ + "resultado = map(lambda w: [w.upper(), w.lower(), len(w)], palavras)\n", + "for i in resultado:\n", + " print (i)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1, 3, 5, 7], [2, 4, 6, 8]]\n" + ] + } + ], + "source": [ + "# Exercício 3 - Calcule a matriz transposta da matriz abaixo.\n", + "# Caso não saiba o que é matriz transposta, visite este link: https://pt.wikipedia.org/wiki/Matriz_transposta\n", + "# Matriz transposta é um conceito fundamental na construção de redes neurais artificiais, base de sistemas de IA.\n", + "matrix = [[1, 2],[3,4],[5,6],[7,8]]\n", + "transpose = [[row[i] for row in matrix] for i in range(2)]\n", + "print(transpose)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 0]\n", + "[1, 1]\n", + "[4, 8]\n", + "[9, 27]\n", + "[16, 64]\n" + ] + } + ], + "source": [ + "# Exercício 4 - Crie duas funções, uma para elevar um número ao quadrado e outra para elevar ao cubo. \n", + "# Aplique as duas funções aos elementos da lista abaixo. \n", + "# Obs: as duas funções devem ser aplicadas simultaneamente.\n", + "lista = [0, 1, 2, 3, 4]\n", + "\n", + "def square(x):\n", + " return (x**2)\n", + " \n", + "def cube(x):\n", + " return (x**3)\n", + "\n", + "funcs = [square, cube]\n", + "\n", + "for i in lista:\n", + " valor = map(lambda x: x(i), funcs)\n", + " print(list((valor)))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1024, 177147, 16777216]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercício 5 - Abaixo você encontra duas listas. Faça com que cada elemento da listaA seja elevado \n", + "# ao elemento correspondente na listaB.\n", + "listaA = [2, 3, 4]\n", + "listaB = [10, 11, 12]\n", + "list(map(pow, listaA, listaB))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[-5, -4, -3, -2, -1]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exercício 6 - Considerando o range de valores abaixo, use a função filter() para retornar apenas os valores negativos.\n", + "range(-5, 5)\n", + "list(filter((lambda x: x < 0), range(-5,5)))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 3, 5, 7]\n" + ] + } + ], + "source": [ + "# Exercício 7 - Usando a função filter(), encontre os valores que são comuns às duas listas abaixo.\n", + "a = [1,2,3,5,7,9]\n", + "b = [2,3,5,6,7,8]\n", + "print (list(filter(lambda x: x in a, b)))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "05/04/2018 22:16\n", + "05/04/2018 22:16\n" + ] + } + ], + "source": [ + "# Exercício 8 - Considere o código abaixo. Obtenha o mesmo resultado usando o pacote time. \n", + "# Não conhece o pacote time? Pesquise!\n", + "import datetime\n", + "print (datetime.datetime.now().strftime(\"%d/%m/%Y %H:%M\"))\n", + "\n", + "import time\n", + "print (time.strftime(\"%d/%m/%Y %H:%M\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'a': 4, 'b': 5}\n" + ] + } + ], + "source": [ + "# Exercício 9 - Considere os dois dicionários abaixo. \n", + "# Crie um terceiro dicionário com as chaves do dicionário 1 e os valores do dicionário 2.\n", + "dict1 = {'a':1,'b':2}\n", + "dict2 = {'c':4,'d':5}\n", + "\n", + "def trocaValores(d1, d2):\n", + " dicTemp = {}\n", + " \n", + " for d1key, d2val in zip(d1,d2.values()):\n", + " dicTemp[d1key] = d2val\n", + " \n", + " return dicTemp\n", + "\n", + "dict3 = trocaValores(dict1, dict2)\n", + "print(dict3)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g\n", + "h\n" + ] + } + ], + "source": [ + "# Exercício 10 - Considere a lista abaixo e retorne apenas os elementos cujo índice for maior que 5.\n", + "lista = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']\n", + "for indice, valor in enumerate(lista):\n", + " if indice <= 5:\n", + " continue\n", + " else:\n", + " print (valor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fim" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Obrigado - Data Science Academy - facebook.com/dsacademybr" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/Cap04/Notebooks/arquivos/arquivo1.txt b/Cap04/Notebooks/arquivos/arquivo1.txt new file mode 100644 index 00000000..03265a85 --- /dev/null +++ b/Cap04/Notebooks/arquivos/arquivo1.txt @@ -0,0 +1 @@ +Testando gravação de arquivos em Python Acrescentando conteúdo \ No newline at end of file diff --git a/Cap04/Notebooks/arquivos/binary.csv b/Cap04/Notebooks/arquivos/binary.csv new file mode 100755 index 00000000..b2488b11 --- /dev/null +++ b/Cap04/Notebooks/arquivos/binary.csv @@ -0,0 +1,6 @@ +admit,gre,gpa,rank +0,380,3.61,3 +1,660,3.67,3 +1,880,4.00,1 +1,640,3.19,4 +0,520,2.93,4 diff --git "a/JupyterNotebooks/Cap\303\255tulo07/cientista.txt" b/Cap04/Notebooks/arquivos/cientista.txt similarity index 100% rename from "JupyterNotebooks/Cap\303\255tulo07/cientista.txt" rename to Cap04/Notebooks/arquivos/cientista.txt diff --git a/Cap04/Notebooks/arquivos/dados.json b/Cap04/Notebooks/arquivos/dados.json new file mode 100644 index 00000000..6191d72f --- /dev/null +++ b/Cap04/Notebooks/arquivos/dados.json @@ -0,0 +1 @@ +{"nome": "Guido van Rossum", "linguagem": "Python", "similar": ["c", "Modula-3", "lisp"], "users": 1000000} \ No newline at end of file diff --git a/Cap04/Notebooks/arquivos/file.csv b/Cap04/Notebooks/arquivos/file.csv new file mode 100644 index 00000000..a94fc3b8 --- /dev/null +++ b/Cap04/Notebooks/arquivos/file.csv @@ -0,0 +1,4 @@ +01/01/2016, 4 +02/01/2016, 2 +03/01/2016, 10 +04/01/2016, 8 \ No newline at end of file diff --git a/Cap04/Notebooks/arquivos/json_data.txt b/Cap04/Notebooks/arquivos/json_data.txt new file mode 100644 index 00000000..6191d72f --- /dev/null +++ b/Cap04/Notebooks/arquivos/json_data.txt @@ -0,0 +1 @@ +{"nome": "Guido van Rossum", "linguagem": "Python", "similar": ["c", "Modula-3", "lisp"], "users": 1000000} \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo07/numeros.csv" b/Cap04/Notebooks/arquivos/numeros.csv similarity index 100% rename from "JupyterNotebooks/Cap\303\255tulo07/numeros.csv" rename to Cap04/Notebooks/arquivos/numeros.csv diff --git "a/JupyterNotebooks/Cap\303\255tulo07/reduce.png" b/Cap04/Notebooks/arquivos/reduce.png similarity index 100% rename from "JupyterNotebooks/Cap\303\255tulo07/reduce.png" rename to Cap04/Notebooks/arquivos/reduce.png diff --git "a/JupyterNotebooks/Cap\303\255tulo02/salarios.csv" b/Cap04/Notebooks/arquivos/salarios.csv similarity index 100% rename from "JupyterNotebooks/Cap\303\255tulo02/salarios.csv" rename to Cap04/Notebooks/arquivos/salarios.csv diff --git "a/JupyterNotebooks/Cap\303\255tulo07/testandoerros.txt" b/Cap04/Notebooks/arquivos/testandoerros.txt similarity index 100% rename from "JupyterNotebooks/Cap\303\255tulo07/testandoerros.txt" rename to Cap04/Notebooks/arquivos/testandoerros.txt diff --git a/Cap04/Notebooks/arquivos/teste.txt b/Cap04/Notebooks/arquivos/teste.txt new file mode 100644 index 00000000..674e65e6 --- /dev/null +++ b/Cap04/Notebooks/arquivos/teste.txt @@ -0,0 +1,2 @@ +Olá este arquivo foi gerado pelo próprio Jupyter Notebook. +Podemos gerar quantas linhas quisermos e o Jupyter gera o arquivo final. \ No newline at end of file diff --git a/Cap05/Lab03/forca_v1.py b/Cap05/Lab03/forca_v1.py new file mode 100755 index 00000000..ea3e420c --- /dev/null +++ b/Cap05/Lab03/forca_v1.py @@ -0,0 +1,126 @@ +# Hangman Game (Jogo da Forca) +# Programação Orientada a Objetos + +# Import +import random + +# Board (tabuleiro) +board = [''' + +>>>>>>>>>>Hangman<<<<<<<<<< + ++---+ +| | + | + | + | + | +=========''', ''' + ++---+ +| | +O | + | + | + | +=========''', ''' + ++---+ +| | +O | +| | + | + | +=========''', ''' + + +---+ + | | + O | +/| | + | + | +=========''', ''' + + +---+ + | | + O | +/|\ | + | + | +=========''', ''' + + +---+ + | | + O | +/|\ | +/ | + | +=========''', ''' + + +---+ + | | + O | +/|\ | +/ \ | + | +========='''] + + +# Classe +class Hangman: + + # Método Construtor + def __init__(self, word): + + + # Método para adivinhar a letra + def guess(self, letter): + + + # Método para verificar se o jogo terminou + def hangman_over(self): + + + # Método para verificar se o jogador venceu + def hangman_won(self): + + + # Método para não mostrar a letra no board + def hide_word(self): + + + # Método para checar o status do game e imprimir o board na tela + def print_game_status(self): + + +# Função para ler uma palavra de forma aleatória do banco de palavras +def rand_word(): + with open("palavras.txt", "rt") as f: + bank = f.readlines() + return bank[random.randint(0,len(bank))].strip() + + +# Função Main - Execução do Programa +def main(): + + # Objeto + game = Hangman(rand_word()) + + # Enquanto o jogo não tiver terminado, print do status, solicita uma letra e faz a leitura do caracter + + + # Verifica o status do jogo + game.print_game_status() + + # De acordo com o status, imprime mensagem na tela para o usuário + if game.hangman_won(): + print ('\nParabéns! Você venceu!!') + else: + print ('\nGame over! Você perdeu.') + print ('A palavra era ' + game.word) + + print ('\nFoi bom jogar com você! Agora vá estudar!\n') + +# Executa o programa +if __name__ == "__main__": + main() diff --git a/Cap05/Lab03/palavras.txt b/Cap05/Lab03/palavras.txt new file mode 100644 index 00000000..c5f67c95 --- /dev/null +++ b/Cap05/Lab03/palavras.txt @@ -0,0 +1,3 @@ +bola +casa +massa \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Classes.ipynb" b/Cap05/Notebooks/DSA-Python-Cap05-01-Classes.ipynb similarity index 90% rename from "JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Classes.ipynb" rename to Cap05/Notebooks/DSA-Python-Cap05-01-Classes.ipynb index aeff6fb5..55c74b6d 100644 --- "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Classes.ipynb" +++ b/Cap05/Notebooks/DSA-Python-Cap05-01-Classes.ipynb @@ -38,18 +38,16 @@ " \n", " # Este método vai inicializar cada objeto criado a partir desta classe\n", " # O nome deste método é __init__\n", - " # (self) é uma referência a cada atributo de um objeto criado a partir \n", - " # desta classe\n", + " # (self) é uma referência a cada atributo de um objeto criado a partir desta classe\n", " def __init__(self):\n", " \n", - " # Atributos de cada objeto criado a partir desta classe. O self \n", - " # indica que estes são atributos dos objetos\n", + " # Atributos de cada objeto criado a partir desta classe. \n", + " # O self indica que estes são atributos dos objetos\n", " self.titulo = 'O Monge e o Executivo'\n", " self.isbn = 9988888\n", " print(\"Construtor chamado para criar um objeto desta classe\")\n", " \n", - " # Métodos são funções, que recebem como parâmetro atributos do \n", - " # objeto criado \n", + " # Métodos são funções, que recebem como parâmetro atributos do objeto criado \n", " def imprime(self):\n", " print(\"Foi criado o livro %s e ISBN %d\" %(self.titulo, self.isbn))" ] @@ -57,9 +55,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -77,9 +73,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -100,9 +94,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -123,9 +115,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -144,7 +134,7 @@ "cell_type": "code", "execution_count": 6, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -162,9 +152,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -182,9 +170,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -204,9 +190,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -239,9 +223,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -259,9 +241,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -279,9 +259,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -302,9 +280,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -353,9 +329,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Objetos.ipynb" b/Cap05/Notebooks/DSA-Python-Cap05-02-Objetos.ipynb similarity index 86% rename from "JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Objetos.ipynb" rename to Cap05/Notebooks/DSA-Python-Cap05-02-Objetos.ipynb index 66de4119..65f57fae 100644 --- "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Objetos.ipynb" +++ b/Cap05/Notebooks/DSA-Python-Cap05-02-Objetos.ipynb @@ -20,27 +20,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Em Python, tudo é objeto" + "Em Python, tudo é objeto!" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Criando uma lista\n", - "lst_num = [1, 2, 3]" + "lst_num = [\"Data\", \"Science\", \"Academy\", \"Nota\", 10, 10]" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -61,9 +59,27 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lst_num.count(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -79,19 +95,17 @@ ], "source": [ "# Usamos a função type, para verificar o tipo de um objeto\n", - "print (type(10))\n", - "print (type([]))\n", - "print (type(()))\n", - "print (type({}))\n", - "print (type('a'))" + "print(type(10))\n", + "print(type([]))\n", + "print(type(()))\n", + "print(type({}))\n", + "print(type('a'))" ] }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -109,14 +123,14 @@ "# Instância do Carro\n", "palio = Carro()\n", "\n", - "print (type(palio))" + "print(type(palio))" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -130,7 +144,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "collapsed": true }, @@ -142,10 +156,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -153,7 +165,7 @@ "'Pele'" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -165,10 +177,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -176,7 +186,7 @@ "12" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -188,10 +198,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -199,7 +207,7 @@ "9.5" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -211,9 +219,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -229,22 +237,20 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# Criando um objeto chamado Estudante1 a partir da classe Estudantes\n", + "# Criando um objeto chamado Func1 a partir da classe Funcionarios\n", "Func1 = Funcionarios(\"Obama\", 20000)" ] }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -261,10 +267,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -280,10 +284,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { @@ -291,7 +293,7 @@ "True" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -302,10 +304,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "data": { @@ -313,7 +313,7 @@ "True" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -324,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "collapsed": true }, @@ -335,10 +335,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { @@ -346,7 +344,7 @@ "True" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -357,10 +355,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "data": { @@ -368,7 +364,7 @@ "4500" ] }, - "execution_count": 18, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -379,7 +375,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": { "collapsed": true }, @@ -390,10 +386,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -401,7 +395,7 @@ "False" ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -441,9 +435,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-M\303\251todos.ipynb" b/Cap05/Notebooks/DSA-Python-Cap05-03-Metodos.ipynb similarity index 76% rename from "JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-M\303\251todos.ipynb" rename to Cap05/Notebooks/DSA-Python-Cap05-03-Metodos.ipynb index 8bae504c..9dc8ac6c 100644 --- "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-M\303\251todos.ipynb" +++ b/Cap05/Notebooks/DSA-Python-Cap05-03-Metodos.ipynb @@ -25,18 +25,16 @@ "outputs": [], "source": [ "# Criando uma classe chamada Circulo\n", - "class Circulo(object):\n", + "class Circulo():\n", " \n", " # O valor de pi é constante\n", " pi = 3.14\n", "\n", - " # Quando um objeto desta classe for criado, este método será executado \n", - " # e o valor default do raio será 5.\n", + " # Quando um objeto desta classe for criado, este método será executado e o valor default do raio será 5.\n", " def __init__(self, raio = 5):\n", " self.raio = raio \n", "\n", - " # Esse método calcula a área. Self utiliza os atributos deste mesmo \n", - " # objeto\n", + " # Esse método calcula a área. Self utiliza os atributos deste mesmo objeto\n", " def area(self):\n", " return (self.raio * self.raio) * Circulo.pi\n", "\n", @@ -64,9 +62,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -88,8 +84,40 @@ "cell_type": "code", "execution_count": 4, "metadata": { - "collapsed": false + "collapsed": true }, + "outputs": [], + "source": [ + "# Criando outro objeto chamado circ1. Uma instância da classe Circulo()\n", + "# Agora sobrescrevendo o valor do atributo\n", + "circ1 = Circulo(7)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Executando um método da classe Circulo\n", + "circ1.getRaio()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -106,29 +134,27 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Area é: 78.5\n" + "Area igual a: 78.5\n" ] } ], "source": [ "# Imprimindo a area\n", - "print ('Area é: ', circ.area())" + "print('Area igual a: ', circ.area())" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -138,22 +164,20 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "O novo raio é: 3\n" + "Novo raio igual a: 3\n" ] } ], "source": [ "# Imprimindo o novo raio\n", - "print ('O novo raio é: ', circ.getRaio())" + "print ('Novo raio igual a: ', circ.getRaio())" ] }, { @@ -187,9 +211,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Heran\303\247a.ipynb" b/Cap05/Notebooks/DSA-Python-Cap05-04-Heranca.ipynb similarity index 74% rename from "JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Heran\303\247a.ipynb" rename to Cap05/Notebooks/DSA-Python-Cap05-04-Heranca.ipynb index e6ca7f84..cb7f7273 100644 --- "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Heran\303\247a.ipynb" +++ b/Cap05/Notebooks/DSA-Python-Cap05-04-Heranca.ipynb @@ -24,16 +24,17 @@ }, "outputs": [], "source": [ - "# Criando a classe Animal\n", - "class Animal(object):\n", + "# Criando a classe Animal - Super-classe\n", + "class Animal():\n", + " \n", " def __init__(self):\n", - " print (\"Animal criado\")\n", + " print(\"Animal criado\")\n", "\n", " def Identif(self):\n", - " print (\"Animal\")\n", + " print(\"Animal\")\n", "\n", " def comer(self):\n", - " print (\"Comendo\")" + " print(\"Comendo\")" ] }, { @@ -44,25 +45,24 @@ }, "outputs": [], "source": [ - "# Criando a classe Cachorro\n", + "# Criando a classe Cachorro - Sub-classe\n", "class Cachorro(Animal):\n", + " \n", " def __init__(self):\n", " Animal.__init__(self)\n", - " print (\"Objeto Cachorro criado\")\n", + " print(\"Objeto Cachorro criado\")\n", "\n", " def Identif(self):\n", - " print (\"Cachorro\")\n", + " print(\"Cachorro\")\n", "\n", " def latir(self):\n", - " print (\"Au Au!\")" + " print(\"Au Au!\")" ] }, { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -75,15 +75,13 @@ ], "source": [ "# Criando um objeto (Instanciando a classe)\n", - "puppy = Cachorro()" + "rex = Cachorro()" ] }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -94,16 +92,14 @@ } ], "source": [ - "# Executando o método da classe Cachorro (sub classe)\n", - "puppy.Identif()" + "# Executando o método da classe Cachorro (sub-classe)\n", + "rex.Identif()" ] }, { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -114,16 +110,14 @@ } ], "source": [ - "# Executando o método da classe Animal (super classe)\n", - "puppy.comer()" + "# Executando o método da classe Animal (super-classe)\n", + "rex.comer()" ] }, { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -134,8 +128,8 @@ } ], "source": [ - "# Executando o método da classe Cachorro (sub classe)\n", - "puppy.latir()" + "# Executando o método da classe Cachorro (sub-classe)\n", + "rex.latir()" ] }, { @@ -169,9 +163,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-MetodosEspeciais.ipynb" b/Cap05/Notebooks/DSA-Python-Cap05-05-MetodosEspeciais.ipynb similarity index 81% rename from "JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-MetodosEspeciais.ipynb" rename to Cap05/Notebooks/DSA-Python-Cap05-05-MetodosEspeciais.ipynb index 0e21be9c..2c0ebabc 100644 --- "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-MetodosEspeciais.ipynb" +++ b/Cap05/Notebooks/DSA-Python-Cap05-05-MetodosEspeciais.ipynb @@ -4,7 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 5" + "# Data Science Academy - Python Fundamentos - Capítulo 5\n", + "## Download: http://github.com/dsacademybr" ] }, { @@ -23,7 +24,7 @@ "outputs": [], "source": [ "# Criando a classe Livro\n", - "class Livro(object):\n", + "class Livro():\n", " def __init__(self, titulo, autor, paginas):\n", " print (\"Livro criado\")\n", " self.titulo = titulo\n", @@ -35,15 +36,16 @@ " %(self.titulo, self.autor, self.paginas)\n", "\n", " def __len__(self):\n", - " return self.paginas" + " return self.paginas\n", + " \n", + " def len(self):\n", + " return print(\"Páginas do livro com método comum: \", self.paginas)" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -60,9 +62,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -80,9 +80,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -102,9 +100,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -124,8 +120,25 @@ { "cell_type": "code", "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Páginas do livro com método comum: 8816\n" + ] + } + ], + "source": [ + "livro1.len()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -136,10 +149,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -147,7 +158,7 @@ "False" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -187,9 +198,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Exerc\303\255cios-Solu\303\247\303\243o.ipynb" b/Cap05/Notebooks/DSA-Python-Cap05-Exercicios-Solucao.ipynb similarity index 96% rename from "JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Exerc\303\255cios-Solu\303\247\303\243o.ipynb" rename to Cap05/Notebooks/DSA-Python-Cap05-Exercicios-Solucao.ipynb index 71b52067..d4db98f8 100644 --- "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Exerc\303\255cios-Solu\303\247\303\243o.ipynb" +++ b/Cap05/Notebooks/DSA-Python-Cap05-Exercicios-Solucao.ipynb @@ -19,9 +19,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -62,9 +60,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -107,9 +103,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -170,9 +164,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Exerc\303\255cios.ipynb" b/Cap05/Notebooks/DSA-Python-Cap05-Exercicios.ipynb similarity index 94% rename from "JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Exerc\303\255cios.ipynb" rename to Cap05/Notebooks/DSA-Python-Cap05-Exercicios.ipynb index 7a4d31af..55f4549e 100644 --- "a/JupyterNotebooks/Cap\303\255tulo05/DSA-Python-Cap\303\255tulo5-Exerc\303\255cios.ipynb" +++ b/Cap05/Notebooks/DSA-Python-Cap05-Exercicios.ipynb @@ -20,7 +20,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -47,20 +47,20 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ "# Exercício 2 - Crie uma classe chamada Pessoa() com os atributos: nome, cidade, telefone e e-mail. Use pelo menos 2\n", "# métodos especiais na sua classe. Crie um objeto da sua classe e faça uma chamada a pelo menos um dos seus métodos\n", - "# especiais\n" + "# especiais.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -99,9 +99,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap06/Lab03/forca_v2.py b/Cap06/Lab03/forca_v2.py new file mode 100755 index 00000000..075883c8 --- /dev/null +++ b/Cap06/Lab03/forca_v2.py @@ -0,0 +1,153 @@ +# Hangman Game (Jogo da Forca) +# Programação Orientada a Objetos + +# Import +import random + +# Board (tabuleiro) +board = [''' + +>>>>>>>>>>Hangman<<<<<<<<<< + ++---+ +| | + | + | + | + | +=========''', ''' + ++---+ +| | +O | + | + | + | +=========''', ''' + ++---+ +| | +O | +| | + | + | +=========''', ''' + + +---+ + | | + O | +/| | + | + | +=========''', ''' + + +---+ + | | + O | +/|\ | + | + | +=========''', ''' + + +---+ + | | + O | +/|\ | +/ | + | +=========''', ''' + + +---+ + | | + O | +/|\ | +/ \ | + | +========='''] + + +# Classe +class Hangman: + + # Método Construtor + def __init__(self, word): + self.word = word + self.missed_letters = [] + self.guessed_letters = [] + + # Método para adivinhar a letra + def guess(self, letter): + if letter in self.word and letter not in self.guessed_letters: + self.guessed_letters.append(letter) + elif letter not in self.word and letter not in self.missed_letters: + self.missed_letters.append(letter) + else: + return False + return True + + # Método para verificar se o jogo terminou + def hangman_over(self): + return self.hangman_won() or (len(self.missed_letters) == 6) + + # Método para verificar se o jogador venceu + def hangman_won(self): + if '_' not in self.hide_word(): + return True + return False + + # Método para não mostrar a letra no board + def hide_word(self): + rtn = '' + for letter in self.word: + if letter not in self.guessed_letters: + rtn += '_' + else: + rtn += letter + return rtn + + # Método para checar o status do game e imprimir o board na tela + def print_game_status(self): + print (board[len(self.missed_letters)]) + print ('\nPalavra: ' + self.hide_word()) + print ('\nLetras erradas: ',) + for letter in self.missed_letters: + print (letter,) + print () + print ('Letras corretas: ',) + for letter in self.guessed_letters: + print (letter,) + print () + +# Método para ler uma palavra de forma aleatória do banco de palavras +def rand_word(): + with open("palavras.txt", "rt") as f: + bank = f.readlines() + return bank[random.randint(0,len(bank))].strip() + +# Método Main - Execução do Programa +def main(): + + # Objeto + game = Hangman(rand_word()) + + # Enquanto o jogo não tiver terminado, print do status, solicita uma letra e faz a leitura do caracter + while not game.hangman_over(): + game.print_game_status() + user_input = input('\nDigite uma letra: ') + game.guess(user_input) + + # Verifica o status do jogo + game.print_game_status() + + # De acordo com o status, imprime mensagem na tela para o usuário + if game.hangman_won(): + print ('\nParabéns! Você venceu!!') + else: + print ('\nGame over! Você perdeu.') + print ('A palavra era ' + game.word) + + print ('\nFoi bom jogar com você! Agora vá estudar!\n') + +# Executa o programa +if __name__ == "__main__": + main() diff --git a/Cap06/Lab03/palavras.txt b/Cap06/Lab03/palavras.txt new file mode 100644 index 00000000..dc6d8f8b --- /dev/null +++ b/Cap06/Lab03/palavras.txt @@ -0,0 +1,5 @@ +bola + +casa + +massa \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte1 - Criando um Banco de Dados SQLite.ipynb" b/Cap06/Notebooks/DSA-Python-Cap06-01-Criando um Banco de Dados SQLite.ipynb similarity index 87% rename from "JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte1 - Criando um Banco de Dados SQLite.ipynb" rename to Cap06/Notebooks/DSA-Python-Cap06-01-Criando um Banco de Dados SQLite.ipynb index 4c20b35c..f720ccd8 100644 --- "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte1 - Criando um Banco de Dados SQLite.ipynb" +++ b/Cap06/Notebooks/DSA-Python-Cap06-01-Criando um Banco de Dados SQLite.ipynb @@ -9,6 +9,13 @@ "## Download: http://github.com/dsacademybr" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Documentação SQLite: http://www.sqlite.org/docs.html" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -20,7 +27,20 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true + }, + "outputs": [], + "source": [ + "# Reemove o arquivo com o banco de dados SQLite (caso exista)\n", + "import os\n", + "os.remove(\"escola.db\") if os.path.exists(\"escola.db\") else None" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true }, "outputs": [], "source": [ @@ -30,9 +50,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -43,10 +63,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { @@ -54,7 +72,7 @@ "sqlite3.Connection" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -65,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "collapsed": true }, @@ -78,10 +96,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -89,7 +105,7 @@ "sqlite3.Cursor" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -100,9 +116,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -115,18 +131,16 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -138,7 +152,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": true }, @@ -150,9 +164,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -164,9 +178,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -177,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": true }, @@ -189,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "collapsed": true }, @@ -199,47 +213,21 @@ "sql_select = 'select * from cursos'" ] }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Seleciona todos os registros\n", - "cur.execute(sql_select)" - ] - }, { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ - "# Recupera os resultados\n", + "# Seleciona todos os registros e recupera os registros\n", + "cur.execute(sql_select)\n", "dados = cur.fetchall()" ] }, { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -264,7 +252,7 @@ "cell_type": "code", "execution_count": 16, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -283,9 +271,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -359,9 +345,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte2 - Instru\303\247\303\243o Insert no SQLite.ipynb" b/Cap06/Notebooks/DSA-Python-Cap06-02-Insert no SQLite.ipynb similarity index 82% rename from "JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte2 - Instru\303\247\303\243o Insert no SQLite.ipynb" rename to Cap06/Notebooks/DSA-Python-Cap06-02-Insert no SQLite.ipynb index 3b0d8c6b..ab3735b2 100644 --- "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte2 - Instru\303\247\303\243o Insert no SQLite.ipynb" +++ b/Cap06/Notebooks/DSA-Python-Cap06-02-Insert no SQLite.ipynb @@ -20,7 +20,20 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true + }, + "outputs": [], + "source": [ + "# Reemove o arquivo com o banco de dados SQLite (caso exista)\n", + "import os\n", + "os.remove(\"dsa.db\") if os.path.exists(\"dsa.db\") else None" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true }, "outputs": [], "source": [ @@ -39,7 +52,7 @@ " \n", "# Função para inserir uma linha\n", "def data_insert():\n", - " c.execute(\"INSERT INTO produtos VALUES(10, '2016-05-02 14:32:11', 'Teclado', 90 )\")\n", + " c.execute(\"INSERT INTO produtos VALUES(10, '2018-05-02 14:32:11', 'Teclado', 90 )\")\n", " conn.commit()\n", " c.close()\n", " conn.close()" @@ -47,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -59,9 +72,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -100,9 +113,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte3 - Instru\303\247\303\243o Insert no SQLite usando Vari\303\241veis.ipynb" b/Cap06/Notebooks/DSA-Python-Cap06-03-Insert no SQLite usando Variaveis.ipynb similarity index 92% rename from "JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte3 - Instru\303\247\303\243o Insert no SQLite usando Vari\303\241veis.ipynb" rename to Cap06/Notebooks/DSA-Python-Cap06-03-Insert no SQLite usando Variaveis.ipynb index 5f3380ee..f919205c 100644 --- "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte3 - Instru\303\247\303\243o Insert no SQLite usando Vari\303\241veis.ipynb" +++ b/Cap06/Notebooks/DSA-Python-Cap06-03-Insert no SQLite usando Variaveis.ipynb @@ -42,7 +42,7 @@ " \n", "# Função para inserir uma linha\n", "def data_insert():\n", - " c.execute(\"INSERT INTO produtos VALUES('2016-05-02 12:34:45', 'Teclado', 130.00 )\")\n", + " c.execute(\"INSERT INTO produtos VALUES('2018-05-02 12:34:45', 'Teclado', 130.00 )\")\n", " conn.commit()\n", " c.close()\n", " conn.close()\n", @@ -52,8 +52,7 @@ " new_date = datetime.datetime.now()\n", " new_prod_name = 'Monitor'\n", " new_valor = random.randrange(50,100)\n", - " c.execute(\"INSERT INTO produtos (date, prod_name, valor) VALUES (?, ?, ?)\", \n", - " (new_date, new_prod_name, new_valor))\n", + " c.execute(\"INSERT INTO produtos (date, prod_name, valor) VALUES (?, ?, ?)\", (new_date, new_prod_name, new_valor))\n", " conn.commit()" ] }, @@ -61,7 +60,7 @@ "cell_type": "code", "execution_count": 2, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -115,9 +114,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte4 - Instru\303\247\303\243o Select no SQLite.ipynb" b/Cap06/Notebooks/DSA-Python-Cap06-04-Select no SQLite.ipynb similarity index 72% rename from "JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte4 - Instru\303\247\303\243o Select no SQLite.ipynb" rename to Cap06/Notebooks/DSA-Python-Cap06-04-Select no SQLite.ipynb index 904be036..cfb366b7 100644 --- "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte4 - Instru\303\247\303\243o Select no SQLite.ipynb" +++ b/Cap06/Notebooks/DSA-Python-Cap06-04-Select no SQLite.ipynb @@ -78,25 +78,23 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(10, '2016-05-02 14:32:11', 'Teclado', 90.0)\n", - "(11, '2016-05-23 14:13:21.779164', 'Monitor', 70.0)\n", - "(12, '2016-05-23 14:13:22.785889', 'Monitor', 60.0)\n", - "(13, '2016-05-23 14:13:23.791211', 'Monitor', 50.0)\n", - "(14, '2016-05-23 14:13:24.796350', 'Monitor', 92.0)\n", - "(15, '2016-05-23 14:13:25.802804', 'Monitor', 91.0)\n", - "(16, '2016-05-23 14:13:26.805365', 'Monitor', 62.0)\n", - "(17, '2016-05-23 14:13:27.810955', 'Monitor', 83.0)\n", - "(18, '2016-05-23 14:13:28.813340', 'Monitor', 82.0)\n", - "(19, '2016-05-23 14:13:29.819722', 'Monitor', 98.0)\n", - "(20, '2016-05-23 14:13:30.825445', 'Monitor', 71.0)\n" + "(10, '2018-05-02 14:32:11', 'Teclado', 90.0)\n", + "(11, '2018-04-18 15:32:15.064730', 'Monitor', 52.0)\n", + "(12, '2018-04-18 15:32:16.074631', 'Monitor', 98.0)\n", + "(13, '2018-04-18 15:32:17.083495', 'Monitor', 94.0)\n", + "(14, '2018-04-18 15:32:18.092251', 'Monitor', 64.0)\n", + "(15, '2018-04-18 15:32:19.100759', 'Monitor', 74.0)\n", + "(16, '2018-04-18 15:32:20.112758', 'Monitor', 62.0)\n", + "(17, '2018-04-18 15:32:21.120451', 'Monitor', 86.0)\n", + "(18, '2018-04-18 15:32:22.130355', 'Monitor', 57.0)\n", + "(19, '2018-04-18 15:32:23.140021', 'Monitor', 53.0)\n", + "(20, '2018-04-18 15:32:24.150483', 'Monitor', 78.0)\n" ] } ], @@ -108,23 +106,20 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(10, '2016-05-02 14:32:11', 'Teclado', 90.0)\n", - "(11, '2016-05-23 14:13:21.779164', 'Monitor', 70.0)\n", - "(14, '2016-05-23 14:13:24.796350', 'Monitor', 92.0)\n", - "(15, '2016-05-23 14:13:25.802804', 'Monitor', 91.0)\n", - "(16, '2016-05-23 14:13:26.805365', 'Monitor', 62.0)\n", - "(17, '2016-05-23 14:13:27.810955', 'Monitor', 83.0)\n", - "(18, '2016-05-23 14:13:28.813340', 'Monitor', 82.0)\n", - "(19, '2016-05-23 14:13:29.819722', 'Monitor', 98.0)\n", - "(20, '2016-05-23 14:13:30.825445', 'Monitor', 71.0)\n" + "(10, '2018-05-02 14:32:11', 'Teclado', 90.0)\n", + "(12, '2018-04-18 15:32:16.074631', 'Monitor', 98.0)\n", + "(13, '2018-04-18 15:32:17.083495', 'Monitor', 94.0)\n", + "(14, '2018-04-18 15:32:18.092251', 'Monitor', 64.0)\n", + "(15, '2018-04-18 15:32:19.100759', 'Monitor', 74.0)\n", + "(16, '2018-04-18 15:32:20.112758', 'Monitor', 62.0)\n", + "(17, '2018-04-18 15:32:21.120451', 'Monitor', 86.0)\n", + "(20, '2018-04-18 15:32:24.150483', 'Monitor', 78.0)\n" ] } ], @@ -136,25 +131,23 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "90.0\n", - "70.0\n", - "60.0\n", - "50.0\n", - "92.0\n", - "91.0\n", - "62.0\n", - "83.0\n", - "82.0\n", + "52.0\n", "98.0\n", - "71.0\n" + "94.0\n", + "64.0\n", + "74.0\n", + "62.0\n", + "86.0\n", + "57.0\n", + "53.0\n", + "78.0\n" ] } ], @@ -207,9 +200,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte5 - Instru\303\247\303\265es Update e Delete no SQLite.ipynb" b/Cap06/Notebooks/DSA-Python-Cap06-05-Update e Delete no SQLite.ipynb similarity index 71% rename from "JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte5 - Instru\303\247\303\265es Update e Delete no SQLite.ipynb" rename to Cap06/Notebooks/DSA-Python-Cap06-05-Update e Delete no SQLite.ipynb index 63607ff5..8065ed49 100644 --- "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte5 - Instru\303\247\303\265es Update e Delete no SQLite.ipynb" +++ b/Cap06/Notebooks/DSA-Python-Cap06-05-Update e Delete no SQLite.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": { "collapsed": true }, @@ -76,20 +76,20 @@ " \n", "# Update\n", "def atualiza_dados():\n", - " c.execute(\"UPDATE produtos SET valor = 70.00 WHERE valor = 80.0\")\n", + " c.execute(\"UPDATE produtos SET valor = 70.00 WHERE valor = 98.0\")\n", " conn.commit()\n", " \n", "# Delete\n", "def remove_dados():\n", - " c.execute(\"DELETE FROM produtos WHERE valor = 60.0\")\n", + " c.execute(\"DELETE FROM produtos WHERE valor = 62.0\")\n", " conn.commit()" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -98,26 +98,24 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(10, '2016-05-02 14:32:11', 'Teclado', 90.0)\n", - "(11, '2016-05-23 14:13:21.779164', 'Monitor', 70.0)\n", - "(12, '2016-05-23 14:13:22.785889', 'Monitor', 60.0)\n", - "(13, '2016-05-23 14:13:23.791211', 'Monitor', 50.0)\n", - "(14, '2016-05-23 14:13:24.796350', 'Monitor', 92.0)\n", - "(15, '2016-05-23 14:13:25.802804', 'Monitor', 91.0)\n", - "(16, '2016-05-23 14:13:26.805365', 'Monitor', 62.0)\n", - "(17, '2016-05-23 14:13:27.810955', 'Monitor', 83.0)\n", - "(18, '2016-05-23 14:13:28.813340', 'Monitor', 82.0)\n", - "(19, '2016-05-23 14:13:29.819722', 'Monitor', 98.0)\n", - "(20, '2016-05-23 14:13:30.825445', 'Monitor', 71.0)\n" + "(10, '2018-05-02 14:32:11', 'Teclado', 90.0)\n", + "(11, '2018-04-18 15:32:15.064730', 'Monitor', 52.0)\n", + "(12, '2018-04-18 15:32:16.074631', 'Monitor', 70.0)\n", + "(13, '2018-04-18 15:32:17.083495', 'Monitor', 94.0)\n", + "(14, '2018-04-18 15:32:18.092251', 'Monitor', 64.0)\n", + "(15, '2018-04-18 15:32:19.100759', 'Monitor', 74.0)\n", + "(16, '2018-04-18 15:32:20.112758', 'Monitor', 62.0)\n", + "(17, '2018-04-18 15:32:21.120451', 'Monitor', 86.0)\n", + "(18, '2018-04-18 15:32:22.130355', 'Monitor', 57.0)\n", + "(19, '2018-04-18 15:32:23.140021', 'Monitor', 53.0)\n", + "(20, '2018-04-18 15:32:24.150483', 'Monitor', 78.0)\n" ] } ], @@ -127,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { "collapsed": true }, @@ -138,25 +136,23 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(10, '2016-05-02 14:32:11', 'Teclado', 90.0)\n", - "(11, '2016-05-23 14:13:21.779164', 'Monitor', 70.0)\n", - "(13, '2016-05-23 14:13:23.791211', 'Monitor', 50.0)\n", - "(14, '2016-05-23 14:13:24.796350', 'Monitor', 92.0)\n", - "(15, '2016-05-23 14:13:25.802804', 'Monitor', 91.0)\n", - "(16, '2016-05-23 14:13:26.805365', 'Monitor', 62.0)\n", - "(17, '2016-05-23 14:13:27.810955', 'Monitor', 83.0)\n", - "(18, '2016-05-23 14:13:28.813340', 'Monitor', 82.0)\n", - "(19, '2016-05-23 14:13:29.819722', 'Monitor', 98.0)\n", - "(20, '2016-05-23 14:13:30.825445', 'Monitor', 71.0)\n" + "(10, '2018-05-02 14:32:11', 'Teclado', 90.0)\n", + "(11, '2018-04-18 15:32:15.064730', 'Monitor', 52.0)\n", + "(12, '2018-04-18 15:32:16.074631', 'Monitor', 70.0)\n", + "(13, '2018-04-18 15:32:17.083495', 'Monitor', 94.0)\n", + "(14, '2018-04-18 15:32:18.092251', 'Monitor', 64.0)\n", + "(15, '2018-04-18 15:32:19.100759', 'Monitor', 74.0)\n", + "(17, '2018-04-18 15:32:21.120451', 'Monitor', 86.0)\n", + "(18, '2018-04-18 15:32:22.130355', 'Monitor', 57.0)\n", + "(19, '2018-04-18 15:32:23.140021', 'Monitor', 53.0)\n", + "(20, '2018-04-18 15:32:24.150483', 'Monitor', 78.0)\n" ] } ], @@ -195,9 +191,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/Cap06/Notebooks/DSA-Python-Cap06-06-Criando Graficos com Matplotlib e SQLite.ipynb b/Cap06/Notebooks/DSA-Python-Cap06-06-Criando Graficos com Matplotlib e SQLite.ipynb new file mode 100644 index 00000000..5ed23562 --- /dev/null +++ b/Cap06/Notebooks/DSA-Python-Cap06-06-Criando Graficos com Matplotlib e SQLite.ipynb @@ -0,0 +1,941 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Science Academy - Python Fundamentos - Capítulo 6\n", + "\n", + "## Download: http://github.com/dsacademybr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gráficos" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import sqlite3\n", + "import random\n", + "import datetime\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib notebook\n", + " \n", + "# Criando uma conexão\n", + "conn = sqlite3.connect('dsa.db') \n", + "\n", + "# Criando um cursor\n", + "c = conn.cursor()\n", + " \n", + "# Função para criar uma tabela\n", + "def create_table():\n", + " c.execute('CREATE TABLE IF NOT EXISTS produtos(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, date TEXT, '\\\n", + " 'prod_name TEXT, valor REAL)')\n", + " \n", + "# Função para inserir uma linha\n", + "def data_insert():\n", + " c.execute(\"INSERT INTO produtos VALUES(now, 'Teclado', 130 )\")\n", + " conn.commit()\n", + " c.close()\n", + " conn.close()\n", + " \n", + "# Usando variáveis para inserir dados \n", + "def data_insert_var():\n", + " new_date = datetime.datetime.now()\n", + " new_prod_name = 'monitor'\n", + " new_valor = random.randrange(50,100)\n", + " c.execute(\"INSERT INTO produtos (date, prod_name, valor) VALUES (?, ?, ?, ?)\", \n", + " (new_date, new_prod_name, new_valor))\n", + " conn.commit()\n", + " \n", + "# Leitura de dados\n", + "def leitura_todos_dados():\n", + " c.execute(\"SELECT * FROM PRODUTOS\")\n", + " for linha in c.fetchall():\n", + " print(linha)\n", + " \n", + "# Leitura de registros específicos\n", + "def leitura_registros():\n", + " c.execute(\"SELECT * FROM PRODUTOS WHERE valor > 60.0\")\n", + " for linha in c.fetchall():\n", + " print(linha) \n", + " \n", + "# Leitura de colunas específicos\n", + "def leitura_colunas():\n", + " c.execute(\"SELECT * FROM PRODUTOS\")\n", + " for linha in c.fetchall():\n", + " print(linha[3]) \n", + " \n", + "# Update\n", + "def atualiza_dados():\n", + " c.execute(\"UPDATE produtos SET valor = 70.00 WHERE valor > 80.0\")\n", + " conn.commit()\n", + " \n", + "# Delete\n", + "def remove_dados():\n", + " c.execute(\"DELETE FROM produtos WHERE valor = 62.0\")\n", + " conn.commit()\n", + "\n", + "# Gerar gráfico com os dados no banco de dados\n", + "def dados_grafico():\n", + " c.execute(\"SELECT id, valor FROM produtos\")\n", + " ids = []\n", + " valores = []\n", + " dados = c.fetchall()\n", + " for linha in dados:\n", + " ids.append(linha[0])\n", + " valores.append(linha[1])\n", + " \n", + " plt.bar(ids, valores)\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " event.shiftKey = false;\n", - " // Send a \"J\" for go to next cell\n", - " event.which = 74;\n", - " event.keyCode = 74;\n", - " manager.command_mode();\n", - " manager.handle_keydown(event);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Gerando gráficos\n", - "dados_grafico()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fim" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Obrigado - Data Science Academy - facebook.com/dsacademybr" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte9 - Stream de Dados do Twitter com MongoDB, Pandas e Scikit Learn.ipynb" "b/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte9 - Stream de Dados do Twitter com MongoDB, Pandas e Scikit Learn.ipynb" deleted file mode 100644 index 2f573c1d..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo06/Jupyter Notebook Parte9 - Stream de Dados do Twitter com MongoDB, Pandas e Scikit Learn.ipynb" +++ /dev/null @@ -1,394 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 6\n", - "\n", - "## Download: http://github.com/dsacademybr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Stream de Dados do Twitter com MongoDB, Pandas e Scikit Learn" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Para instalar o tweepy, abra um prompt de comando e digite: pip install tweepy" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando os módulos Tweepy, Datetime e Json\n", - "from tweepy.streaming import StreamListener\n", - "from tweepy import OAuthHandler\n", - "from tweepy import Stream\n", - "from datetime import datetime\n", - "import json" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Veja no E-book como criar sua API no Twitter" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Adicione aqui sua Consumer Key\n", - "consumer_key = \"xxxxxxxxxxxxx\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Adicione aqui sua Consumer Secret \n", - "consumer_secret = \"xxxxxxxxxxxxxxx\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Adicione aqui seu Access Token\n", - "access_token = \"xxxxxxxxxxxx\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Adicione aqui seu Access Token Secret\n", - "access_token_secret = \"xxxxxxxxxxxxxx\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Criando as chaves de autenticação\n", - "auth = OAuthHandler(consumer_key, consumer_secret)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "auth.set_access_token(access_token, access_token_secret)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Criando uma classe para capturar os stream de dados do Twitter e \n", - "# armazenar no MongoDB\n", - "class MyListener(StreamListener):\n", - " def on_data(self, dados):\n", - " tweet = json.loads(dados)\n", - " created_at = tweet[\"created_at\"]\n", - " id_str = tweet[\"id_str\"]\n", - " text = tweet[\"text\"]\n", - " obj = {\"created_at\":created_at,\"id_str\":id_str,\"text\":text,}\n", - " tweetind = col.insert_one(obj).inserted_id\n", - " print (obj)\n", - " return True" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Criando o objeto mylistener\n", - "mylistener = MyListener()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Criando o objeto mystream\n", - "mystream = Stream(auth, listener = mylistener)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando do PyMongo o módulo MongoClient\n", - "from pymongo import MongoClient " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Criando a conexão ao MongoDB\n", - "client = MongoClient('localhost', 27017)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Criando o banco de dados twitterdb\n", - "db = client.twitterdb" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Criando a collection \"col\"\n", - "col = db.tweets " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Criando uma lista de palavras chave para buscar nos Tweets\n", - "keywords = ['Big Data', 'Python', 'Data Mining', 'Data Science']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Iniciando o filtro e gravando os tweets no MongoDB\n", - "mystream.filter(track=keywords)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## --> Pressione o botão Stop na barra de ferramentas para encerrar a captura dos Tweets" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "mystream.disconnect()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Verificando um documento no collection\n", - "col.find_one()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# criando um dataset com dados retornados do MongoDB\n", - "dataset = [{\"created_at\": item[\"created_at\"],\n", - " \"text\": item[\"text\"],\n", - " } for item in col.find()]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Importando o módulo Pandas para trabalhar com datasets em Python\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Criando um dataframe a partir do dataset \n", - "df = pd.DataFrame(dataset)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Imprimindo o dataframe\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando o módulo Scikit Learn\n", - "from sklearn.feature_extraction.text import CountVectorizer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Usando o método CountVectorizer para criar uma matriz de documentos\n", - "cv = CountVectorizer()\n", - "count_matrix = cv.fit_transform(df.text)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Contando o número de ocorrências das principais palavras em nosso dataset\n", - "word_count = pd.DataFrame(cv.get_feature_names(), columns=[\"word\"])\n", - "word_count[\"count\"] = count_matrix.sum(axis=0).tolist()[0]\n", - "word_count = word_count.sort_values(\"count\", ascending=False).reset_index(drop=True)\n", - "word_count[:50]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fim" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Obrigado - Data Science Academy - facebook.com/dsacademybr" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git "a/JupyterNotebooks/Cap\303\255tulo06/dsa.db" "b/JupyterNotebooks/Cap\303\255tulo06/dsa.db" deleted file mode 100644 index 80f9332b..00000000 Binary files "a/JupyterNotebooks/Cap\303\255tulo06/dsa.db" and /dev/null differ diff --git "a/JupyterNotebooks/Cap\303\255tulo06/escola.db" "b/JupyterNotebooks/Cap\303\255tulo06/escola.db" deleted file mode 100644 index 59e28251..00000000 Binary files "a/JupyterNotebooks/Cap\303\255tulo06/escola.db" and /dev/null differ diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-M\303\263dulos e Pacotes.ipynb" "b/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-M\303\263dulos e Pacotes.ipynb" deleted file mode 100644 index 3b8d1a99..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-M\303\263dulos e Pacotes.ipynb" +++ /dev/null @@ -1,1421 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", - "\n", - "## Download: http://github.com/dsacademybr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Módulos e Pacotes\n", - "\n", - "Biblioteca Padrão" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando um módulo em Python\n", - "import math" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['__doc__',\n", - " '__file__',\n", - " '__loader__',\n", - " '__name__',\n", - " '__package__',\n", - " '__spec__',\n", - " 'acos',\n", - " 'acosh',\n", - " 'asin',\n", - " 'asinh',\n", - " 'atan',\n", - " 'atan2',\n", - " 'atanh',\n", - " 'ceil',\n", - " 'copysign',\n", - " 'cos',\n", - " 'cosh',\n", - " 'degrees',\n", - " 'e',\n", - " 'erf',\n", - " 'erfc',\n", - " 'exp',\n", - " 'expm1',\n", - " 'fabs',\n", - " 'factorial',\n", - " 'floor',\n", - " 'fmod',\n", - " 'frexp',\n", - " 'fsum',\n", - " 'gamma',\n", - " 'gcd',\n", - " 'hypot',\n", - " 'inf',\n", - " 'isclose',\n", - " 'isfinite',\n", - " 'isinf',\n", - " 'isnan',\n", - " 'ldexp',\n", - " 'lgamma',\n", - " 'log',\n", - " 'log10',\n", - " 'log1p',\n", - " 'log2',\n", - " 'modf',\n", - " 'nan',\n", - " 'pi',\n", - " 'pow',\n", - " 'radians',\n", - " 'sin',\n", - " 'sinh',\n", - " 'sqrt',\n", - " 'tan',\n", - " 'tanh',\n", - " 'trunc']" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Verificando todos os métodos disponíveis no módulo\n", - "dir(math)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "5.0" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Usando um dos métodos do módulo math\n", - "math.sqrt(25)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando apenas um dos métodos do módulo math\n", - "from math import sqrt" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "3.0" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Usando o método\n", - "sqrt(9)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']\n" - ] - } - ], - "source": [ - "# Imprimindo todos os métodos do módulo math\n", - "print(dir(math))" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on built-in function sqrt in module math:\n", - "\n", - "sqrt(...)\n", - " sqrt(x)\n", - " \n", - " Return the square root of x.\n", - "\n" - ] - } - ], - "source": [ - "# Help do método sqrt do módulo math\n", - "help(sqrt)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import random" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Laranja'" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "random.choice(['Maça', 'Banana', 'Laranja'])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[66, 16, 91, 95, 85, 87, 38, 77, 62, 14]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "random.sample(range(100), 10)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import statistics" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "dados = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1.6071428571428572" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "statistics.mean(dados)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1.25" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "statistics.median(dados)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'/opt/DSA/PythonFundamentos/JupyterNotebooks/Capítulo07'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.getcwd()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['CLD_CONTINUED', 'CLD_DUMPED', 'CLD_EXITED', 'CLD_TRAPPED', 'EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST', 'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER', 'EX_OK', 'EX_OSERR', 'EX_OSFILE', 'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE', 'EX_USAGE', 'F_LOCK', 'F_OK', 'F_TEST', 'F_TLOCK', 'F_ULOCK', 'MutableMapping', 'NGROUPS_MAX', 'O_ACCMODE', 'O_APPEND', 'O_ASYNC', 'O_CREAT', 'O_DIRECTORY', 'O_EXCL', 'O_EXLOCK', 'O_NDELAY', 'O_NOCTTY', 'O_NOFOLLOW', 'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_SHLOCK', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'PRIO_PGRP', 'PRIO_PROCESS', 'PRIO_USER', 'P_ALL', 'P_NOWAIT', 'P_NOWAITO', 'P_PGID', 'P_PID', 'P_WAIT', 'RTLD_GLOBAL', 'RTLD_LAZY', 'RTLD_LOCAL', 'RTLD_NODELETE', 'RTLD_NOLOAD', 'RTLD_NOW', 'R_OK', 'SCHED_FIFO', 'SCHED_OTHER', 'SCHED_RR', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'ST_NOSUID', 'ST_RDONLY', 'TMP_MAX', 'WCONTINUED', 'WCOREDUMP', 'WEXITED', 'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED', 'WIFSTOPPED', 'WNOHANG', 'WNOWAIT', 'WSTOPPED', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_get_exports_list', '_putenv', '_spawnvef', '_unsetenv', '_wrap_close', 'abort', 'access', 'altsep', 'chdir', 'chflags', 'chmod', 'chown', 'chroot', 'close', 'closerange', 'confstr', 'confstr_names', 'cpu_count', 'ctermid', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'environb', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fchdir', 'fchmod', 'fchown', 'fdopen', 'fork', 'forkpty', 'fpathconf', 'fsdecode', 'fsencode', 'fstat', 'fstatvfs', 'fsync', 'ftruncate', 'get_blocking', 'get_exec_path', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getegid', 'getenv', 'getenvb', 'geteuid', 'getgid', 'getgrouplist', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getpriority', 'getsid', 'getuid', 'initgroups', 'isatty', 'kill', 'killpg', 'lchflags', 'lchmod', 'lchown', 'linesep', 'link', 'listdir', 'lockf', 'lseek', 'lstat', 'major', 'makedev', 'makedirs', 'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', 'openpty', 'pardir', 'path', 'pathconf', 'pathconf_names', 'pathsep', 'pipe', 'popen', 'pread', 'putenv', 'pwrite', 'read', 'readlink', 'readv', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sched_get_priority_max', 'sched_get_priority_min', 'sched_yield', 'sendfile', 'sep', 'set_blocking', 'set_inheritable', 'setegid', 'seteuid', 'setgid', 'setgroups', 'setpgid', 'setpgrp', 'setpriority', 'setregid', 'setreuid', 'setsid', 'setuid', 'spawnl', 'spawnle', 'spawnlp', 'spawnlpe', 'spawnv', 'spawnve', 'spawnvp', 'spawnvpe', 'st', 'stat', 'stat_float_times', 'stat_result', 'statvfs', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sync', 'sys', 'sysconf', 'sysconf_names', 'system', 'tcgetpgrp', 'tcsetpgrp', 'terminal_size', 'times', 'times_result', 'truncate', 'ttyname', 'umask', 'uname', 'uname_result', 'unlink', 'unsetenv', 'urandom', 'utime', 'wait', 'wait3', 'wait4', 'waitpid', 'walk', 'write', 'writev']\n" - ] - } - ], - "source": [ - "print(dir(os))" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import sys" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Teste" - ] - } - ], - "source": [ - "sys.stdout.write('Teste')" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'3.5.1 |Anaconda 4.0.0 (x86_64)| (default, Dec 7 2015, 11:24:55) \\n[GCC 4.2.1 (Apple Inc. build 5577)]'" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sys.version" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe', '_home', '_mercurial', '_xoptions', 'abiflags', 'api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'ps3', 'set_coroutine_wrapper', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions']\n" - ] - } - ], - "source": [ - "print(dir(sys))" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando o módulo request do pacote urllib, usado para trazer url's \n", - "# para dentro do nosso ambiente Python\n", - "import urllib.request" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Variável resposta armazena o objeto de conexão à url passada como \n", - "# parâmetro\n", - "resposta = urllib.request.urlopen('http://python.org')" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# Objeto resposta\n", - "print(resposta)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Chamando o método read() do objeto resposta e armazenando o código \n", - "# html na variável html\n", - "html = resposta.read()" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "b'\\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 Welcome to Python.org\\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

Notice: While Javascript is not essential for this website, your interaction with the content will be limited. Please turn Javascript on for the full experience.

\\n
\\n\\n \\n\\n \\n
\\n\\n \\n\\n
\\n\\n \\n
\\n
\\n\\n

\\n \"python™\"\\n

\\n\\n
\\n\\n \\n Menu
\\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
    # Python 3: Fibonacci series up to n\\r\\n>>> def fib(n):\\r\\n>>>     a, b = 0, 1\\r\\n>>>     while a < n:\\r\\n>>>         print(a, end=\\' \\')\\r\\n>>>         a, b = b, a+b\\r\\n>>>     print()\\r\\n>>> fib(1000)\\r\\n0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
    \\n

    Functions Defined

    \\r\\n

    The core of extensible programming is defining functions. Python allows mandatory and optional arguments, keyword arguments, and even arbitrary argument lists. More about defining functions in Python 3

    \\n
  • \\n \\n
  • \\n
    # Python 3: List comprehensions\\r\\n>>> fruits = [\\'Banana\\', \\'Apple\\', \\'Lime\\']\\r\\n>>> loud_fruits = [fruit.upper() for fruit in fruits]\\r\\n>>> print(loud_fruits)\\r\\n[\\'BANANA\\', \\'APPLE\\', \\'LIME\\']\\r\\n\\r\\n# List and the enumerate function\\r\\n>>> list(enumerate(fruits))\\r\\n[(0, \\'Banana\\'), (1, \\'Apple\\'), (2, \\'Lime\\')]
    \\n

    Compound Data Types

    \\r\\n

    Lists (known as arrays in other languages) are one of the compound data types that Python understands. Lists can be indexed, sliced and manipulated with other built-in functions. More about lists in Python 3

    \\n
  • \\n \\n
  • \\n
    # Python 3: Simple arithmetic\\r\\n>>> 1 / 2\\r\\n0.5\\r\\n>>> 2 ** 3\\r\\n8\\r\\n>>> 17 / 3  # classic division returns a float\\r\\n5.666666666666667\\r\\n>>> 17 // 3  # floor division\\r\\n5
    \\n

    Intuitive Interpretation

    \\r\\n

    Calculations are simple with Python, and expression syntax is straightforward: the operators +, -, * and / work as expected; parentheses () can be used for grouping. More about simple math functions in Python 3.

    \\n
  • \\n \\n
  • \\n
    # Python 3: Simple output (with Unicode)\\r\\n>>> print(\"Hello, I\\'m Python!\")\\r\\nHello, I\\'m Python!\\r\\n\\r\\n# Input, assignment\\r\\n>>> name = input(\\'What is your name?\\\\n\\')\\r\\n>>> print(\\'Hi, %s.\\' % name)\\r\\nWhat is your name?\\r\\nPython\\r\\nHi, Python.
    \\n

    Quick & Easy to Learn

    \\r\\n

    Experienced programmers in any other language can pick up Python very quickly, and beginners find the clean syntax and indentation structure easy to learn. Whet your appetite with our Python 3 overview.

    \\r\\n
    \\n
  • \\n \\n
  • \\n
    # For loop on a list\\r\\n>>> numbers = [2, 4, 6, 8]\\r\\n>>> product = 1\\r\\n>>> for number in numbers:\\r\\n...    product = product * number\\r\\n... \\r\\n>>> print(\\'The product is:\\', product)\\r\\nThe product is: 384
    \\n

    All the Flow You’d Expect

    \\r\\n

    Python knows the usual control flow statements that other languages speak — if, for, while and range — with some of its own twists, of course. More control flow tools in Python 3

    \\n
  • \\n \\n
\\n
\\n\\n\\n
\\n\\n \\n
\\n

Python is a programming language that lets you work quickly and integrate systems more effectively. Learn More

\\n
\\n\\n\\n
\\n
\\n\\n
\\n \\n
\\n\\n
\\n\\n \\n \\n\\n \\n\\n \\n\\n
\\n\\n
\\n

Get Started

\\r\\n

Whether you\\'re new to programming or an experienced developer, it\\'s easy to learn and use Python.

\\r\\n

Start with our Beginner’s Guide

\\n
\\n\\n
\\n

Download

\\n

Python source code and installers are available for download for all versions! Not sure which version to use? Check here.

\\n

Latest: Python 3.5.1 - Python 2.7.11

\\n
\\n\\n
\\n

Docs

\\r\\n

Documentation for Python\\'s standard library, along with tutorials and guides, are available online.

\\r\\n

docs.python.org

\\n
\\n\\n
\\n

Jobs

\\r\\n

Looking for work or have a Python related position that you\\'re trying to hire for? Our relaunched community-run job board is the place to go.

\\r\\n

jobs.python.org

\\n
\\n\\n
\\n\\n
\\n\\n \\n\\n
\\n \\n
\\n \\n

Upcoming Events

\\n

More

\\n \\n \\n
\\n\\n
\\n\\n
\\n\\n
\\n\\n \\n\\n
\\n
\\n

Use Python for…

\\r\\n

More

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

\\n >>> Python Enhancement Proposals (PEPs): The future of Python is discussed here.\\n RSS\\n

\\n\\n\\n \\n \\n
\\n\\n
\\n\\n
\\n \\n

\\r\\n >>> Python Software Foundation\\r\\n

\\r\\n

The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers. Learn more

\\r\\n

\\r\\n Become a Member\\r\\n Donate to the PSF\\r\\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" - ] - } - ], - "source": [ - "# Imprimindo html\n", - "print(html)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n4f8B3j55GpAY3JcAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Importando o arquivo com a cotação das ações da Petrobras, lendo o \n", - "# arquivo com o Pandas e gerando um gráfico com Matplotlib\n", - "from urllib.request import urlopen\n", - "import matplotlib.pyplot as plt\n", - "import pandas\n", - "%matplotlib inline\n", - " \n", - "endereco = 'http://real-chart.finance.yahoo.com/table.csv?s=PETR4.SA&d=9&e=17&f=2015&g=d&a=0&b=3&c=2000&ignore=.csv'\n", - "arquivo = urlopen(endereco)\n", - " \n", - "petrobras = pandas.read_csv(arquivo, index_col=0, parse_dates=True)\n", - "petrobras.plot(y='Adj Close')\n", - " \n", - "plt.xlabel('Ano')\n", - "plt.ylabel('Cotação')\n", - "plt.legend().set_visible(False)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import pandas " - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from pandas import DataFrame" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\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", - "
OpenHighLowCloseVolumeAdj Close
Date
2015-10-167.998.087.817.95429638007.95
2015-10-158.008.077.678.00614441008.00
2015-10-148.078.237.897.96753391007.96
2015-10-138.368.478.078.13561006008.13
2015-10-128.808.808.808.8008.80
\n", - "
" - ], - "text/plain": [ - " Open High Low Close Volume Adj Close\n", - "Date \n", - "2015-10-16 7.99 8.08 7.81 7.95 42963800 7.95\n", - "2015-10-15 8.00 8.07 7.67 8.00 61444100 8.00\n", - "2015-10-14 8.07 8.23 7.89 7.96 75339100 7.96\n", - "2015-10-13 8.36 8.47 8.07 8.13 56100600 8.13\n", - "2015-10-12 8.80 8.80 8.80 8.80 0 8.80" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "petrobras.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "df = pd.DataFrame(petrobras)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
OpenHighLowCloseVolumeAdj Close
Date
2015-10-167.990008.080007.810007.95000429638007.95000
2015-10-158.000008.070007.670008.00000614441008.00000
2015-10-148.070008.230007.890007.96000753391007.96000
2015-10-138.360008.470008.070008.13000561006008.13000
2015-10-128.800008.800008.800008.8000008.80000
2015-10-099.020009.070008.580008.80000718852008.80000
2015-10-088.460008.840008.280008.75000686700008.75000
2015-10-078.510008.900008.270008.470001166106008.47000
2015-10-067.860008.340007.840008.19000812593008.19000
2015-10-057.900008.140007.750007.82000683503007.82000
2015-10-026.990007.830006.900007.77000888914007.77000
2015-10-017.310007.460006.990007.02000692965007.02000
2015-09-307.250007.260006.970007.240001077795007.24000
2015-09-296.540006.790006.500006.59000523876006.59000
2015-09-286.740006.750006.440006.44000374669006.44000
2015-09-257.120007.220006.770006.82000448431006.82000
2015-09-246.610007.140006.600006.96000565773006.96000
2015-09-236.960007.160006.700006.82000647748006.82000
2015-09-227.240007.240006.810006.97000667207006.97000
2015-09-217.660007.680007.300007.30000410636007.30000
2015-09-187.750007.760007.500007.60000680970007.60000
2015-09-178.050008.110007.860007.86000728876007.86000
2015-09-167.770008.240007.740008.14000666134008.14000
2015-09-157.650007.870007.540007.65000351029007.65000
2015-09-147.700007.820007.460007.72000528514007.72000
2015-09-117.940007.990007.590007.66000536473007.66000
2015-09-107.900008.150007.810007.97000628587007.97000
2015-09-098.810008.900008.360008.39000387063008.39000
2015-09-088.700008.790008.580008.64000293830008.64000
2015-09-078.510008.510008.510008.5100008.51000
.....................
2000-02-110.423040.423040.423040.42304252979200003.92447
2000-02-100.437040.437040.437040.43704186009600004.05435
2000-02-090.450000.450000.450000.45000156006400004.17458
2000-02-080.460000.460000.460000.46000314982400004.26735
2000-02-070.450000.450000.450000.45000206131200004.17458
2000-02-040.447040.447040.447040.44704211993600004.14712
2000-02-030.436000.436000.436000.43600259507200004.04470
2000-02-020.424000.424000.424000.42400142720000003.93338
2000-02-010.416000.416000.416000.41600236723200003.85917
2000-01-310.408080.408080.408080.40808322662400003.78569
2000-01-280.415040.415040.415040.41504178944000003.85026
2000-01-270.415040.415040.415040.41504383795200003.85026
2000-01-260.418000.418000.418000.41800259174400003.87772
2000-01-250.413040.413040.413040.4130403.83171
2000-01-240.413040.413040.413040.41304183859200003.83171
2000-01-210.416000.416000.416000.41600175129600003.85917
2000-01-200.425040.425040.425040.42504262681600003.94303
2000-01-190.426000.426000.426000.42600388838400003.95193
2000-01-180.429040.429040.429040.42904179251200003.98014
2000-01-170.427040.427040.427040.42704165734400003.96158
2000-01-140.432000.432000.432000.43200166579200004.00760
2000-01-130.426000.426000.426000.42600263833600003.95193
2000-01-120.438640.438640.438640.43864233011200004.06919
2000-01-110.438000.438000.438000.43800239872000004.06326
2000-01-100.449040.449040.449040.44904195635200004.16567
2000-01-070.440000.440000.440000.44000209126400004.08181
2000-01-060.438000.438000.438000.43800340556800004.06326
2000-01-050.439520.439520.439520.43952430336000004.07736
2000-01-040.444000.444000.444000.44400288614400004.11892
2000-01-030.470000.470000.470000.47000353894400004.36012
\n", - "

3874 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " Open High Low Close Volume Adj Close\n", - "Date \n", - "2015-10-16 7.99000 8.08000 7.81000 7.95000 42963800 7.95000\n", - "2015-10-15 8.00000 8.07000 7.67000 8.00000 61444100 8.00000\n", - "2015-10-14 8.07000 8.23000 7.89000 7.96000 75339100 7.96000\n", - "2015-10-13 8.36000 8.47000 8.07000 8.13000 56100600 8.13000\n", - "2015-10-12 8.80000 8.80000 8.80000 8.80000 0 8.80000\n", - "2015-10-09 9.02000 9.07000 8.58000 8.80000 71885200 8.80000\n", - "2015-10-08 8.46000 8.84000 8.28000 8.75000 68670000 8.75000\n", - "2015-10-07 8.51000 8.90000 8.27000 8.47000 116610600 8.47000\n", - "2015-10-06 7.86000 8.34000 7.84000 8.19000 81259300 8.19000\n", - "2015-10-05 7.90000 8.14000 7.75000 7.82000 68350300 7.82000\n", - "2015-10-02 6.99000 7.83000 6.90000 7.77000 88891400 7.77000\n", - "2015-10-01 7.31000 7.46000 6.99000 7.02000 69296500 7.02000\n", - "2015-09-30 7.25000 7.26000 6.97000 7.24000 107779500 7.24000\n", - "2015-09-29 6.54000 6.79000 6.50000 6.59000 52387600 6.59000\n", - "2015-09-28 6.74000 6.75000 6.44000 6.44000 37466900 6.44000\n", - "2015-09-25 7.12000 7.22000 6.77000 6.82000 44843100 6.82000\n", - "2015-09-24 6.61000 7.14000 6.60000 6.96000 56577300 6.96000\n", - "2015-09-23 6.96000 7.16000 6.70000 6.82000 64774800 6.82000\n", - "2015-09-22 7.24000 7.24000 6.81000 6.97000 66720700 6.97000\n", - "2015-09-21 7.66000 7.68000 7.30000 7.30000 41063600 7.30000\n", - "2015-09-18 7.75000 7.76000 7.50000 7.60000 68097000 7.60000\n", - "2015-09-17 8.05000 8.11000 7.86000 7.86000 72887600 7.86000\n", - "2015-09-16 7.77000 8.24000 7.74000 8.14000 66613400 8.14000\n", - "2015-09-15 7.65000 7.87000 7.54000 7.65000 35102900 7.65000\n", - "2015-09-14 7.70000 7.82000 7.46000 7.72000 52851400 7.72000\n", - "2015-09-11 7.94000 7.99000 7.59000 7.66000 53647300 7.66000\n", - "2015-09-10 7.90000 8.15000 7.81000 7.97000 62858700 7.97000\n", - "2015-09-09 8.81000 8.90000 8.36000 8.39000 38706300 8.39000\n", - "2015-09-08 8.70000 8.79000 8.58000 8.64000 29383000 8.64000\n", - "2015-09-07 8.51000 8.51000 8.51000 8.51000 0 8.51000\n", - "... ... ... ... ... ... ...\n", - "2000-02-11 0.42304 0.42304 0.42304 0.42304 25297920000 3.92447\n", - "2000-02-10 0.43704 0.43704 0.43704 0.43704 18600960000 4.05435\n", - "2000-02-09 0.45000 0.45000 0.45000 0.45000 15600640000 4.17458\n", - "2000-02-08 0.46000 0.46000 0.46000 0.46000 31498240000 4.26735\n", - "2000-02-07 0.45000 0.45000 0.45000 0.45000 20613120000 4.17458\n", - "2000-02-04 0.44704 0.44704 0.44704 0.44704 21199360000 4.14712\n", - "2000-02-03 0.43600 0.43600 0.43600 0.43600 25950720000 4.04470\n", - "2000-02-02 0.42400 0.42400 0.42400 0.42400 14272000000 3.93338\n", - "2000-02-01 0.41600 0.41600 0.41600 0.41600 23672320000 3.85917\n", - "2000-01-31 0.40808 0.40808 0.40808 0.40808 32266240000 3.78569\n", - "2000-01-28 0.41504 0.41504 0.41504 0.41504 17894400000 3.85026\n", - "2000-01-27 0.41504 0.41504 0.41504 0.41504 38379520000 3.85026\n", - "2000-01-26 0.41800 0.41800 0.41800 0.41800 25917440000 3.87772\n", - "2000-01-25 0.41304 0.41304 0.41304 0.41304 0 3.83171\n", - "2000-01-24 0.41304 0.41304 0.41304 0.41304 18385920000 3.83171\n", - "2000-01-21 0.41600 0.41600 0.41600 0.41600 17512960000 3.85917\n", - "2000-01-20 0.42504 0.42504 0.42504 0.42504 26268160000 3.94303\n", - "2000-01-19 0.42600 0.42600 0.42600 0.42600 38883840000 3.95193\n", - "2000-01-18 0.42904 0.42904 0.42904 0.42904 17925120000 3.98014\n", - "2000-01-17 0.42704 0.42704 0.42704 0.42704 16573440000 3.96158\n", - "2000-01-14 0.43200 0.43200 0.43200 0.43200 16657920000 4.00760\n", - "2000-01-13 0.42600 0.42600 0.42600 0.42600 26383360000 3.95193\n", - "2000-01-12 0.43864 0.43864 0.43864 0.43864 23301120000 4.06919\n", - "2000-01-11 0.43800 0.43800 0.43800 0.43800 23987200000 4.06326\n", - "2000-01-10 0.44904 0.44904 0.44904 0.44904 19563520000 4.16567\n", - "2000-01-07 0.44000 0.44000 0.44000 0.44000 20912640000 4.08181\n", - "2000-01-06 0.43800 0.43800 0.43800 0.43800 34055680000 4.06326\n", - "2000-01-05 0.43952 0.43952 0.43952 0.43952 43033600000 4.07736\n", - "2000-01-04 0.44400 0.44400 0.44400 0.44400 28861440000 4.11892\n", - "2000-01-03 0.47000 0.47000 0.47000 0.47000 35389440000 4.36012\n", - "\n", - "[3874 rows x 6 columns]" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fim" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "### Obrigado - Data Science Academy - facebook.com/dsacademybr" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Python-Debugger.ipynb" "b/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Python-Debugger.ipynb" deleted file mode 100644 index e3754872..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Python-Debugger.ipynb" +++ /dev/null @@ -1,158 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", - "\n", - "## Download: http://github.com/dsacademybr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python Debugger" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "a = [4,5,6]\n", - "b = 2\n", - "c = 3" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "resultado = b + c\n", - "print (resultado)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "ename": "TypeError", - "evalue": "can only concatenate list (not \"int\") to list", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresultado2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mresultado2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: can only concatenate list (not \"int\") to list" - ] - } - ], - "source": [ - "resultado2 = a + b\n", - "print (resultado2)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import pdb" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "--Return--\n", - "> (8)()->None\n", - "-> pdb.set_trace()\n", - "(Pdb) a + b\n", - "(Pdb) [4,5,6] + 2\n", - "*** TypeError: can only concatenate list (not \"int\") to list\n" - ] - } - ], - "source": [ - "a = [4,5,6]\n", - "b = 2\n", - "c = 3\n", - "\n", - "resultado = b + c\n", - "print (resultado)\n", - "\n", - "pdb.set_trace()\n", - "\n", - "resultado2 = a + b\n", - "print (resultado2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# FIM" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Obrigado - Data Science Academy - facebook.com/dsacademybr" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Python-Express\303\265es-Regulares.ipynb" "b/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Python-Express\303\265es-Regulares.ipynb" deleted file mode 100644 index da2bef6d..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo07/DSA-Python-Cap\303\255tulo7-Python-Express\303\265es-Regulares.ipynb" +++ /dev/null @@ -1,538 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 7\n", - "\n", - "## Download: http://github.com/dsacademybr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Expressões Regulares\n", - "\n", - "Uma expressão regular é um método formal de se especificar um padrão de texto.\n", - "\n", - "Mais detalhadamente, é uma composição de símbolos, caracteres com funções especiais, que, agrupados entre si e com caracteres literais, formam uma sequência, uma expressão. Essa expressão é interpretada como uma regra, que indicará sucesso se uma entrada de dados qualquer casar com essa regra, ou seja, obedecer exatamente a todas as suas condições." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando o módulo re (regular expression)\n", - "# Esse módulo fornece operações com expressões regulares (ER)\n", - "import re" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Lista de termos para busca\n", - "lista_pesquisa = ['informações', 'Negócios']" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Text to parse\n", - "texto = 'Existem muitos desafios para o Big Data. O primeiro deles é a coleta dos dados, pois fala-se aqui de '\\\n", - "'enormes quantidades sendo geradas em uma taxa maior do que um servidor comum seria capaz de processar e armazenar. '\\\n", - "'O segundo desafio é justamente o de processar essas informações. Com elas então distribuídas, a aplicação deve ser '\\\n", - "'capaz de consumir partes das informações e gerar pequenas quantidades de dados processados, que serão calculados em '\\\n", - "'conjunto depois para criar o resultado final. Outro desafio é a exibição dos resultados, de forma que as informações '\\\n", - "'estejam disponíveis de forma clara para os tomadores de decisão.'\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Buscando por \"informações\" em: \n", - "\n", - "\"Existem muitos desafios para o Big Data. O primeiro deles é a coleta dos dados, pois fala-se aqui de enormes quantidades sendo geradas em uma taxa maior do que um servidor comum seria capaz de processar e armazenar. O segundo desafio é justamente o de processar essas informações. Com elas então distribuídas, a aplicação deve ser capaz de consumir partes das informações e gerar pequenas quantidades de dados processados, que serão calculados em conjunto depois para criar o resultado final. Outro desafio é a exibição dos resultados, de forma que as informações estejam disponíveis de forma clara para os tomadores de decisão.\"\n", - "\n", - "\n", - "Palavra encontrada. \n", - "\n", - "\n", - "\n", - "Buscando por \"Negócios\" em: \n", - "\n", - "\"Existem muitos desafios para o Big Data. O primeiro deles é a coleta dos dados, pois fala-se aqui de enormes quantidades sendo geradas em uma taxa maior do que um servidor comum seria capaz de processar e armazenar. O segundo desafio é justamente o de processar essas informações. Com elas então distribuídas, a aplicação deve ser capaz de consumir partes das informações e gerar pequenas quantidades de dados processados, que serão calculados em conjunto depois para criar o resultado final. Outro desafio é a exibição dos resultados, de forma que as informações estejam disponíveis de forma clara para os tomadores de decisão.\"\n", - "\n", - "\n", - "Palavra não encontrada.\n", - "\n", - "\n" - ] - } - ], - "source": [ - "# Exemplo básico de Data Mining\n", - "for item in lista_pesquisa:\n", - " print ('Buscando por \"%s\" em: \\n\\n\"%s\"' % (item, texto))\n", - " \n", - " # Verificando se o termo de pesquisa existe no texto\n", - " if re.search(item, texto):\n", - " print ('\\n')\n", - " print ('Palavra encontrada. \\n')\n", - " print ('\\n')\n", - " else:\n", - " print ('\\n')\n", - " print ('Palavra não encontrada.')\n", - " print ('\\n')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Termo usado para dividir uma string\n", - "split_term = '@'" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "frase = 'Qual o domínio de alguém com o e-mail: aluno@gmail.com'" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Qual o domínio de alguém com o e-mail: aluno', 'gmail.com']" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Dividindo a frase\n", - "re.split(split_term, frase)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def encontra_padrao(lista, frase):\n", - " \n", - " for item in lista:\n", - " print ('Pesquisando na frase: %r' %item)\n", - " print (re.findall(item, frase))\n", - " print ('\\n')" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "frase_padrao = 'zLzL..zzzLLL...zLLLzLLL...LzLz...dzzzzz...zLLLL'\n", - "\n", - "lista_padroes = [ 'zL*', # z seguido de zero ou mais L\n", - " 'zL+', # z seguido por um ou mais L\n", - " 'zL?', # z seguido por zero ou um L\n", - " 'zL{3}', # z seguido por três L\n", - " 'zL{2,3}', # z seguido por dois a três L\n", - " ]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pesquisando na frase: 'zL*'\n", - "['zL', 'zL', 'z', 'z', 'zLLL', 'zLLL', 'zLLL', 'zL', 'z', 'z', 'z', 'z', 'z', 'z', 'zLLLL']\n", - "\n", - "\n", - "Pesquisando na frase: 'zL+'\n", - "['zL', 'zL', 'zLLL', 'zLLL', 'zLLL', 'zL', 'zLLLL']\n", - "\n", - "\n", - "Pesquisando na frase: 'zL?'\n", - "['zL', 'zL', 'z', 'z', 'zL', 'zL', 'zL', 'zL', 'z', 'z', 'z', 'z', 'z', 'z', 'zL']\n", - "\n", - "\n", - "Pesquisando na frase: 'zL{3}'\n", - "['zLLL', 'zLLL', 'zLLL', 'zLLL']\n", - "\n", - "\n", - "Pesquisando na frase: 'zL{2,3}'\n", - "['zLLL', 'zLLL', 'zLLL', 'zLLL']\n", - "\n", - "\n" - ] - } - ], - "source": [ - "encontra_padrao(lista_padroes, frase_padrao)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "frase = 'Esta é uma string com pontuação. Isso pode ser um problema quando fazemos mineração de dados em busca '\\\n", - " 'de padrões! Não seria melhor retirar os sinais ao fim de cada frase?'" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Esta',\n", - " 'é',\n", - " 'uma',\n", - " 'string',\n", - " 'com',\n", - " 'pontuação',\n", - " 'Isso',\n", - " 'pode',\n", - " 'ser',\n", - " 'um',\n", - " 'problema',\n", - " 'quando',\n", - " 'fazemos',\n", - " 'mineração',\n", - " 'de',\n", - " 'dados',\n", - " 'em',\n", - " 'busca',\n", - " 'de',\n", - " 'padrões',\n", - " 'Não',\n", - " 'seria',\n", - " 'melhor',\n", - " 'retirar',\n", - " 'os',\n", - " 'sinais',\n", - " 'ao',\n", - " 'fim',\n", - " 'de',\n", - " 'cada',\n", - " 'frase']" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# A expressão [^!.? ] verifica por valores que não sejam pontuação \n", - "# (!, ., ?) e o sinal de adição (+) verifica se o item aparece pelo menos \n", - "# uma vez. Traduzindo: esta expressão diz: traga apenas as palavras na \n", - "# frase.\n", - "re.findall('[^!.? ]+', frase)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "frase = 'Esta é uma frase de exemplo. Vamos verificar quais padrões serão encontrados.'\n", - "\n", - "lista_padroes = [ '[a-z]+', # sequência de letras minúsculas\n", - " '[A-Z]+', # sequência de letras maiúsculas\n", - " '[a-zA-Z]+', # sequência de letras minúsculas e maiúsculas\n", - " '[A-Z][a-z]+'] # uma letra maiúscula, seguida de uma letra minúscula\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pesquisando na frase: '[a-z]+'\n", - "['sta', 'uma', 'frase', 'de', 'exemplo', 'amos', 'verificar', 'quais', 'padr', 'es', 'ser', 'o', 'encontrados']\n", - "\n", - "\n", - "Pesquisando na frase: '[A-Z]+'\n", - "['E', 'V']\n", - "\n", - "\n", - "Pesquisando na frase: '[a-zA-Z]+'\n", - "['Esta', 'uma', 'frase', 'de', 'exemplo', 'Vamos', 'verificar', 'quais', 'padr', 'es', 'ser', 'o', 'encontrados']\n", - "\n", - "\n", - "Pesquisando na frase: '[A-Z][a-z]+'\n", - "['Esta', 'Vamos']\n", - "\n", - "\n" - ] - } - ], - "source": [ - "encontra_padrao(lista_padroes, frase)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Escape Codes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "É possível usar códigos específicos para enocntrar padrões nos dados, tais como dígitos, não dígitos, espaços, etc..\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", - "
CódigoSignificado
\\dum dígito
\\Dum não-dígito
\\sespaço (tab, espaço, nova linha, etc.)
\\Snão-espaço
\\walfanumérico
\\Wnão-alfanumérico
\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\\\b'" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# O prefixo r antes da expressão regular evita o pré-processamento da ER \n", - "# pela linguagem. Colocamos o modificador r (do inglês \"raw\", crú) \n", - "# imediatamente antes das aspas\n", - "r'\\b'" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\x08'" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'\\b'" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "frase = 'Esta é uma string com alguns números, como 1287 e um símbolo #hashtag'\n", - "\n", - "lista_padroes = [ r'\\d+', # sequência de dígitos\n", - " r'\\D+', # sequência de não-dígitos\n", - " r'\\s+', # sequência de espaços\n", - " r'\\S+', # sequência de não-espaços\n", - " r'\\w+', # caracteres alfanuméricos\n", - " r'\\W+', # não-alfanumérico\n", - " ]" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pesquisando na frase: '\\\\d+'\n", - "['1287']\n", - "\n", - "\n", - "Pesquisando na frase: '\\\\D+'\n", - "['Esta é uma string com alguns números, como ', ' e um símbolo #hashtag']\n", - "\n", - "\n", - "Pesquisando na frase: '\\\\s+'\n", - "[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']\n", - "\n", - "\n", - "Pesquisando na frase: '\\\\S+'\n", - "['Esta', 'é', 'uma', 'string', 'com', 'alguns', 'números,', 'como', '1287', 'e', 'um', 'símbolo', '#hashtag']\n", - "\n", - "\n", - "Pesquisando na frase: '\\\\w+'\n", - "['Esta', 'é', 'uma', 'string', 'com', 'alguns', 'números', 'como', '1287', 'e', 'um', 'símbolo', 'hashtag']\n", - "\n", - "\n", - "Pesquisando na frase: '\\\\W+'\n", - "[' ', ' ', ' ', ' ', ' ', ' ', ', ', ' ', ' ', ' ', ' ', ' #']\n", - "\n", - "\n" - ] - } - ], - "source": [ - "encontra_padrao(lista_padroes, frase)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# FIM" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Obrigado - Data Science Academy - facebook.com/dsacademybr" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git "a/JupyterNotebooks/Cap\303\255tulo07/dados.json" "b/JupyterNotebooks/Cap\303\255tulo07/dados.json" deleted file mode 100644 index b20dc428..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo07/dados.json" +++ /dev/null @@ -1 +0,0 @@ -{"similar": ["c", "Modula-3", "lisp"], "nome": "Guido van Rossum", "linguagem": "Python", "users": 1000000} \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo07/json_data.txt" "b/JupyterNotebooks/Cap\303\255tulo07/json_data.txt" deleted file mode 100644 index b20dc428..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo07/json_data.txt" +++ /dev/null @@ -1 +0,0 @@ -{"similar": ["c", "Modula-3", "lisp"], "nome": "Guido van Rossum", "linguagem": "Python", "users": 1000000} \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo07/logfile.txt" "b/JupyterNotebooks/Cap\303\255tulo07/logfile.txt" deleted file mode 100644 index 1c6fa192..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo07/logfile.txt" +++ /dev/null @@ -1 +0,0 @@ -Gravando no log... \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo07/testfile.txt" "b/JupyterNotebooks/Cap\303\255tulo07/testfile.txt" deleted file mode 100644 index 5bcd3549..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo07/testfile.txt" +++ /dev/null @@ -1 +0,0 @@ -Gravando no arquivo \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Chart-Interativo.html" "b/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Chart-Interativo.html" deleted file mode 100644 index 386e4035..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Chart-Interativo.html" +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - Bokeh Plot - - - - - - - - -
- - - - \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Datetime.html" "b/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Datetime.html" deleted file mode 100644 index 33c38e8a..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Datetime.html" +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - Bokeh Plot - - - - - - - - -
- - - - \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-GeoJSON.html" "b/JupyterNotebooks/Cap\303\255tulo08/Bokeh-GeoJSON.html" deleted file mode 100644 index 22f49f4d..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-GeoJSON.html" +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - Bokeh Plot - - - - - - - - -
- - - - \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Grafico-Interativo.html" "b/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Grafico-Interativo.html" deleted file mode 100644 index c8142c86..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Grafico-Interativo.html" +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - Bokeh Plot - - - - - - - - -
- - - - \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Grafico-Linha.html" "b/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Grafico-Linha.html" deleted file mode 100644 index 4f46e53d..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-Grafico-Linha.html" +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - Bokeh Plot - - - - - - - - -
- - - - \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-ViolinPlot.html" "b/JupyterNotebooks/Cap\303\255tulo08/Bokeh-ViolinPlot.html" deleted file mode 100644 index 6cb60de2..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/Bokeh-ViolinPlot.html" +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - Bokeh Plot - - - - - - - - -
- - - - \ No newline at end of file diff --git "a/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Bokeh.ipynb" "b/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Bokeh.ipynb" deleted file mode 100644 index 4c83423f..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Bokeh.ipynb" +++ /dev/null @@ -1,1381 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 8\n", - "\n", - "## Download: http://github.com/dsacademybr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Bokeh" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Caso o Bokeh não esteja instalado, executar:\n", - "### pip install bokeh" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Importando o módulo Bokeh\n", - "import bokeh" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Usando output_file para gravar as visualizações\n", - "from bokeh.plotting import figure, output_file, show\n", - "\n", - "# Usando output_notebook para visualizar no iPython Notebook\n", - "from bokeh.charts import Bar, output_notebook, show" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "
\n", - " \n", - " Loading BokehJS ...\n", - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "\n", - "(function(global) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " if (typeof (window._bokeh_onload_callbacks) === \"undefined\") {\n", - " window._bokeh_onload_callbacks = [];\n", - " }\n", - "\n", - " function run_callbacks() {\n", - " window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", - " delete window._bokeh_onload_callbacks\n", - " console.info(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(js_urls, callback) {\n", - " window._bokeh_onload_callbacks.push(callback);\n", - " if (window._bokeh_is_loading > 0) {\n", - " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " window._bokeh_is_loading = js_urls.length;\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " var s = document.createElement('script');\n", - " s.src = url;\n", - " s.async = false;\n", - " s.onreadystatechange = s.onload = function() {\n", - " window._bokeh_is_loading--;\n", - " if (window._bokeh_is_loading === 0) {\n", - " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", - " run_callbacks()\n", - " }\n", - " };\n", - " s.onerror = function() {\n", - " console.warn(\"failed to load library \" + url);\n", - " };\n", - " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", - " }\n", - " };\n", - "\n", - " var js_urls = ['https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-compiler-0.11.1.min.js'];\n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - " \n", - " function(Bokeh) {\n", - " Bokeh.$(\"#6cb2911e-4ab9-4f80-b50e-01c5c7f2b681\").text(\"BokehJS successfully loaded\");\n", - " },\n", - " function(Bokeh) {\n", - " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.css\");\n", - " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.css\");\n", - " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.css\");\n", - " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.css\");\n", - " }\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i](window.Bokeh);\n", - " }\n", - " }\n", - "\n", - " if (window._bokeh_is_loading === 0) {\n", - " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(js_urls, function() {\n", - " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", - " }\n", - "}(this));" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Output \n", - "output_notebook() " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Arquivo gerado pela visualização\n", - "output_file(\"Bokeh-Grafico-Interativo.html\")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "p = figure()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "bokeh.plotting.figure.Figure" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(p)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width = 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

<Bokeh Notebook handle for In[8]>

" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "show(p)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Usando output_notebook para visualizar no iPython Notebook\n", - "from bokeh.charts import Bar, output_notebook, show" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Preparando dados\n", - "data = {\"y\": [1, 2, 3, 4, 5]}" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "
\n", - " \n", - " Loading BokehJS ...\n", - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "\n", - "(function(global) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " if (typeof (window._bokeh_onload_callbacks) === \"undefined\") {\n", - " window._bokeh_onload_callbacks = [];\n", - " }\n", - "\n", - " function run_callbacks() {\n", - " window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", - " delete window._bokeh_onload_callbacks\n", - " console.info(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(js_urls, callback) {\n", - " window._bokeh_onload_callbacks.push(callback);\n", - " if (window._bokeh_is_loading > 0) {\n", - " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " window._bokeh_is_loading = js_urls.length;\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " var s = document.createElement('script');\n", - " s.src = url;\n", - " s.async = false;\n", - " s.onreadystatechange = s.onload = function() {\n", - " window._bokeh_is_loading--;\n", - " if (window._bokeh_is_loading === 0) {\n", - " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", - " run_callbacks()\n", - " }\n", - " };\n", - " s.onerror = function() {\n", - " console.warn(\"failed to load library \" + url);\n", - " };\n", - " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", - " }\n", - " };\n", - "\n", - " var js_urls = ['https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-compiler-0.11.1.min.js'];\n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - " \n", - " function(Bokeh) {\n", - " Bokeh.$(\"#98902fd3-4a20-4733-92ac-03c857fd1808\").text(\"BokehJS successfully loaded\");\n", - " },\n", - " function(Bokeh) {\n", - " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.css\");\n", - " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.11.1.min.css\");\n", - " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.css\");\n", - " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.11.1.min.css\");\n", - " }\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i](window.Bokeh);\n", - " }\n", - " }\n", - "\n", - " if (window._bokeh_is_loading === 0) {\n", - " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(js_urls, function() {\n", - " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", - " }\n", - "}(this));" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Output \n", - "output_notebook() " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Criando um novo gráfico\n", - "gr = Bar(data, title = \"Gráfico Bokeh\", xlabel = 'x', ylabel = 'valores', \n", - " width = 400, height = 400)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

<Bokeh Notebook handle for In[13]>

" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Mostrando os resultados\n", - "show(gr)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

<Bokeh Notebook handle for In[14]>

" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Construindo um ScatterPlot\n", - "from bokeh.charts import Scatter, output_file, show\n", - "\n", - "# Preparando os dados\n", - "from bokeh.sampledata.autompg import autompg as df\n", - "\n", - "# Criando um Scatter Plot\n", - "p = Scatter(df, x = 'mpg', y = 'hp', color = 'cyl',\n", - " title = \"Consumo x Potência\",\n", - " legend = 'top_right',\n", - " xlabel = \"Km/Litro\",\n", - " ylabel = \"Potência do Motor\")\n", - "\n", - "# Especificando o arquivo de saída\n", - "output_file(\"Bokeh-Chart-Interativo.html\")\n", - "\n", - "# Visualizando o gráfico\n", - "show(p)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

<Bokeh Notebook handle for In[15]>

" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Criando Violin Plots - Seaborn e Bokeh\n", - "import seaborn as sea\n", - "\n", - "from bokeh import mpl\n", - "from bokeh.plotting import output_file, show\n", - "\n", - "tips = sea.load_dataset(\"tips\")\n", - "\n", - "sea.set_style(\"whitegrid\")\n", - "\n", - "ax = sea.violinplot(x = \"day\", y = \"total_bill\", hue = \"sex\", data = tips, \n", - " palette = \"Set2\", split = True, \n", - " scale = \"count\", inner = \"stick\")\n", - "\n", - "output_file(\"Bokeh-ViolinPlot.html\")\n", - "\n", - "show(mpl.to_bokeh())" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

<Bokeh Notebook handle for In[16]>

" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Gráficos de Linha\n", - "from bokeh.plotting import figure, output_file, show\n", - "\n", - "# Outuput\n", - "output_file(\"Bokeh-Grafico-Linha.html\")\n", - "\n", - "p = figure(plot_width = 400, plot_height = 400)\n", - "\n", - "# Adicionando círculos ao gráfico\n", - "p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size = 20, color = \"navy\", alpha = 0.5)\n", - "\n", - "# Mostrando o resultado\n", - "show(p)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

<Bokeh Notebook handle for In[17]>

" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Geojson\n", - "from bokeh.io import output_file, show\n", - "from bokeh.models import GeoJSONDataSource\n", - "from bokeh.plotting import figure\n", - "from bokeh.sampledata.sample_geojson import geojson\n", - "\n", - "geo_source = GeoJSONDataSource(geojson=geojson)\n", - "\n", - "p = figure()\n", - "p.circle(x = 'x', y = 'y', alpha = 0.9, source = geo_source)\n", - "output_file(\"Bokeh-GeoJSON.html\")\n", - "show(p)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

<Bokeh Notebook handle for In[18]>

" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Plots de Séries Temporais com Pandas\n", - "import pandas as pd\n", - "from bokeh.plotting import figure, output_file, show\n", - "\n", - "AAPL = pd.read_csv(\n", - " \"http://ichart.yahoo.com/table.csv?s=AAPL&a=0&b=1&c=2000&d=0&e=1&f=2010\",\n", - " parse_dates=['Date']\n", - " )\n", - "\n", - "output_file(\"Bokeh-Datetime.html\")\n", - "\n", - "# create a new plot with a datetime axis type\n", - "p = figure(width=800, height=250, x_axis_type=\"datetime\")\n", - "\n", - "p.line(AAPL['Date'], AAPL['Close'], color='navy', alpha=0.5)\n", - "\n", - "show(p)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Google Maps\n", - "from bokeh.io import output_file, show\n", - "from bokeh.models import (\n", - " GMapPlot, GMapOptions, ColumnDataSource, Circle, DataRange1d, PanTool, WheelZoomTool, BoxSelectTool\n", - ")\n", - "\n", - "map_options = GMapOptions(lat=-23.5431786, lng=-46.62918450000001, map_type=\"roadmap\", zoom=11)\n", - "\n", - "plot = GMapPlot(\n", - " x_range=DataRange1d(), y_range=DataRange1d(), map_options=map_options, title=\"São Paulo\"\n", - ")\n", - "\n", - "source = ColumnDataSource(\n", - " data=dict(\n", - " lat=[-23.54, -46.62],\n", - " lon=[97.70, 97.74],\n", - " )\n", - ")\n", - "\n", - "circle = Circle(x=\"lon\", y=\"lat\", size=15, fill_color=\"blue\", fill_alpha=0.8, line_color=None)\n", - "plot.add_glyph(source, circle)\n", - "\n", - "plot.add_tools(PanTool(), WheelZoomTool(), BoxSelectTool())\n", - "output_file(\"gmap_plot.html\")\n", - "show(plot)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fim" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Obrigado - Data Science Academy - facebook.com/dsacademybr" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git "a/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Matplotlib-Mapas.ipynb" "b/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Matplotlib-Mapas.ipynb" deleted file mode 100644 index 213da98e..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Matplotlib-Mapas.ipynb" +++ /dev/null @@ -1,280 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 8\n", - "\n", - "## Download: http://github.com/dsacademybr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Matplotlib" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Criando Mapas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Para usuários do Windows, executar o procedimento abaixo para instalar o basemap." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1- Acessar o site http://www.lfd.uci.edu/~gohlke/pythonlibs/\n", - "### 2- Baixar o arquivo basemap-1.0.8-cp35-none-win_amd64.whl\n", - "### 3- Colocar o arquivo no diretório de instalação do Anaconda\n", - "### 4- No prompt de comando, nevegar até o diretório de instalação do Anaconda e executar\n", - "### 5- pip install basemap-1.0.8-cp35-none-win_amd64.whl" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Usuários Mac e Linux, executar: pip install basemap" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from mpl_toolkits.basemap import Basemap\n", - "from mpl_toolkits.mplot3d.axes3d import Axes3D\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Mapa do globo terrestre\n", - "map = Basemap(projection = 'ortho', lat_0 = 0, lon_0 = 0)\n", - "\n", - "# Definindo a cor do globo\n", - "map.drawmapboundary(fill_color = 'aqua')\n", - "\n", - "# Preenchendo a cor dos continentes\n", - "map.fillcontinents(color = 'coral', lake_color = 'aqua')\n", - "\n", - "map.drawcoastlines()\n", - "\n", - "plt.show()\n", - "plt.savefig('Globo.png')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Mapa do globo terrestre expandido\n", - "from mpl_toolkits.basemap import Basemap\n", - "import matplotlib.pyplot as plt\n", - "\n", - "map = Basemap()\n", - "\n", - "map.drawcoastlines()\n", - "\n", - "# Mostrar e gravar\n", - "plt.show()\n", - "plt.savefig('Globo-expandido.png')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Cria um mapa usando Basemap\n", - "from mpl_toolkits.basemap import Basemap\n", - "from mpl_toolkits.mplot3d import Axes3D\n", - "from matplotlib import pyplot\n", - "from numpy import arange\n", - "\n", - "mapa = Basemap(projection = 'robin', lat_0 = -20, lon_0 = -50,\n", - "resolution = 'l', area_thresh = 1e3)\n", - "\n", - "# desenha a costa dos continentes\n", - "mapa.drawcoastlines(color='#777799')\n", - "\n", - "# Desenha as fronteiras\n", - "mapa.drawcountries(color='#ccccee')\n", - "\n", - "# Pinta os continentes\n", - "mapa.fillcontinents(color='#ddddcc')\n", - "\n", - "# Desenha os meridianos\n", - "mapa.drawmeridians(arange(0, 360, 30), color='#ccccee')\n", - "\n", - "# Desenha os paralelos\n", - "mapa.drawparallels(arange(-180, 180, 30), color='#ccccee')\n", - "\n", - "# Desenha os limites do mapa\n", - "mapa.drawmapboundary()\n", - "\n", - "# Mostrar e gravar\n", - "plt.show()\n", - "pyplot.savefig('Mapa.png', dpi=150)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Plot contour\n", - "from mpl_toolkits.basemap import Basemap\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "# Criando o mapa base\n", - "map = Basemap(projection = 'ortho', lat_0 = 45, lon_0 = -100, resolution = 'l')\n", - "\n", - "# Definindo as linhas dos continentes\n", - "map.drawcoastlines(linewidth = 0.25)\n", - "map.drawcountries(linewidth = 0.25)\n", - "map.fillcontinents(color = 'coral', lake_color = 'aqua')\n", - "\n", - "# Desenhando os limites\n", - "map.drawmapboundary(fill_color = 'aqua')\n", - "\n", - "# Desenhando latitude e longitude\n", - "map.drawmeridians(np.arange(0,360,30))\n", - "map.drawparallels(np.arange(-90,90,30))\n", - "\n", - "# Desenhando os grids\n", - "nlats = 73; nlons = 145; delta = 2.*np.pi/(nlons-1)\n", - "lats = (0.5*np.pi-delta*np.indices((nlats,nlons))[0,:,:])\n", - "lons = (delta*np.indices((nlats,nlons))[1,:,:])\n", - "wave = 0.75*(np.sin(2.*lats)**8*np.cos(4.*lons))\n", - "mean = 0.5*np.cos(2.*lats)*((np.sin(2.*lats))**2 + 2.)\n", - "\n", - "# Projetando coordeandas.\n", - "x, y = map(lons*180./np.pi, lats*180./np.pi)\n", - "\n", - "# Dados do mapa\n", - "cs = map.contour(x,y,wave+mean,15,linewidths=1.5)\n", - "plt.title('Linhas sobre o continente')\n", - "\n", - "# Mostrar e gravar\n", - "plt.show()\n", - "pyplot.savefig('Continentes.png')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Mapas dia e noite\n", - "import numpy as np\n", - "from mpl_toolkits.basemap import Basemap\n", - "import matplotlib.pyplot as plt\n", - "from datetime import datetime\n", - "\n", - "# Projeção\n", - "map = Basemap(projection='mill',lon_0=180)\n", - "\n", - "# Linhas meridianas e paralelas.\n", - "map.drawcoastlines()\n", - "map.drawparallels(np.arange(-90,90,30),labels=[1,0,0,0])\n", - "map.drawmeridians(np.arange(map.lonmin,map.lonmax+30,60),labels=[0,0,0,1])\n", - "\n", - "# Cores\n", - "map.drawmapboundary(fill_color='aqua')\n", - "map.fillcontinents(color='coral',lake_color='aqua')\n", - "\n", - "# Sombreando as noites. Time em UTC.\n", - "date = datetime.utcnow()\n", - "CS=map.nightshade(date)\n", - "# plt.title('Mapa Dia/Noite %s (UTC)' % date.strftime(\"%d %b %Y %H:%M:%S\"))\n", - "plt.title('Mapa Dia/Noite')\n", - "\n", - "# Mostrar e gravar\n", - "plt.show()\n", - "pyplot.savefig('Dia-Noite.png')" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Acesse esse site para mais exemplos com Basemap\n", - "# http://matplotlib.org/basemap/users/examples.html" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fim" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Obrigado - Data Science Academy - facebook.com/dsacademybr" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.1" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git "a/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Matplotlib-Plots-e-Graficos.ipynb" "b/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Matplotlib-Plots-e-Graficos.ipynb" deleted file mode 100644 index a563b146..00000000 --- "a/JupyterNotebooks/Cap\303\255tulo08/DSA-Python-Cap\303\255tulo8-Matplotlib-Plots-e-Graficos.ipynb" +++ /dev/null @@ -1,11035 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Science Academy - Python Fundamentos - Capítulo 8\n", - "\n", - "## Download: http://github.com/dsacademybr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Matplotlib" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## Construindo Plots" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# O matplotlib.pyplot é uma coleção de funções e estilos que fazem com que o Matplotlib \n", - "# funcione como o Matlab.\n", - "import matplotlib.pyplot as plt\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nkdQ8m7c6bXm+vWePMYkWhzfeqLPMt7XI3Hmrk8y3tehs3uoU821pwOatzjDfln7NzFudYL4tvZI7\nbxXPfFs6lM1bxTLfltZm81aRzLel9Zl5qzjm29Jo7rxVFPNtqRqbt4pgvi2Nx+at1plvS+Mz81ar\nzLelybjzVmvMt6XJ2bw1c+bb0vRs3pop822pHmbemhnzbak+7rw1E+bbUr1s3mqU+bbUDJu3GmO+\nLTXHzFuNMN+WmuXOW7Uz35aaZ/NWbcy3pdmxeasW5tvSbJl5a2rm29LsufPWVMy3pXbYvDUR822p\nXTZvjc18W2qfmbfGYr4tlcGdtyoz35bKYfPWSObbUnls3lqX+bZUJjNvrcl8WyqXO2+tynxbKlvl\n5h0RG4D7gKcy88LmSlKbzLelbhhn53018AhwTEO1qGXm21J3VMq8I+J44Dzg882Wo7aYb0vdUnXn\n/RngI4D/peeQ+bbUPSObd0S8BziQmQ9GRA+IxqvSTJhvS91VZee9FbgwIs4DjgSOjogbM/OylQcu\nLS29/LjX69Hr9WoqU3Uz35Zmr9/v0+/3azlXZGb1gyPOBP5ytWmTiMhxzqX27NkDF18Ml18O27bB\nBqf9pVZEBJk5UZrhnPeCMd+W5sNYO+91T+TOu2jL8+1du8y3pRK489a6zLel+WPaOeec35bmkzvv\nOWa+Lc0vm/cccn5bmn827zljvi0tBjPvOWK+LS0Od95zwnxbWiw2744z35YWk827w8y3pcVl5t1R\n5tvSYnPn3UHm25Js3h1ivi3pJTbvjjDflrScmXcHmG9LWsmdd+HMtyWtxuZdKPNtSeuxeRfIfFvS\nKGbehTHfllSFO++CmG9LqsrmXQDzbUnjsnm3zHxb0iTMvFtkvi1pUu68W2K+LWkaNu8ZM9+WVAeb\n9wyZb0uqi5n3jJhvS6qTO+8ZMN+WVDebd4PMtyU1xebdEPNtSU0y826A+bakprnzrpn5tqRZsHnX\nxHxb0izZvGtgvi1p1sy8p2S+LakN7rynYL4tqS027wmYb0tq28jmHREbgbuAVw2PvzkzP9Z0YaUy\n35ZUgpGZd2Y+D7w7M08FNgPnRsSWxisrkPm2pFJUik0y87nhw43D52RjFRXKfFtSSSo174jYANwP\nnAT8fWbe22hVBTHfllSiqjvvF4FTI+IYYFdEnJKZj6w8bmlp6eXHvV6PXq9XU5ntMN+WVKd+v0+/\n36/lXJE5XgISEX8D/Cwz/3bF13Pcc5Vszx64+GK4/HLYtg02OBEvqWYRQWbGJM8d2ZIi4nURsWn4\n+EjgbOD7k7xYV+zcCRdcADt2wNKSjVtSearEJm8Ebhjm3huAr2bm7c2W1Q7zbUldMXZssuaJOh6b\nLM+3b7rJfFtS8xqNTRaB89uSumbhb493fltSFy1s8zbfltRlC9m8nd+W1HULl3mbb0uaBwu18zbf\nljQvFqJ5m29Lmjdz37zNtyXNo7nOvM23Jc2rud15m29Lmmdz17zNtyUtgrlq3ubbkhbF3GTe5tuS\nFslc7LzNtyUtmk43b/NtSYuqs83bfFvSIutk5m2+LWnRdW7nbb4tSR1q3ubbkvRrnWje5tuS9ErF\nZ97m25J0qKJ33ubbkrS6Ipu3+bYkra+45m2+LUmjFZV5m29LUjXF7LzNtyWputabt/m2JI2v1eZt\nvi1Jk2kt8zbflqTJtbLzNt+WpOnMtHmbb0tSPWbWvM23Jak+M8m8zbclqV6N77zNtyWpfo01b/Nt\nSWrOyNgkIo6PiDsj4nsR8VBEXDXqOfv3DyKSp54aRCY2bkmqV5XM+wXgw5n5u8C7gCsjYs12XHK+\n3e/32y6hEuusl3XWyzrLMLJ5Z+b+zHxw+PhZ4FHgTasdu3MnXHAB7NgBS0uwoai3verOX6Z11ss6\n62WdZRgr846IE4HNwJ7Vvv+pT5lvS9IsVG7eEfEa4Gbg6uEO/BDOb0vSbERmjj4o4nDgX4FvZOb1\naxwz+kSSpFfIzJjkeVWb943AjzLzw5O8iCSpXiObd0RsBe4CHgJy+HFtZv5b8+VJklZTaectSSrL\nWMN8EfGPEXEgIvauc8zfRcR/RcSDEbF5+hLHN6rOiDgzIn4SEd8Zfvx1CzVWuvmp7fWsUmch67kx\nIvZExAPDOrevcVzb6zmyzhLWc1jHhuHr37rG91v/vz6sY806C1rLH0TEd4d/7/+5xjHjrWdmVv4A\nzmAwKrh3je+fC3x9+Ph04J5xzl/XR4U6zwRubaO2ZTX8FrB5+Pg1wGPAyaWtZ8U6W1/PYR1HDT8f\nBtwDbCltPSvWWcp6/gXwxdVqKWUtK9RZylo+ARy7zvfHXs+xdt6ZeTfw43UOuQi4cXjsHmBTRBw3\nzmvUoUKdABNd4a1LVrv5qfX1rFgntLyeAJn53PDhRgZjsCszwdbXc/jao+qEltczIo4HzgM+v8Yh\nRaxlhTqhgH+bDGpYr9+OvZ513wP5JuDJZX/+IWvcjVmAdw1/Pfl6RJzSZiHr3PxU1HqOuEmr9fUc\n/vr8ALAfuCMz711xSBHrWaFOaH89PwN8hNV/sEAha8noOqH9tYRBfXdExL0R8cFVvj/2ehZ2A/vM\n3A+8OTM3AzuAXW0VUuXmpxKMqLOI9czMFzPzVOB44PS2fyivpUKdra5nRLwHODD8jSsoY+d6iIp1\nFvFvE9iame9g8FvClRFxxrQnrLt5/xD47WV/Pn74taJk5rMv/eqamd8AjoiI35h1HcObn24GbsrM\nf1nlkCLWc1SdpaznsnoOAv8O/NGKbxWxni9Zq84C1nMrcGFEPAF8BXj38F6P5UpYy5F1FrCWL9Xx\n9PDzM8AtwJYVh4y9npM07/V+Et8KXAYQEb8P/CQzD0zwGnVYs87lWVJEbGEwMvl/sypsmZ3AI7nG\nXauUs57r1lnCekbE6yJi0/DxkcDZwPdXHNb6elaps+31zMxrM/PNmfkW4I+BOzPzshWHtb6WVeps\ney2Hr3vU8DdXIuLVwB8CD684bOz1HPeNqb4M9IDfjIj/AbYDrwIyM/8hM2+PiPMi4nHgZ8AHxjl/\nXUbVCVwcEX8O/BL4OfDeFmrcClwKPDTMPxO4FjiBgtazSp0UsJ7AG4EbImIDg03JV4fr92cUtJ5V\n6qSM9TxEgWu5qgLX8jjglhi8hcjhwJcyc/e06+lNOpLUQYt6wVKSOs3mLUkdZPOWpA6yeUtSB9m8\nJamDbN6S1EE2b0nqIJu3JHXQ/wOgkr70yrZwiwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# O método plot() define os eixos do gráfico\n", - "plt.plot([1, 3, 5], [2, 5, 7])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "x = [1, 4, 5]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "y = [3, 7, 2]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nqqD57AAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(x, y)\n", - "plt.xlabel('Variável 1')\n", - "plt.ylabel('Variável 2')\n", - "plt.title('Teste Plot')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "x2 = [1, 2, 3]\n", - "y2 = [11, 12, 15]" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEACAYAAABbMHZzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGQNJREFUeJzt3X2QXHWd7/H3Z26Eykw2PAWTgcAk944I8hSwbm6UlNth\nCwgsEbhKkYAiUIW7arxSohVwqZqB4g+gLKnd1a3SGGOCG7LLbgUMDzJY0mhUJJiQABtM4iWPxICX\njDBEIZX53j+mE5qme/pMPz98XlVddJ+HPr/pOrz7zJk+aUUEZmbWXjrqPQAzM6s9x9/MrA05/mZm\nbcjxNzNrQ46/mVkbcvzNzNpQ0fhLWiJpr6SNWdP6JO2StC5zm1tg3bmSXpK0WdKiSg7czMxKp2Kf\n85c0GxgClkfEWZlpfcCbEfGtUdbrADYDfwO8AqwF5kfESxUau5mZlajokX9ErAH25ZmlIqvOBLZE\nxPaIOACsBC4b+xDNzKzSyjnnv1DSc5K+L+moPPNPBHZmPd6VmWZmZnVWavz/BfjvETED+ANQ8PSP\nmZk1nnGlrBQRr2U9XAyszrPYbuDkrMdTM9PykuR/ZMjMbIwiotgp+LySHvmLrHP8kqZkzfvfwAt5\n1lkL9ErqkXQEMB/48WgbiQjfKnDr6+ur+xha6ebX069nI90efzyYNCn4xS/KO14ueuQvaQWQAo6T\ntAPoA+ZImgEMA9uAv8ss2w0sjohLI+KgpIXAACNvMksiYlNZozUza2MDA3DNNbBqFcyeXd5zFY1/\nRFydZ/LSAsvuAS7NevwT4MMlj87MzIDKhh98hW9LSqVS9R5CS/HrWVl+Pceu0uGHBBd51YqkaJSx\nmJk1itHCL4ko8Q++jr9ZA5s2bRrbt2+v9zCszk44oYfdu7e9b7rjb9aiMv9z13sYVmeF9oNy4u9z\n/mZmbcjxNzNrQ46/mVkbcvzNrCYuueQS7rvvvoo/75o1azjttNMq/rz5nHHGGfz85z9PtOz06dP5\n2c9+VuURlc5/8DVrYI38B99p06bx6quvMm7cOLq6upg7dy7f+c536OzsrPfQynL77bezdevWst+o\npk+fzpIlSzj//PPLHpP/4GtmDUMSjzzyCG+88Qbr1q3j2Wef5c4778y7bL3ewA4ePFjSelJJPW0q\njr+ZlexQ1Lu7u7n44ot54YWRf+Nxzpw53HbbbcyePZuuri5efvll5syZww9+8AMAli1bxuzZs/nq\nV7/KMcccQ29vL7/+9a9ZtmwZJ598MlOmTGH58uWHt/POO+/wta99jZ6eHrq7u/niF7/I22+/DcBT\nTz3FSSeddHjZ6dOnc88993D22WczYcIEhoeHufvuu+nt7WXixImcccYZPPjggyX9vNmncm6//Xau\nuuoqPve5zzFx4kTOPPNM1q1b957l169fz9lnn80xxxzDggULeOeddwAYHBxk3rx5fPCDH+S4445j\n3rx5vPLKKyWNqVSOv5mVbefOnTz66KOce+65h6f96Ec/4vvf/z5vvvkmJ5988vvWeeaZZ5gxYwav\nv/46CxYsYP78+Tz77LP8/ve/57777mPhwoXs378fgEWLFrF161Y2btzI1q1b2b17N3fcccfh58o9\nUl+5ciWPPfYYg4ODdHR00Nvbyy9/+UveeOMN+vr6+MxnPsPevXvL/rlXr17N1VdfzZ/+9CfmzZvH\nl770pffMf+CBBxgYGODll19mw4YN/PCHPwRgeHiYG264gZ07d7Jjxw46OztZuHBh2eMZC8ffrIlJ\nlbmV6vLLL+fYY4/lE5/4BHPmzOHWW289PO+6667j1FNPpaOjg3Hj3v9vSE6fPp1rr70WSVx11VXs\n2rWLvr4+PvCBD3DBBRdwxBFHsHXrVgAWL17Mvffey1FHHUVXVxe33HIL999/f8FxfeUrX+GEE07g\nyCOPBOBTn/oUkydPBuDKK6/kQx/6EM8880zpP3jG7Nmzueiii5DEZz/7WTZu3Pi+cUyePJmjjz6a\nefPm8dxzzwFw7LHHcsUVV3DkkUfS1dXFrbfeylNPPVX2eMaipC9zMbPGUO+/BT/00EPMmTMn77zs\nUzH5HIoxwPjx4wGYNGnSe6YNDQ3x2muvsX//fj760Y8enjc8PDzq3xGmTp36nsfLly/n3nvvZdu2\nbQC89dZb/PGPfxx1fElMmfLuV5t0dnbyl7/8heHhYTo6Ro6rs3/Gzs5O9uzZA8Cf//xnbrrpJh5/\n/HEGBweJCIaGhoiImv29wfE3s5KNFuBKRWzSpEl0dnby4osv0t3dnWid7G3v2LGDz3/+8zz55JN8\n7GMfA+Ccc86p66eovvnNb7JlyxbWrl3L8ccfz4YNGzj33HNrGn+f9jGzhlAoxpK48cYbuemmm3jt\ntZFvkN29ezcDAwOJnvett96io6ODSZMmMTw8zNKlSw//YbqQgwcP8vbbbx++HfpDbak/Q66hoSHG\njx/PxIkTef311+nv70+0XiU5/mZWktGOUPPNK3ZEmzs/+/Fdd91Fb28vs2bN4uijj+bCCy9k8+bN\niZ7ntNNO4+abb2bWrFlMmTKFF198kdlF/lH8lStX0tnZSWdnJ+PHj6e3t3fMP8Noy950003s37+f\nSZMm8fGPf5xLLrlk1OetBl/kZdbAGvkiL6sdX+RlZmYVUTT+kpZI2itpY555N0salnRsgXW3Sdog\nab2k8j9XZWZmFZHkyH8pcFHuRElTgQuA0b5maBhIRcQ5ETGztCGamVmlFY1/RKwB9uWZdS/w9SKr\nK8k2zMystkoKs6RPAjsj4vkiiwbwhKS1km4sZVtmZlZ5Y77IS9J44BuMnPI5PLnA4udFxB5JxzPy\nJrAp85uEmZnVUSlX+P4PYBqwQSMfZJ0K/FbSzIh4NXvBiNiT+e9rklYBM4GC8c++0CGVSpFKpUoY\nnlnr6OnpaYt/XthG19PTA0A6nSadTlfkORN9zl/SNGB1RJyZZ97LwLkRsS9neifQERFDkrqAAeD2\niMh7WZ4/529mzWhgAK65BlatgiLXjlVcVT/nL2kF8CvgFEk7JF2fs0iQOe0jqVvSw5npk4E1ktYD\nTzPy5pHsemwzsyZQz/CXy1f4mpmVoBHC7yt8zcxqqBHCXy7H38xsDFoh/OD4m5kl1irhB8ffzCyR\nVgo/OP5mZkW1WvjB8TczG1Urhh8cfzOzglo1/OD4m5nl1crhB8ffzOx9Wj384Pibmb1HO4QfHH8z\ns8PaJfzg+JuZAe0VfnD8zczaLvzg+JtZm2vH8IPjb2ZtrF3DD46/mbWpdg4/OP5m1obaPfzg+JtZ\nm3H4Rzj+ZtY2HP53JfkC9yWS9kramGfezZKGJR1bYN25kl6StFnSokoM2MysFA7/eyU58l8KXJQ7\nUdJU4AJge76VJHUA386sezqwQNKppQ/VzKw0Dv/7FY1/RKwB9uWZdS/w9VFWnQlsiYjtEXEAWAlc\nVtIozcxK5PDnV9I5f0mfBHZGxPOjLHYisDPr8a7MNDOzmnD4Cxs31hUkjQe+wcgpn8OTKzGY/v7+\nw/dTqRSpVKoST2tmbagVw59Op0mn0xV5LkVE8YWkHmB1RJwl6Qzgp8B+RqI/FdgNzIyIV7PWmQX0\nR8TczONbgIiIuwtsI5KMxcysmFYMfz6SiIiSDr6THvkrcyMiXgCmZG38ZeDciMj9u8BaoDfzxrEH\nmA8sKGWQZmZJtUv4y5Xko54rgF8Bp0jaIen6nEWCzBuDpG5JDwNExEFgITAAvAisjIhNlRy8mVk2\nhz+5RKd9asGnfcysHO0Y/nJO+/gKXzNreu0Y/nI5/mbW1Bz+0jj+Zta0HP7SOf5m1pQc/vI4/mbW\ndBz+8jn+ZtZUHP7KcPzNrGk4/JXj+JtZU3D4K8vxN7OG5/BXnuNvZg3N4a8Ox9/MGpbDXz2Ov5k1\nJIe/uhx/M2s4Dn/1Of5m1lAc/tpw/M2sYTj8teP4m1lDcPhry/E3s7pz+GvP8TezunL468PxN7O6\ncfjrJ8kXuC+RtFfSxqxpd0jaIGm9pJ9ImlJg3W1Zyz1TyYGbWXNz+Our6Be4S5oNDAHLI+KszLQJ\nETGUuf9l4CMR8YU86/5f4KMRsa/oQPwF7mZtw+GvjKp+gXtErAH25UwbynrYBQwXGluSbZhZ+3D4\nG8O4UleUdCdwLTAIzCmwWABPSDoIfC8iFpe6PTNrfg5/4yg5/hFxG3CbpEXAl4H+PIudFxF7JB3P\nyJvApsxvEnn197/7FKlUilQqVerwzKzBOPzlS6fTpNPpijxX0XP+AJJ6gNWHzvnnzDsJeDQizizy\nHH3AmxHxrQLzfc7frEU5/NVR1XP+h7aRuR3aYG/WvMuBTXkG1SlpQuZ+F3Ah8EIpgzSz5uXwN6ai\np30krQBSwHGSdgB9wN9K+jBwENgO/H1m2W5gcURcCkwGVkmKzHb+NSIGqvJTmFlDcvgbV6LTPrXg\n0z5mrcXhr75anPYxM0vM4W98jr+ZVZTD3xwcfzOrGIe/eTj+ZlYRDn9zcfzNrGwOf/Nx/M2sLA5/\nc3L8zaxkDn/zcvzNrCQOf3Nz/M1szBz+5uf4m9mYOPytwfE3s8Qc/tbh+JtZIg5/a3H8zawoh7/1\nOP5mNiqHvzU5/mZWkMPfuhx/M8vL4W9tjr+ZvY/D3/ocfzN7D4e/PTj+ZnaYw98+isZf0hJJeyVt\nzJp2h6QNktZL+omkKQXWnSvpJUmbJS2q5MDNrLIc/vZS9AvcJc0GhoDlEXFWZtqEiBjK3P8y8JGI\n+ELOeh3AZuBvgFeAtcD8iHipwHb8Be5mdeLwN6eqfoF7RKwB9uVMG8p62AUM51l1JrAlIrZHxAFg\nJXBZKYM0s+px+NvTuFJXlHQncC0wCMzJs8iJwM6sx7sYeUMwswbh8LevkuMfEbcBt2XO5X8Z6C93\nMP397z5FKpUilUqV+5RmVoDD33zS6TTpdLoiz1X0nD+ApB5g9aFz/jnzTgIejYgzc6bPAvojYm7m\n8S1ARMTdBbbhc/5mNeLwt4aqnvM/tI3M7dAGe7PmXQ5syrPOWqBXUo+kI4D5wI9LGaSZVY7Db5Dg\ntI+kFUAKOE7SDqAP+FtJHwYOAtuBv88s2w0sjohLI+KgpIXAACNvMksiIt+bhJnViMNvhyQ67VML\nPu1jVl0Of+upxWkfM2tiDr/lcvzNWpzDb/k4/mYtzOG3Qhx/sxbl8NtoHH+zFuTwWzGOv1mLcfgt\nCcffrIU4/JaU42/WIhx+GwvH36wFOPw2Vo6/WZNz+K0Ujr9ZE3P4rVSOv1mTcvitHI6/WRNy+K1c\njr9Zk3H4rRIcf7Mm4vBbpTj+Zk3C4bdKcvzNmoDDb5Xm+Js1OIffqsHxN2tgDr9VS9H4S1oiaa+k\njVnT7pG0SdJzkv5T0sQC626TtEHSeknPVHLgZq3O4bdqSnLkvxS4KGfaAHB6RMwAtgC3Flh3GEhF\nxDkRMbP0YZq1F4ffqq1o/CNiDbAvZ9pPI2I48/BpYGqB1ZVkG2b2LoffaqESYb4BeKzAvACekLRW\n0o0V2JZZS3P4rVbGlbOypH8ADkTEigKLnBcReyQdz8ibwKbMbxJ59ff3H76fSqVIpVLlDM+sqTj8\nVkw6nSadTlfkuRQRxReSeoDVEXFW1rTrgBuB8yPi7QTP0Qe8GRHfKjA/kozFrBU5/FYKSUSESlk3\n6WkfZW6HNjgX+DrwyULhl9QpaULmfhdwIfBCKYM0a2UOv9VDko96rgB+BZwiaYek64F/BiYwcipn\nnaR/ySzbLenhzKqTgTWS1jPyR+HVETFQlZ/CrEk5/FYviU771IJP+1i7cfitXLU47WNmFeTwW705\n/mY15vBbI3D8zWrI4bdG4fib1YjDb43E8TerAYffGo3jb1ZlDr81IsffrIocfmtUjr9ZlTj81sgc\nf7MqcPit0Tn+ZhXm8FszcPzNKsjht2bh+JtViMNvzcTxN6sAh9+ajeNvViaH35qR429WBoffmpXj\nb1Yih9+ameNvVgKH35qd4282Rg6/tQLH32wMHH5rFUm+wH2JpL2SNmZNu0fSJknPSfpPSRMLrDtX\n0kuSNktaVMmBm9Waw2+tJMmR/1LgopxpA8DpETED2ALcmruSpA7g25l1TwcWSDq1vOGa1YfDb62m\naPwjYg2wL2faTyNiOPPwaWBqnlVnAlsiYntEHABWApeVOV6zmnP4rRVV4pz/DcBjeaafCOzMerwr\nM82sKQwOwne/6/BbaxpXzsqS/gE4EBErKjGY/v7+w/dTqRSpVKoST2uW2OAgPPQQ/Pu/w5o1cP75\n8MgjMHNmvUdmBul0mnQ6XZHnUkQUX0jqAVZHxFlZ064DbgTOj4i386wzC+iPiLmZx7cAERF3F9hG\nJBmLWaXlC/6VV8K8efBXf1Xv0ZkVJomIUCnrJj3yV+Z2aINzga8Dn8gX/oy1QG/mjWMPMB9YUMog\nzSotX/CvuQZWrnTwrT0UPfKXtAJIAccBe4E+4BvAEcD/yyz2dER8UVI3sDgiLs2sOxf4R0b+trAk\nIu4aZTs+8req8hG+tZpyjvwTnfapBcffqsHBt1bm+JtlcfCtXTj+1vYcfGtHjr+1JQff2p3jb23D\nwTd7l+NvLc3BN8vP8beW4+CbFef4W0tw8M3GxvG3puXgm5XO8bem4uCbVYbjbw3PwTerPMffGpKD\nb1Zdjr81DAffrHYcf6srB9+sPhx/qzkH36z+HH+rCQffrLE4/lY1Dr5Z43L8raIcfLPm4Phb2Rx8\ns+ZT1fhLWgJcCuyNiLMy0z4N9AOnAf8zItYVWHcb8CdgGDgQETNH2Y7jX2MOvllzKyf+4xIssxT4\nZ2B51rTngSuA7xZZdxhIRcS+UgZnlZcv+NdcAytXOvhm7aRo/CNijaSenGm/A5BU7B1HQEfpw7NK\ncPDNLFeSI/9yBPCEpIPA9yJicZW3ZxkOvpmNptrxPy8i9kg6npE3gU0RsabK22xbDr6ZJVXV+EfE\nnsx/X5O0CpgJFIx/f3//4fupVIpUKlXN4bWEQ8F/4AH4xS8cfLNWlk6nSafTFXmuRB/1lDQNWB0R\nZ+ZMfxL4WkT8Ns86nUBHRAxJ6gIGgNsjYqDANvxpn4TyBd+f0jFrP9X+qOcKIAUcB+wF+oB9jHwC\naBIwCDwXERdL6gYWR8SlkqYDqxg57z8O+NeIuGuU7Tj+o3DwzSyXL/JqUQ6+mY3G8W8hDr6ZJeX4\nNzkH38xK4fg3IQffzMrl+DcJB9/MKsnxb2AOvplVi+PfYBx8M6sFx78BOPhmVmuOf504+GZWT45/\nDTn4ZtYoHP8qc/DNrBE5/lXg4JtZo3P8K8TBN7Nm4viXwcE3s2bl+I+Rg29mrcDxT8DBN7NW4/gX\n4OCbWStz/LM4+GbWLto+/g6+mbWjtoy/g29m7a6c+HckePIlkvZK2pg17dOSXpB0UNK5o6w7V9JL\nkjZLWlTKALMNDsKyZXDppdDTAw8+CFdfDbt2wapVI/cdfjOz4orGH1gKXJQz7XngCuCpQitJ6gC+\nnVn3dGCBpFPHOkAHf+zS6XS9h9BS/HpWll/PxlA0/hGxBtiXM+13EbEFGO3XjZnAlojYHhEHgJXA\nZUkG5eCXx/9zVZZfz8ry69kYxlXxuU8EdmY93sXIG0JBy5a99xz+1VfD/fc79GZmlVbN+I/ZoSN8\nB9/MrLoSfdpHUg+wOiLOypn+JHBzRKzLs84soD8i5mYe3wJERNxdYBuN8bEjM7MmUuqnfZIe+YvC\n5/cLTV8L9GbeOPYA84EFhTZQ6g9gZmZjl+SjniuAXwGnSNoh6XpJl0vaCcwCHpb0WGbZbkkPA0TE\nQWAhMAC8CKyMiE3V+kHMzCy5hrnIy8zMaifJ5/wrJt8FY3mW+SdJWyQ9J2lGLcfXTIq9lpL+WtKg\npHWZ2221HmMzkTRV0s8kvSjpeUn/p8By3j+LSPJaev9MTtKRkn4jaX3m9ewrsNzY9s2IqNkNmA3M\nADYWmH8x8Ejm/v8Cnq7l+JrpluC1/Gvgx/UeZ7PcgCnAjMz9CcDvgFNzlvH+WbnX0vvn2F7Tzsx/\n/xvwNDAzZ/6Y982aHvlHngvGclwGLM8s+xvgKEmTazG2ZpPgtYTRL8KzLBHxh4h4LnN/CNjEyLUq\n2bx/JpDwtQTvn4lFxP7M3SMZ+aBO7vn6Me+bNY1/ArkXhu0m/05jyXws8yvgI5I+Uu/BNAtJ0xj5\nreo3ObO8f47RKK8leP9MTFKHpPXAH4AnImJtziJj3jcb6iIvq6jfAidHxH5JFwMPAqfUeUwNT9IE\n4D+Ar2SOWq1ERV5L759jEBHDwDmSJgIPSvpIRPxXOc/ZaEf+u4GTsh5PzUyzMYqIoUO/KkbEY8AH\nJB1b52E1NEnjGInVfRHxUJ5FvH8mVOy19P5Zmoh4A3gSmJsza8z7Zj3iP9oFYz8GroXDVwgPRsTe\nWg2sCRV8LbPP90maycjHel+v1cCa1A+A/4qIfyww3/tncqO+lt4/k5M0SdJRmfvjgQuAl3IWG/O+\nWdPTPpkLxlLAcZJ2AH3AEYz8sw/fi4hHJV0iaSvwFnB9LcfXTIq9lsCnJX0BOAD8GbiqXmNtBpLO\nA64Bns+cWw3gG0AP3j/HJMlriffPsegGlmX+mfwO4N8y++LfUca+6Yu8zMzaUKOd8zczsxpw/M3M\n2pDjb2bWhhx/M7M25PibmbUhx9/MrA05/mZmbcjxNzNrQ/8fv4OdegR1uPIAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(x2, y2, label = 'Primeira Linha')\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Gráficos de Barras" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "x = [2,4,6,8,10]\n", - "y = [6,7,8,2,4]" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAEACAYAAAB4ayemAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEqBJREFUeJzt3X+M3HWdx/HXa3ehUtpuC9pdoDDbnuGu1vNHMSKg3tKi\nAl4tXLiC9sKdd3om5wHhLkbQNC2JuZx/gEeQRKtAoKEcoSgFWy2Y3hzh7mxRilBL1dB0wUK3IGxL\naUKwfd8f8y1u90fnO7sz+/1+6PORTHY6+9nPvOfT2dd+vu/55YgQACANbUUXAADIj9AGgIQQ2gCQ\nEEIbABJCaANAQghtAEhIrtC2fa3trbafsn237eNbXRgAYLi6oW37VElXSZofEe+T1CHpilYXBgAY\nriPnuHZJJ9o+JGmypBdaVxIAYDR1d9oR8YKkGyU9J2mXpIGI+GmrCwMADJenPTJd0mJJFUmnSppi\n+3OtLgwAMFye9sgFknZExCuSZPsHks6VtHrwINu8iQkANCgi3Mj4PM8eeU7SR2y/w7YlLZT0zChX\nXqrT8uXLC6+BmsZ2kqQo4FTvflzGtaKmdGsaizw97c2S1kjaIumXkixp5ZiuDQAwLrmePRIRN0i6\nocW1AADqeFu/IrK3t7foEoahprSVca2oKZ8y1jQWHmtfZdhEdjRrLsC2irg3WRpzrxFolG1Fgw9E\n5n1xDYBjUE9Pj/r6+oouI3mVSkU7d+5sylzstFFK7LTLIdsJFl1G8kZbx7HstN/WPW0AeLshtAEg\nIYQ2ACSE0AaAhBDaAHLr6e6W7Zaderq789fS06PJkydr2rRpOvnkk7Vo0SLt2rWrhbe+HAhtALn1\n9fe39L1f+vr7c9diW+vWrdO+ffv04osvaubMmbrqqqsavk0HDx7MdVlZENoAknX4aXTHH3+8Lrvs\nMm3btk2StH79es2fP1+dnZ2qVCq64YY/vgtHX1+f2tradPvtt6tSqWjhwoUjXiZJS5Ys0SmnnKIZ\nM2aot7f3rfkPX8e8efM0bdo0nX766brpppsm5DYT2gCSd+DAAd17770655xzJElTpkzRqlWrtHfv\nXq1bt07f+c539OCDDx7xM48++qi2b9+uDRs2jHrZxRdfrGeffVZ79uzR/PnztXTp0rfGfuELX9D3\nvvc97du3T1u3btWCBQsm4Jby4hqUFC+uKYehLwpp9f9LI+s/e/Zs/f73v1dHR4f279+vmTNnasOG\nDZo3b96wsddee63a2tp04403qq+vT3PmzNGOHTtUqVQkacTLhhoYGNBJJ52kvXv3aurUqerp6dHX\nv/51XXHFFZo6derRbxcvrgEAae3atXrllVf0xhtv6JZbbtHHP/5x7dmzR5s2bdKCBQs0c+ZMTZ8+\nXd/97nf18ssvH/Gzs2bNGjbf4MsOHTqk6667Tu9+97s1ffp0zZ49W7bfmuf+++/XunXrVKlUdP75\n5+tnP/tZa29shtAGkKzDu1fbuvTSS9Xe3q7HHntMS5cu1SWXXKJdu3ZpYGBAX/rSl4btdGuf6aJR\nL1u9erUeeughbdy4UQMDA9q5c+cRH15w1lln6YEHHtBLL72kxYsXa8mSJS28pX9EaAN4W1i7dq0G\nBgY0d+5c7d+/XzNmzNBxxx2nzZs3a/XqIz4dccRWxdDLXnvtNU2aNEkzZszQ66+/ruuvv/6tUH/z\nzTe1evVq7du3T+3t7Zo6dara29tbd+MGIbQB5Fbp6pKllp0qXV0N1bNo0SJNmzZNnZ2dWrZsme66\n6y7NnTtXt956q5YtW6bOzk594xvf0OWXX37Ez9XbZUvSlVdeqTPOOEOnnXaa3vve9+rcc8894vur\nVq3S7NmzNX36dK1cuXLYH4ZW4YFIlBIPRJYD7/LXHDwQCQDHqLqhbftM21tsP5F93Wv76okoDgBw\npIbaI7bbJP1O0tkR8fyQ79EeQdPQHikH2iPNUWR75AJJzw4NbADAxGg0tC+XdE8rCgEA1Je7PWL7\nOEkvSHpPRLw0wvdpj6BpaI+UA+2R5mhme6SRT2O/SNIvRgrsw1asWPHW+d7eXvX29jZSyzGhp7u7\nobefbJZKV5d27t494deLtFUqlRGf04zGHH4/k2q1qmq1Oq65Gtlp3yPpJxFx5yjfZ6edAzvIfFgn\nHAvGstPOFdq2J0vqkzQnIl4bZQyhnQNhlA/rhGNBy0I755UT2jkQRvmwTjgW8IpIAHibI7QBICGE\nNgAkhNAGgIQQ2gCQEEIbABJCaANAQghtAEgIoQ0ACSG0ASAhhDYAJITQBoCEENoAkBBCGwASQmgD\nQEIIbQBICKENAAkhtAEgIYQ2ACQkV2jb7rR9n+1nbP/K9tmtLgwAMFxHznE3S1ofEX9tu0PS5BbW\nBAAYRd1PY7c9TdKWiPiTOuP4NPYc+JTxfFgnHAta9WnssyW9bPsO20/YXmn7hLGVCAAYjzztkQ5J\n8yV9OSJ+bvs/JF0nafnQgXZDfzDGrdLVpZ27d0/odQLAWFWrVVWr1XHNkac90iXp/yJiTvbvj0r6\nakQsGjJuwg8qUzyU5bA/H9YJx4KWtEciol/S87bPzC5aKGnbGOoDAIxT3Z22JNl+v6TvSzpO0g5J\nn4+IvUPGsNPOgR1kPqwTjgVj2WnnCu2cV05o50AY5cM64VjQqmePAABKgtAGgIQQ2gCQEEIbABJC\naANAQghtAEgIoQ0ACSG0ASAhhDYAJITQBoCEENoAkBBCGwASQmgDQEIIbQBICKENAAkhtAEgIYQ2\nACSE0AaAhBDaAJCQjjyDbO+UtFfSIUlvRsSHW1kUAGBkuUJbtbDujYhXW1kMAODo8rZH3MBYAECL\n5A3ikPSI7cdtf7GVBQEARpe3PXJeRLxo+12qhfczEfHY0EErBp3vzU4AgJpqtapqtTquORwRjf2A\nvVzSaxFx05DLG5xp/Cyp0fqLZltFVJzaWrFOOBbYVkS4kZ+p2x6xPdn2lOz8iZI+KWnr2EoEAIxH\nnvZIl6Qf2o5s/N0R8XBrywIAjKTh9sioE9EeyYXD/nxYJxwLWtIeAQCUB6ENAAkhtAEgIYQ2ACSE\n0AaAhBDaAJAQQhsAEkJoA0BCCG0ASAihDQAJIbQBICGENgAkhNAGgIQQ2gCQEEIbABJCaANAQght\nAEgIoQ0ACSG0ASAhuUPbdpvtJ2w/2MqCAACja2SnfY2kba0qBABQX67Qtj1L0sWSvt/acgAAR5N3\np/0tSV+RFC2sBQBQR0e9AbY/Lak/Ip603SvJo41dMeh8b3YCgDLo6e5WX3//hF9vpatLO3fvliRV\nq1VVq9VxzeeIo2+ebf+bpL+R9AdJJ0iaKukHEXHlkHF1Zmo+S6pXf9nYLuRwJbW1Yp3QbGW8T9lW\nRIy6ER7xZxq5g9r+C0n/GhGfGeF7hHYOZbzjlBHrhGYr431qLKHN87QBICEN7bSPOhE77VzK+Ne+\njFgnNFsZ71PstAHgbY7QBoCEENoAkBBCGwASQmgDQEIIbQBICKENAAkhtAEgIYQ2ACSE0AaAhBDa\nAJAQQhsAEkJoA0BCCG0ASAihDQAJIbQBICGENgAkhNAGgIQQ2gCQkI56A2xPkvSopOOz8Wsi4oZW\nFwYAGK5uaEfEG7bPj4gDttsl/Y/tH0fE5gmoDwAwSK72SEQcyM5OUi3o+bhqAChArtC23WZ7i6Td\nkh6JiMdbWxYAYCR12yOSFBGHJH3Q9jRJD9h+T0RsGzpuxaDzvdkJAFBTrVZVrVbHNYcjGut02F4m\n6fWIuGnI5Q3ONH6W1Gj9RbNdSG8ptbVindBsZbxP2VZEuJH56rZHbL/Tdmd2/gRJn5C0vZErAQA0\nR572yCmS7rTdplrI3xsR61tbFgBgJA23R0adiPZILmU8RCsj1gnNVsb7VEvaIwCA8iC0ASAhhDYA\nJITQBoCEENoAkBBCGwASQmgDQEIIbQBICKENAAkhtAEgIYQ2ACSE0AaAhBDaAJAQQhsAEkJoA0BC\nCG0ASAihDQAJIbQBICGENgAkJM+nsc+yvdH2r2w/bfvqiSgMADBc3Q/2td0tqTsinrQ9RdIvJC2O\niO1DxvHBvjmU8cNFy4h1QrOV8T7Vkg/2jYjdEfFkdn6/pGckndbIlQAAmqOhnrbtHkkfkLSpFcUA\nAI6uI+/ArDWyRtI12Y57mBWDzvdmJwCt1dPdrb7+/gm/3kpXl3bu3j3h15uyarWqarU6rjnq9rQl\nyXaHpB9J+nFE3DzKGHraOZSxr1ZGrFN+rFU+ZVynlvS0M7dL2jZaYAMAJkaep/ydJ2mppAW2t9h+\nwvaFrS8NADBUrvZIroloj+RSxkO0MmKd8mOt8injOrWyPQIAKAFCGwASQmgDQEIIbQBICKENAAkh\ntAEgIYQ2ACSE0AaAhBDaAJAQQhsAEkJoA0BCCG0ASAihDQAJIbQBICGENgAkhNAGgIQQ2gCQEEIb\nABKS5zMib7Pdb/upiSgIADC6PDvtOyR9qtWFAADqqxvaEfGYpFcnoBYAQB30tAEgIYQ2ACSko5mT\nrRh0vjc7AQBqqtWqqtXquOZwRNQfZPdIeigi/vwoY3LM1FyWlKf+MrGtIipOba1Yp/xYq3zKuE62\nFRFuZL48T/lbLel/JZ1p+znbn2/kCgAAzZNrp51rInbauZTxr30ZsU75sVb5lHGdWrLTBgCUB6EN\nAAkhtAEgIYQ2ACSE0AaAhBDaAJAQQhsAEkJoA0BCCG0ASAihDQAJIbQBICGENgAkhNAGgIQQ2gCQ\nEEIbABJCaANAQghtAEgIoQ0ACSG0ASAhuULb9oW2t9v+je2vtrooAMDI8nwae5ukb0v6lKR5kj5r\n+89aXVgzVKvVoktIAuuUH2uVD+vUOnl22h+W9NuI6IuINyX9p6TFrS2rObjj5MM65cda5cM6tU6e\n0D5N0vOD/v277DIAwATjgUgASIgj4ugD7I9IWhERF2b/vk5SRMQ3h4w7+kQAgGEiwo2MzxPa7ZJ+\nLWmhpBclbZb02Yh4ZqxFAgDGpqPegIg4aPufJT2sWjvlNgIbAIpRd6cNACiPcT0QaXuW7Y22f2X7\nadtXN6uwcdQ0yfYm21uympYXXdNhtttsP2H7waJrOcz2Ttu/zNZrc9H1SJLtTtv32X4mu2+dXXA9\nZ2br80T2dW9J7uvX2t5q+ynbd9s+vgQ1XZP93hWaB7Zvs91v+6lBl82w/bDtX9veYLuzBDVdlv0f\nHrQ9P8884332yB8k/UtEzJN0jqQvF/3Cm4h4Q9L5EfFBSR+QdJHtDxdZ0yDXSNpWdBFDHJLUGxEf\njIiyrNPNktZHxFxJ75dUaDsuIn6Trc98SWdJel3SD4usyfapkq6SND8i3qdaq/OKgmuaJ+kfJH1I\ntd+9v7Q9p6By7lDtBYGDXSfppxHxp5I2Srq+BDU9LelSSf+dd5JxhXZE7I6IJ7Pz+1X75Sr8OdwR\ncSA7O0m1O3PhPSDbsyRdLOn7RdcyhFWip37anibpYxFxhyRFxB8iYl/BZQ12gaRnI+L5uiNbr13S\nibY7JE2W9ELB9cyVtCki3oiIg5IelfRXRRQSEY9JenXIxYsl3Zmdv1PSJUXXFBG/jojfqvZ7mEvT\nfllt96j213VTs+Ycq6wNsUXSbkmPRMTjRdck6VuSvqIS/AEZIiQ9Yvtx218suhhJsyW9bPuOrB2x\n0vYJRRc1yOWS7im6iIh4QdKNkp6TtEvSQET8tNiqtFXSx7I2xGTVNimnF1zTYDMjol+qbTglzSy4\nnjFpSmjbniJpjaRrsh13oSLiUNYemSXpbNvvKbIe25+W1J8dlVgN/FWdAOdlh/0Xq9be+mjB9XRI\nmi/p1qyuA6od1hbO9nGSPiPpvhLUMl21nWNF0qmSptj+XJE1RcR2Sd+U9Iik9ZK2SDpYZE11lG0D\nlcu4Qzs7NFsjaVVErB1/Sc2THVb/l6QLCy7lPEmfsb1DtV3a+bbvKrgmSVJEvJh9fUm1Pm3Rfe3f\nSXo+In6e/XuNaiFeBhdJ+kW2VkW7QNKOiHgla0X8QNK5BdekiLgjIj4UEb2SBiT9puCSBuu33SVJ\ntrsl7Sm4njFpxk77dknbIuLmJsw1brbfefhR4eyw+hOSthdZU0R8LSLOiIg5qj1YtDEiriyyJkmy\nPTk7SpLtEyV9UrVD3MJkh6/P2z4zu2ihyvPg7WdVgtZI5jlJH7H9DttWbZ0Kf/2E7XdlX89Q7QG2\n1UWWoyOPah+U9HfZ+b+VVMQm82hH2rmOwOu+uOao126fJ2mppKezHnJI+lpE/GQ8847TKZLuzN5S\ntk3SvRGxvsB6yqxL0g+ztyDokHR3RDxccE2SdLWku7N2xA5Jny+4HmU92gsk/WPRtUhSRGy2vUa1\nFsSb2deVxVYlSbrf9kmq1fRPRT2IbHu1pF5JJ9t+TtJySf8u6T7bfy+pT9KSEtT0qqRbJL1T0o9s\nPxkRFx11Hl5cAwDpKM1TvQAA9RHaAJAQQhsAEkJoA0BCCG0ASAihDQAJIbQBICGENgAk5P8BFB39\nJ9xM+FgAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.bar(x, y, label = 'Barras', color = 'r')\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "x2 = [1,3,5,7,9]\n", - "y2 = [7,8,2,4,2]" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nD0uaExEnSPqDyujfaLe0G/rEm4jYFhHPFad3qu8/fMMco257pqSFkn5S71qyUNxqOTkibpWkiPgw\nInbUuaxqapZ0hO0WSeMlvVbnekYlIh6X9M6A2WdKuq04fZuks2paVBUN1b+IeCQi9hYfPilpZql2\nRhvaB82JN7Y7JZ0gaX19K6mq/5D0XUmNumNjtqS3bN9aHAK6yfbh9S6qGiLiNUnXStosaauk3oh4\npL5VZWJ6RPRIfRtRkqbXuZ4sfUPSQ6UW4uSaMtieIOkuSZcWt7iTZ/uLknqK3yRc/Gk0LZLmSroh\nIuZKel99X7eTZ3uK+rZCOyQdJWmC7fPqW1VNNOQGhu2rJO2OiFWllh1taG+V1L7P45nFeQ2j+NXz\nLkkrIuK+etdTRSdJ+pLtjZJ+KqnL9u11rqna/iRpS0T8qvj4LvWFeCP4gqSNEfF2ROyRdI+keXWu\nKQs9tlslyXabpDfqXE/V2f66+oYpy/qjO9rQflrSMbY7inuuz5XUaEch3CJpQ0T8sN6FVFNEXBkR\n7RFxtPret7URcX6966qm4tfqLbaPLc6ar8bZ6bpZ0udsH2bb6utbI+xkHfit735JXy9O/5Ok1Dec\n9uuf7QXqG6L8UkTsKqeBkifXHEijn3hj+yRJSyS9YPtZ9X01uzIifl7fylCBZZJW2h4naaOkC+pc\nT1VExFO275L0rKTdxX9vqm9Vo2N7laScpGm2N0u6RtK/SrrT9jckdUs6p34Vjs4w/btS0iGSftH3\nt1dPRsQ/H7AdTq4BgHSwIxIAEkJoA0BCCG0ASAihDQAJIbQBICGENgAkhNAGgIQQ2gCQkP8DAfVC\nhgoywMgAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.bar(x, y, label = 'Barras1', color = 'r')\n", - "plt.bar(x2, y2, label = 'Barras2', color = 'y')\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "idades = [22,65,45,55,21,22,34,42,41,4,99,101,120,122,130,111,115,80,75,54,44,64,13,18,48]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "ids = [x for x in range(len(idades))]" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.bar(ids, idades)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "bins = [0,10,20,30,40,50,60,70,80,90,100,110,120,130]" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.hist(idades, bins, histtype = 'bar', rwidth = 0.8)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n1/attveU359r25n6/80w/1+U8223/VXby/s+NvLz933sj21P2T6n7745z18r4knfCHRM0i0RcZmk\nKyX9QTnzZyQ9HhE/L2mLpFtbnHGQDZJ29d3ONPudkh6LiEsl/aKkZ5VkftvvkfRHktZExPtUHI68\nUaM9/z0qfj/7nXBe26sl/ZakSyX9hqTPu/1X9U40/2ZJl0XE5ZL2KN/8sr1S0gcl/bDvvks1j/nr\n7omneyNQROyPiO3l9dcl7VZxxs0Nku4tN7tX0m+2M+Hsym/+dZK+0Hd3ltmXS/pARNwjSRFxLCJe\nVZL5S2OS3mG7I+l0FWdqjez8EfGEpFem3T3TvOskPVB+X36gIpBXLMScMznR/BHxeERMlTf/TcXv\nr5Rk/tLnJH162n03aB7z14146jcC2b5I0uUqfhDOjYgDUhF6SSvam2xWb33z+1/MyDL7KkkHbd9T\nHg66y/YyJZk/Il6S9FeS9qmI96sR8biSzN9nxQzzTv99flGj//v8CUmPlddTzG97naQXIuLpaR+a\n1/yn7P9iaPsMSQ9J2lDukU9/hXfkXvG1/WFJB8pnErM9zRq52UsdSWsk/U1ErJH0hoqn9iP/2EuS\n7Xeq2Fu6UNJ7VOyRf1RJ5p9FtnklSbb/VNJkRHy57Vmqsn26pNskbRzWmnUjXvmNQKOkfCr8kKT7\nIuKR8u4Dts8tP/5uST9qa75ZXCVpne29kr4s6Wrb90nan2B2qXim9kJE/Ed5+6sqop7hsZekX5e0\nNyL+JyLelPSwpF9RnvnfMtO8L0o6v2+7kf19tv1xFYcVP9J3d4b5f1bSRZK+a/t5FTNus71C8+xp\n3YhvlfRe2xfaXiJpvaRNNddcCF+UtCsi7uy7b5Okj5fXf0/SI9P/Utsi4raIuCAiLlbxWG+JiI9J\n+rpGfHZJKp/Cv2D7kvKuayTtVILHvrRP0i/bXlq+4HSNiheYR31+6+3P3Gaad5Ok9eUZN6skvVfF\nm/va9rb5ba9VcUhxXUQc6dtu5OePiGci4t0RcXFErFKxY/P+iPiRivl/e87zR0Sti6S1Kt7RuUfS\nZ+qu1/RFxd7sm5K2S3pK0rbyazhH0uPl17JZ0jvbnnXA1/GrkjaV19PMruKMlK3l4/81SWclm3+j\nihfDd6h4UXDxKM8v6UuSXpJ0RMU/QjdJOnumeVWc6fG98mu8dkTn36PirI5t5eXzmeaf9vG9ks6p\nMz9v9gGAxE7ZFzYB4GRAxAEgMSIOAIkRcQBIjIgDQGJEHAASI+IAkBgRB4DE/g+QXuBOPpe6JQAA\nAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.hist(idades, bins, histtype = 'stepfilled', rwidth = 0.8)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Scatterplot" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "x = [1,2,3,4,5,6,7,8]\n", - "y = [5,2,4,5,6,8,4,8]" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nxaVGagAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(x, y, label = 'Pontos', color = 'r', marker = 'o', s = 100)\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stack Plots" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "dias = [1,2,3,4,5]\n", - "dormir = [7,8,6,77,7]\n", - "comer = [2,3,4,5,3]\n", - "trabalhar = [7,8,7,2,2]\n", - "passear = [8,5,7,8,13]" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nQTAk/Ae3XznFu0SZQQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.stackplot(dias, dormir, comer, trabalhar, passear, colors = ['m','c','r','k','b'])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Pie Chart" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "fatias = [7, 2, 2, 13]\n", - "atividades = ['dormir','comer','trabalhar','passear']\n", - "colunas = ['c','m','r','k']" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.pie(fatias, labels = atividades, colors = colunas, startangle = 90, \n", - " shadow = True, explode = (0,0.1,0,0))\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## Gráficos " - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Visualizando os gráfico dentro do Jupyter Notebook\n", - "# O Pylab combina funcionalidades do pyplot com funcionalidades do Numpy\n", - "%matplotlib inline\n", - "from pylab import *" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "x = linspace(0, 5, 10)\n", - "y = x ** 2\n", - "\n", - "fig = plt.figure()\n", - "\n", - "# Definindo os eixos\n", - "axes = fig.add_axes([0.1, 0.1, 0.8, 0.8])\n", - "\n", - "axes.plot(x, y, 'r')\n", - "\n", - "axes.set_xlabel('x')\n", - "axes.set_ylabel('y')\n", - "axes.set_title('Gráfico de Linha');" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n6FGnXWLIELjuOp8/vVU9hRER4auvvuKGG24I2DnT09MpcAGTiy1YsIBnnnmG2bNnU7duXQ4ePMjU\nqVP9GKFvHDlyhCZNmtC7d+9c97vQ62FMvqlC795Ogrj3Xr+cwkoUYSa76qXk5GSioqLIyMgAYNu2\nbbRs2ZJSpUrRpk0b+vfvT8+ePYHsq11iY2OZN28eAIMHD+b222+nZ8+elC5dmjFjxrBs2TKaNWtG\nmTJlqFixIg8//DBpaWnZxrd8+XKaNWtGXc98M6VLl6Znz54UK1YMgFOnTvHkk09StWpVKlSowIMP\nPsjvv/+eefzkyZOpX78+pUqV4qqrrmL27NnnxXgmzjOv6czrHzt2LFWrVuXyyy/npZdeytz35MmT\n3HPPPZQtW5batWuzbNmys2IeOnQo9evX56mnnqJ27dp8+eWXmdvGjBlDixYtGDBgAJdddhmDBw9m\nzJgx/PnPf87c57HHHqNKlSqUKlWKRo0asXDhwmyvjTEX5dVX4ddfnR5Ofqo1sEQRIbJWpXTv3p2m\nTZvy22+/MWjQID766KOztudVRTVlyhS6du3KwYMH6dGjBwULFuStt94iNTWVxYsXM2/ePN59991s\nj23SpAmzZs0iMTGR7777jlOnTp21feDAgWzatInVq1ezadMmdu7cyfOeefOXLl1Kr169GDZsGIcO\nHeKbb76hWrVqXr1mgEWLFrFx40a+/vprnn/+eX755RcAEhMT2bp1K1u3bmXWrFmMGTPmrOOqV6/O\nwoULOXToEIMGDeKuu+5iz549mdu///57atSowd69e3nmmWfOO3fjxo1ZvXo1Bw4coHv37tx+++3n\nvW5jLsqcOfD22/DZZ1CkiP/O4/qSfLncnPCMt6pVq6YlSpTQMmXKaJkyZbRTp06qqrpt2zaNiorS\n9PR0TU5O1kKFCumJEycyj7vrrru0Z8+eqqqalJSklStXPu95586dq6qqiYmJ2rJly1zjeOutt7Rz\n5845bp85c6Z27NhRy5QpoyVKlNABAwZoRkaGqqoWK1ZMt2zZkrnvd999p7Gxsaqqet999+mAAQNy\nfO1nYjwT55nXdOb179q1K3N748aNdeLEiaqqWr16dZ09e3bmtg8++OC8a5BVfHy8TpkyRVVVR48e\nrVWrVj1r++jRo/XPf/5zjseXKVNGV69eneN2Y7yyZYtqTIxqUlK+nsbzPZvrd7G1UYSZyZMn59pG\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Gráficos com 2 figuras\n", - "x = linspace(0, 5, 10)\n", - "y = x ** 2\n", - "\n", - "fig = plt.figure()\n", - "\n", - "axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # eixos da figura principal\n", - "axes2 = fig.add_axes([0.2, 0.5, 0.4, 0.3]) # eixos da figura secundária\n", - "\n", - "# Figura principal\n", - "axes1.plot(x, y, 'r')\n", - "axes1.set_xlabel('x')\n", - "axes1.set_ylabel('y')\n", - "axes1.set_title('Figura Principal')\n", - "\n", - "# Figura secundária\n", - "axes2.plot(y, x, 'g')\n", - "axes2.set_xlabel('y')\n", - "axes2.set_ylabel('x')\n", - "axes2.set_title('Figura Secundária');" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nU2T5AAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Gráficos em Paralelo\n", - "fig, axes = plt.subplots(nrows = 1, ncols = 2)\n", - "\n", - "for ax in axes:\n", - " ax.plot(x, y, 'r')\n", - " ax.set_xlabel('x')\n", - " ax.set_ylabel('y')\n", - " ax.set_title('Título')\n", - " \n", - "fig.tight_layout()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Gráficos a partir do NumPy" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib notebook\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width);\n", - " canvas.attr('height', height);\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " event.shiftKey = false;\n", - " // Send a \"J\" for go to next cell\n", - " event.which = 74;\n", - " event.keyCode = 74;\n", - " manager.command_mode();\n", - " manager.handle_keydown(event);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Plot e Scatter\n", - "fig = plt.figure()\n", - "\n", - "ax1 = fig.add_subplot(1,2,1)\n", - "ax1.plot(np.random.randn(50), color='red')\n", - "\n", - "ax2 = fig.add_subplot(1,2,2)\n", - "ax2.scatter(np.arange(50), np.random.randn(50))\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width);\n", - " canvas.attr('height', height);\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " event.shiftKey = false;\n", - " // Send a \"J\" for go to next cell\n", - " event.which = 74;\n", - " event.keyCode = 74;\n", - " manager.command_mode();\n", - " manager.handle_keydown(event);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Controle dos eixos\n", - "fig, axes = plt.subplots(1, 3, figsize = (12, 4))\n", - "\n", - "axes[0].plot(x, x**2, x, x**3)\n", - "axes[0].set_title(\"Eixos com range padrão\")\n", - "\n", - "axes[1].plot(x, x**2, x, x**3)\n", - "axes[1].axis('tight')\n", - "axes[1].set_title(\"Eixos menores\")\n", - "\n", - "axes[2].plot(x, x**2, x, x**3)\n", - "axes[2].set_ylim([0, 60])\n", - "axes[2].set_xlim([2, 5])\n", - "axes[2].set_title(\"Eixos customizados\");" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width);\n", - " canvas.attr('height', height);\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " event.shiftKey = false;\n", - " // Send a \"J\" for go to next cell\n", - " event.which = 74;\n", - " event.keyCode = 74;\n", - " manager.command_mode();\n", - " manager.handle_keydown(event);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Grid\n", - "fig, axes = plt.subplots(1, 2, figsize=(10,3))\n", - "\n", - "# Grid padrão\n", - "axes[0].plot(x, x**2, x, x**3, lw = 2)\n", - "axes[0].grid(True)\n", - "\n", - "# Grid customizado\n", - "axes[1].plot(x, x**2, x, x**3, lw = 2)\n", - "axes[1].grid(color = 'b', alpha = 0.5, linestyle = 'dashed', linewidth = 0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width);\n", - " canvas.attr('height', height);\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " event.shiftKey = false;\n", - " // Send a \"J\" for go to next cell\n", - " event.which = 74;\n", - " event.keyCode = 74;\n", - " manager.command_mode();\n", - " manager.handle_keydown(event);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Diferentes estilos de Plots\n", - "xx = np.linspace(-0.75, 1., 100)\n", - "n = np.array([0,1,2,3,4,5])\n", - "\n", - "fig, axes = plt.subplots(1, 4, figsize=(12,3))\n", - "\n", - "axes[0].scatter(xx, xx + 0.25*randn(len(xx)))\n", - "axes[0].set_title(\"scatter\")\n", - "\n", - "axes[1].step(n, n**2, lw=2)\n", - "axes[1].set_title(\"step\")\n", - "\n", - "axes[2].bar(n, n**2, align=\"center\", width=0.5, alpha=0.5)\n", - "axes[2].set_title(\"bar\")\n", - "\n", - "axes[3].fill_between(x, x**2, x**3, color=\"green\", alpha=0.5);\n", - "axes[3].set_title(\"fill_between\");" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width);\n", - " canvas.attr('height', height);\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " event.shiftKey = false;\n", - " // Send a \"J\" for go to next cell\n", - " event.which = 74;\n", - " event.keyCode = 74;\n", - " manager.command_mode();\n", - " manager.handle_keydown(event);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Color Map\n", - "alpha = 0.7\n", - "phi_ext = 2 * np.pi * 0.5\n", - "\n", - "def ColorMap(phi_m, phi_p):\n", - " return ( + alpha - 2 * np.cos(phi_p)*cos(phi_m) - alpha * np.cos(phi_ext - 2*phi_p))\n", - "\n", - "phi_m = np.linspace(0, 2*np.pi, 100)\n", - "phi_p = np.linspace(0, 2*np.pi, 100)\n", - "X,Y = np.meshgrid(phi_p, phi_m)\n", - "Z = ColorMap(X, Y).T\n", - "\n", - "fig, ax = plt.subplots()\n", - "\n", - "p = ax.pcolor(X/(2*np.pi), Y/(2*np.pi), Z, cmap=cm.RdBu, vmin=abs(Z).min(), vmax=abs(Z).max())\n", - "cb = fig.colorbar(p, ax=ax)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Gráficos 3D" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from mpl_toolkits.mplot3d.axes3d import Axes3D" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width);\n", - " canvas.attr('height', height);\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " event.shiftKey = false;\n", - " // Send a \"J\" for go to next cell\n", - " event.which = 74;\n", - " event.keyCode = 74;\n", - " manager.command_mode();\n", - " manager.handle_keydown(event);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Wire frame\n", - "fig = plt.figure(figsize=(8,6))\n", - "\n", - "ax = fig.add_subplot(1, 1, 1, projection = '3d')\n", - "\n", - "p = ax.plot_wireframe(X, Y, Z, rstride=4, cstride=4)" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support.' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " this.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width);\n", - " canvas.attr('height', height);\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
')\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('