---
# System prepended metadata

title: Revisão Julho - Estrutura de Dados

---

---
title: Revisão Julho - Estrutura de Dados
---

![](https://letscode-academy.com/assets/logo_lc_png.png)

----------

<center> <font size="+4"><b> Avaliação de Retorno</b></font></center>


----------

# Regras

- O aluno estará aprovado se obter ao menos 50% da nota final;
- O aluno pode consultar o material em sala, assim como material disponível na internet;
- Entretanto, o aluno deve realizar a avaliação de maneira individual, sem consultas a outras pessoas;
- A avaliação deve ser entregue até dia 07/fev/21, 23h50, via email para rychard.guedes@letscode.com.br;
- O código deve estar comentado, contando positivamente na avaliação.

# Exercícios

## Exercício 1 - Música - 25 pts

Crie uma classe chamada `Music` para modelar dados de uma música. Um objeto dessa classe deve possuir:

* Título (`str`)
* Autor (`str`)
* Gênero (`str`)
* Duração em segundos (`int`)
* Visualizações (`int`)

Uma música pode ser tocada através do método `play`, o qual além de acrescentar uma visualização ao respectivo atributo da música, deve mostrar na tela uma mensagem com um player, mostrando: 

* tempo faltando em minutos e segundos;
* tempo passado em minutos e segundos;
* uma sequência de hashtags `#` e hífens `-` que devem ser proporcionais ao tempo reproduzido da música. 
 
Como exemplo:

`00:30 #####-------------- 01:30`

Observe que já passou 1/4 da música (30 s) de um total de 2 min (120 s), portanto, 1/4 dos símbolos é composto por `#` e o restante por `-`.

:::spoiler Dica
Para atualizar o valor de uma mensagem mostrada, sem criar uma nova linha, pode-se usar o print da seguinte forma:
 
```python
import time

for x in range(10):
    print(f'{x}\r', end = '')
    time.sleep(1)
print()
```

O `print` com `\r` no final da string a ser mostrada faz com que o cursor volte para o início do texto. Dessa forma, na próxima vez que algo for mostrado na tela, sobrescreverá o que estava escrito antes.
:::

----------

## Exercício 2 - Crimes em São Francisco - 50 pts

Utilizando o dataset de [crimes em São Francisco](https://s3-sa-east-1.amazonaws.com/lcpi/54f2b05b-1fe0-44f9-ae75-5e84fb3da81f.csv), mostre 4 gráficos que indicam as localidades dos crimes (dispersão), reproduzindo a imagem a seguir. Faça com suplots, de tal forma que exista 1 gráfico para cada período do dia (manhã, tarde, noite e madrugada). Além disso, mostre para cada categoria do crime uma cor diferente. Realize os processamentos necessários para criação dos gráficos.

![](https://s3-sa-east-1.amazonaws.com/lcpi/cabfd987-74ac-4d8e-b461-06d1837a4ee7.png)

----------

## Exercício 3 - Vencedor - 25 pts

Baseado nas tabelas, qual será o retorno da seguinte query?

<center><img src="https://s3-sa-east-1.amazonaws.com/lcpi/7dbafb1c-863b-405f-b602-ca67d927cd17.png" width="50%"/></center>

```sql
SELECT id FROM runners
WHERE id NOT IN (SELECT winner_id FROM races)
```