|
| 1 | +--- |
| 2 | +title: Gerador de Cumprimentos |
| 3 | +level: Python 1 |
| 4 | +language: pt-BR |
| 5 | +stylesheet: python |
| 6 | +embeds: "*.png" |
| 7 | +materials: ["Project Resources/*.*","Club Leader Resources/*.*"] |
| 8 | +... |
| 9 | + |
| 10 | +#Introdução: { .intro} |
| 11 | + |
| 12 | +Aprenda a usar listas para armazenar vários dados em 1 variável. |
| 13 | + |
| 14 | +#Etapa 1: É legal ser legal { .activity} |
| 15 | + |
| 16 | +Neste projeto, você vai fazer um programa que dá um cumprimento gerado aleatoriamente para o usuário! |
| 17 | + |
| 18 | +## Lista de verificação da atividade { .check} |
| 19 | + |
| 20 | ++ Em seus projetos, até agora você usou uma variável para armazenar um único dado, como um nome ou uma pontuação. Mas e se você quiser armazenar vários dados? Em Python, você pode usar uma _lista_ para armazenar vários dados em 1 variável: |
| 21 | + |
| 22 | + ```python |
| 23 | + bigPlanets = [ "júpiter" , "saturno" , "urano" , "netuno"] |
| 24 | + ``` |
| 25 | + |
| 26 | + Esta lista de texto também é conhecida como um _array_ de texto. Para acessar itens da lista, você só precisa saber a posição do item. Execute esse programa para ter uma ideia melhor de como as listas funcionam: |
| 27 | + |
| 28 | + ```python |
| 29 | + bigPlanets = [ "júpiter" , "saturno" , "urano" , "netuno"] |
| 30 | + print( bigPlanets ) |
| 31 | + print( bigPlanets[0] ) |
| 32 | + print( bigPlanets[1] ) |
| 33 | + print( bigPlanets[2] ) |
| 34 | + print( bigPlanets[3] ) |
| 35 | + ``` |
| 36 | + |
| 37 | +  |
| 38 | + |
| 39 | + Como você pode ver, as posições começam em 0 e não em 1, então `bigPlanets[1]` é "saturno" (o segundo item) e não "júpiter". |
| 40 | + |
| 41 | ++ Você pode usar uma lista chamada `cumprimentos` para armazenar todos os cumprimentos possíveis para o seu programa gerador de cumprimentos, e então usar `choice(cumprimentos)` para escolher um cumprimento aleatório para o usuário: |
| 42 | + |
| 43 | + ```python |
| 44 | + from random import * |
| 45 | +
|
| 46 | + print("Gerador de Cumprimentos") |
| 47 | + print("--------------------") |
| 48 | +
|
| 49 | + cumprimentos = [ "Excelente trabalho. Realmente muito bem feito." , |
| 50 | + "Suas habilidades de programação são muito, muito boas." , |
| 51 | + "Você é um humano excelente." |
| 52 | + ] |
| 53 | +
|
| 54 | + #imprime um item aleatório da lista 'cumprimentos' |
| 55 | + print(choice(cumprimentos)) |
| 56 | + print("De nada!") |
| 57 | + ``` |
| 58 | + |
| 59 | +  |
| 60 | + |
| 61 | ++ Você pode tornar seus cumprimentos um pouco mais interessantes combinando itens aleatórios de 2 listas diferentes: |
| 62 | + |
| 63 | + ```python |
| 64 | + from random import * |
| 65 | +
|
| 66 | + print("Gerador de Cumprimentos") |
| 67 | + print("--------------------") |
| 68 | +
|
| 69 | + adjetivos = [ "maravilhoso" , "acima da média" , "excelente" ] |
| 70 | + hobbies = [ "andar de bicicleta" , "programar" , "fazer chá" ] |
| 71 | +
|
| 72 | + nome = input("Qual é o seu nome?: ") |
| 73 | + print( "Aqui está o seu cumprimento" , nome , ":" ) |
| 74 | +
|
| 75 | + #obtém um item aleatório de ambas as listas e adiciona-os ao cumprimento |
| 76 | + print( nome , "você é" , choice(adjetivos) , "em" , choice(hobbies) ) |
| 77 | + print( "De nada!" ) |
| 78 | + ``` |
| 79 | + |
| 80 | +  |
| 81 | + |
| 82 | +## Salve seu projeto {.save} |
| 83 | + |
| 84 | +## Desafio: Adicione mais cumprimentos { .challenge} |
| 85 | +Tente pensar em mais cumprimentos e adicione-os ao seu programa! Lembre-se de que você precisa adicionar uma vírgula (`,`) entre os itens em suas listas. |
| 86 | + |
| 87 | +## Salve seu projeto {.save} |
| 88 | + |
| 89 | +#Etapa 2: Cumprimentos sem fim { .activity} |
| 90 | + |
| 91 | +## Lista de verificação da atividade { .check} |
| 92 | + |
| 93 | ++ Usando o que você sabe sobre laços `while` (enquanto) e instruções `if` (se), você pode modificar seu programa para continuar dando cumprimentos até que o usuário decida sair: |
| 94 | + |
| 95 | + ```python |
| 96 | + from random import * |
| 97 | +
|
| 98 | + #o programa continua em execução enquanto a variável for verdadeira 'True' |
| 99 | + executa = True |
| 100 | +
|
| 101 | + adjetivos = [ "maravilhoso" , "acima da média" , "excelente" ] |
| 102 | + hobbies = [ "andar de bicicleta" , "programar" , "fazer chá" ] |
| 103 | +
|
| 104 | + print("Gerador de Cumprimentos") |
| 105 | + print("--------------------") |
| 106 | +
|
| 107 | + nome = input("Qual é o seu nome?: ") |
| 108 | +
|
| 109 | + print(''' |
| 110 | + Menu |
| 111 | + c = obter cumprimento |
| 112 | + q = sair |
| 113 | + ''') |
| 114 | +
|
| 115 | + while executa == True: |
| 116 | +
|
| 117 | + menuChoice = input("\n>_").lower() |
| 118 | +
|
| 119 | + #'c' para um cumprimento |
| 120 | + if menuChoice == 'c': |
| 121 | +
|
| 122 | + print( "Aqui está o seu cumprimento" , nome , ":" ) |
| 123 | +
|
| 124 | + #obtém um item aleatório de ambas as listas e adiciona-os ao cumprimento |
| 125 | + print( nome , "você é" , choice(adjetivos) , "em" , choice(hobbies) ) |
| 126 | + print( "De nada!" ) |
| 127 | +
|
| 128 | + #'q' para sair |
| 129 | + elif menuChoice == 'q': |
| 130 | +
|
| 131 | + executa = False |
| 132 | + |
| 133 | + else: |
| 134 | +
|
| 135 | + print("Escolha uma opção válida!") |
| 136 | + ``` |
| 137 | + |
| 138 | +  |
| 139 | + |
| 140 | + Lembre-se de que o laço `while` continua a ser executado enquanto a variável `executa` for verdadeira `True`. Se o usuário digitar `q` para sair, `executa` é definida como falsa `False`. |
| 141 | + |
| 142 | +## Salve seu projeto {.save} |
| 143 | + |
| 144 | +#Etapa 3: Personalização de cumprimentos { .activity} |
| 145 | + |
| 146 | +## Lista de verificação da atividade { .check} |
| 147 | + |
| 148 | ++ Seu gerador de cumprimentos está começando a ganhar forma, mas ele tem um problema: e se o usuário não souber andar de bicicleta ou fazer chá? Nesse caso, seus cumprimentos não serão verdadeiros e não vão animá-lo! |
| 149 | + |
| 150 | + Vamos modificar seu programa, de forma que o usuário possa escolher adicionar ou remover itens da lista de `hobbies`, para que ele possa personalizar os cumprimentos recebidos: |
| 151 | + |
| 152 | + ```python |
| 153 | + from random import * |
| 154 | +
|
| 155 | + executa = True |
| 156 | + adjetivos = [ "maravilhoso" , "acima da média" , "excelente" ] |
| 157 | + hobbies = [ "andar de bicicleta" , "programar" , "fazer chá" ] |
| 158 | +
|
| 159 | + print("Gerador de Cumprimentos") |
| 160 | + print("--------------------") |
| 161 | +
|
| 162 | + nome = input("Qual é o seu nome?: ") |
| 163 | +
|
| 164 | + print(''' |
| 165 | + Menu |
| 166 | + c = obter cumprimento |
| 167 | + a = adicionar hobby |
| 168 | + d = remover hobby |
| 169 | + p = imprimir hobbies |
| 170 | + q = sair |
| 171 | + ''') |
| 172 | +
|
| 173 | + while executa == True: |
| 174 | +
|
| 175 | + menuChoice = input("\n>_").lower() |
| 176 | +
|
| 177 | + #'c' para um cumprimento |
| 178 | + if menuChoice == 'c': |
| 179 | +
|
| 180 | + print( "Aqui está o seu cumprimento" , nome , ":" ) |
| 181 | +
|
| 182 | + #obtém um item aleatório de ambas as listas e adiciona-os ao cumprimento |
| 183 | + print( nome , "você é" , choice(adjetivos) , "em" , choice(hobbies) ) |
| 184 | + print( "De nada!" ) |
| 185 | +
|
| 186 | + #'a' para adicionar hobby |
| 187 | + elif menuChoice == 'a': |
| 188 | +
|
| 189 | + itemToAdd = input("Adicione o hobby: ") |
| 190 | + hobbies.append(itemToAdd) |
| 191 | +
|
| 192 | + #'d' para remover um hobby |
| 193 | + elif menuChoice == 'd': |
| 194 | +
|
| 195 | + itemToDelete = input("Insira o hobby a ser removido: ") |
| 196 | + hobbies.remove(itemToDelete) |
| 197 | +
|
| 198 | + #'p' para imprimir a lista de hobbies |
| 199 | + elif menuChoice == 'p': |
| 200 | + print(hobbies) |
| 201 | +
|
| 202 | + #'q' para sair |
| 203 | + elif menuChoice == 'q': |
| 204 | +
|
| 205 | + executa = False |
| 206 | + |
| 207 | + else: |
| 208 | + |
| 209 | + print("Insira uma opção válida!") |
| 210 | + ``` |
| 211 | + |
| 212 | + Como você pode ver, você pode usar `append()` para adicionar a uma lista, e `remove()` para remover um item. Execute esse programa e personalize os hobbies na lista para que eles sirvam para você. Peça ao programa que cumprimente você até que fique de bom humor! |
| 213 | + |
| 214 | ++ Quando testou o programa acima, você encontrou algum problema? No momento, seu gerador de cumprimentos para de funcionar se você tentar remover um cumprimento que não está na lista: |
| 215 | + |
| 216 | +  |
| 217 | + |
| 218 | + Você pode consertar esse problema, primeiro verificando se o item a ser removido existe na lista. Substitua seu código para remover um hobby por este código: |
| 219 | + |
| 220 | + ```python |
| 221 | + #'d' para remover um hobby |
| 222 | + elif menuChoice == 'd': |
| 223 | +
|
| 224 | + itemToDelete = input("Insira o hobby a ser removido: ") |
| 225 | + #só remove um item se ele estiver na lista |
| 226 | + if itemToDelete in hobbies: |
| 227 | + hobbies.remove(itemToDelete) |
| 228 | + else: |
| 229 | + print("O hobby não está na lista!") |
| 230 | + ``` |
| 231 | + |
| 232 | + Agora, execute o programa e tente remover um hobby que não está na lista: |
| 233 | + |
| 234 | +  |
| 235 | + |
| 236 | +## Salve seu projeto {.save} |
| 237 | + |
| 238 | +## Desafio: Duplicação de hobbies { .challenge} |
| 239 | +Outro problema com o programa é que é possível adicionar o mesmo hobby mais de uma vez: |
| 240 | + |
| 241 | + |
| 242 | + |
| 243 | +Você consegue resolver esse problema? Assim, um hobby só pode ser adicionado se ele ainda não estiver na lista: |
| 244 | + |
| 245 | +```python |
| 246 | +if itemToAdd not in hobbies: |
| 247 | + #adicione o código aqui... |
| 248 | +``` |
| 249 | + |
| 250 | +## Salve seu projeto {.save} |
| 251 | + |
| 252 | +## Desafio: Serviço de escolha de nome para animais de estimação { .challenge} |
| 253 | +Escreva um programa para ajudar um novo dono a dar nome ao seu animal de estimação: |
| 254 | + |
| 255 | + |
| 256 | + |
| 257 | +Seu programa pode: |
| 258 | ++ permitir que o usuário adicione e remova itens da lista; |
| 259 | ++ dar nomes diferentes para animais machos e fêmeas, ou para tipos diferentes de animais; |
| 260 | ++ perguntar ao usuário quantos nomes eles precisam, caso eles tenham mais de um animal de estimação para dar nome. |
| 261 | + |
| 262 | +## Salve seu projeto {.save} |
0 commit comments