{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercícios sobre o comando for\n",
    "Vamos praticar um pouco mais com o comando `for` com strings e a função `range`.\n",
    "\n",
    "## Relembrando o comando for\n",
    "\n",
    "De modo geral, podemos dizer que existem duas maneiras de se usar o comando for. \n",
    "\n",
    "### Primeiro modo\n",
    "\n",
    "O primeiro modo é usado quando estamos interessados apenas nos elementos da string (ou lista), sem precisar saber o índice desses elementos:\n",
    "```python\n",
    "for variavel in minha_string_ou_lista :\n",
    "  # faça alguma coisa com variavel\n",
    "```  \n",
    "\n",
    "#### Exemplos\n",
    "\n",
    "Percorrer toda uma string, mostrando um caractere por vez:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M\n",
      "i\n",
      "n\n",
      "h\n",
      "a\n",
      " \n",
      "s\n",
      "t\n",
      "r\n",
      "i\n",
      "n\n",
      "g\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "for letra in frase: # letra agora corresponde a cada caractere em frase\n",
    "    print(letra) # posso fazer coisas com letra"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Veja que podemos usar qualquer nome para variável:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M\n",
      "i\n",
      "n\n",
      "h\n",
      "a\n",
      " \n",
      "s\n",
      "t\n",
      "r\n",
      "i\n",
      "n\n",
      "g\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "for c in frase: # c agora corresponde a cada caractere em frase\n",
    "    print(c) # posso fazer coisas com c"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Podemos verificar uma condição dentro do comando for. Por exemplo, ignorar espaços em branco:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M\n",
      "i\n",
      "n\n",
      "h\n",
      "a\n",
      "s\n",
      "t\n",
      "r\n",
      "i\n",
      "n\n",
      "g\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "for letra in frase:\n",
    "    if letra != \" \":\n",
    "        print(letra)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Segundo modo\n",
    "O segundo modo é usado quando precisamos percorrer os elementos da string (ou lista) usando as suas posições ou índices:\n",
    "```python\n",
    "for i in range(len(minha_string_ou_lista)):\n",
    "  # faça alguma coisa com i, inclusive acessar minha_string_ou_lista[i]\n",
    "```  \n",
    "#### Exemplos\n",
    "\n",
    "Percorrer toda uma string, mostrando um caractere por vez, mas usando o seu índice:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M\n",
      "i\n",
      "n\n",
      "h\n",
      "a\n",
      " \n",
      "s\n",
      "t\n",
      "r\n",
      "i\n",
      "n\n",
      "g\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "for i in range(len(frase)):\n",
    "    print(frase[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Percorrer toda uma string, mostrando um caractere e o seu índice por vez:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M 0\n",
      "i 1\n",
      "n 2\n",
      "h 3\n",
      "a 4\n",
      "  5\n",
      "s 6\n",
      "t 7\n",
      "r 8\n",
      "i 9\n",
      "n 10\n",
      "g 11\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "for i in range(len(frase)):\n",
    "    print(frase[i],i)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Assim como no modo anterior, também podemos usar qualquer nome de variável:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M 0\n",
      "i 1\n",
      "n 2\n",
      "h 3\n",
      "a 4\n",
      "  5\n",
      "s 6\n",
      "t 7\n",
      "r 8\n",
      "i 9\n",
      "n 10\n",
      "g 11\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "for posicao in range(len(frase)):\n",
    "    print(frase[posicao],posicao)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Também podemos percorrer a string de trás para frente:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g\n",
      "n\n",
      "i\n",
      "r\n",
      "t\n",
      "s\n",
      " \n",
      "a\n",
      "h\n",
      "n\n",
      "i\n",
      "M\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "indice_fim = len(frase)-1\n",
    "for i in range(indice_fim, -1, -1):\n",
    "    print(frase[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "E também verificar condições. Vamos ignorar os espaços em branco:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "M\n",
      "i\n",
      "n\n",
      "h\n",
      "a\n",
      "s\n",
      "t\n",
      "r\n",
      "i\n",
      "n\n",
      "g\n"
     ]
    }
   ],
   "source": [
    "frase = \"Minha string\"\n",
    "for i in range(len(frase)):\n",
    "    if frase[i] != \" \":\n",
    "        print(frase[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercícios"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Na célula abaixo, percorra a string `mensagem1` e mostre cada um de seus caracteres."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "mensagem1 = \"Estou aprendendo Python.\"\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Na célula abaixo, percorra a string `mensagem2` e mostre cada um de seus caracteres, começando do final até o início."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "mensagem2 = \".C euq od licáf siam é nohtyP\"\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Mostre todos os números que são divisíveis por 9 e por 2 ao mesmo tempo no intervalo de 0 a 100."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Na célula abaixo, percorra a string `mensagem3`, mostre cada um de seus caracteres, mas toda vez que encontrar a letra `a`, mostre um `4` e se encontrar a letra `o`, mostre um `*`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "mensagem3 = \"Nada como um dia depois do outro\"\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Faça o mesmo exercício anterior, mas em vez de mostrar cada caractere na tela, adicione (concatene) os caracteres a outra string `mensagem_trocada`. Ao final mostre o conteúdo de `mensagem_trocada` de uma vez."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "mensagem3 = \"Nada como um dia depois do outro\"\n",
    "mensagem_trocada = \"\"\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Na célula abaixo, mostre quantas vezes aparece a letra `e` na string de nome `latim`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "latim = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\"\n"
   ]
  }
 ],
 "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": 2
}