├── LICENSE ├── README.md ├── Strings _II.py ├── api_API.py ├── arquivo.teste.txt ├── brasil_covid.csv..csv ├── cadastro_pesssoas.csv ├── cadastro_usuario.py ├── criando_arquivo_csv.py ├── criando_um_arquivo.py ├── date_time.py ├── dicionario.py ├── dom_casmurro_cap_1.txt.txt ├── estrutura_de_repeticao.py ├── estruturas_condicionais.py ├── estruturas_de_repetição_for.py ├── estruturas_sequenciais.py ├── funcoes_def.py ├── leitura_arquivos_CSV.py ├── listas_e_tuplas.py ├── manipulação_de_arquivos.py ├── operadores_aritimedicos.py ├── projeto_final ├── brasil_covid.csv ├── meu-primeiro-grafico.png ├── projeto_final_lets_code.py └── qr-code.png ├── strings.py ├── tipos_de_variaveis.py └── user_csv /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Diego Dantas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python-Basico-Lets-Code 2 | Curso Básico de Python da Lets-Code 3 | -------------------------------------------------------------------------------- /Strings _II.py: -------------------------------------------------------------------------------- 1 | # Strings II 2 | 3 | # Operador + em string: 4 | cumprimento = 'olá, ' 5 | nome = 'Felipe' 6 | print(cumprimento + nome) 7 | 8 | # operador * em string: 9 | print(nome * 5) 10 | print() 11 | 12 | idade = 35 13 | n_filhos = 2 14 | 15 | # Método format(): 16 | print('{} tem {} anos e {} filhos'.format(nome, idade, n_filhos)) 17 | print() 18 | 19 | # Formatando numeros: 20 | preco_gasolina = 3.476 21 | print('O preço da gasolina subiu e está em R$ {:.2f}'.format(preco_gasolina)) 22 | print() 23 | 24 | # Método f em string: 25 | print(f'{nome} tem {idade} anos e {n_filhos} filhos ') 26 | 27 | # 28 | dia = 1 29 | mes = 8 30 | ano = 2019 31 | data1 = '{}/{}/{}'.format(dia, mes, ano) 32 | print(data1) 33 | # Saída: 1/8/2019 34 | # O dia e o mês ocupam apenas 1 espaço 35 | 36 | data2 = '{:2d}/{:2d}/{:4d}'.format(dia, mes, ano) 37 | # A opção 'd' significa que o parâmetro é um número inteiro. 38 | print(data2) 39 | # Saída: 1/ 8/2019 40 | # Agora, dia e mês ocupam obrigatoriamente 2 espaços: 1/ 8/2019 41 | 42 | 43 | # Podemos forçar que os espaços em branco sejam preenchidos com o número 0: 44 | data3 = '{:02d}/{:02d}/{:04d}'.format(dia, mes, ano) 45 | print(data3) 46 | # Saída: 01/08/2019 47 | # Agora sim a data está no formato usual, dd/mm/aaaa: 01/08/2019 -------------------------------------------------------------------------------- /api_API.py: -------------------------------------------------------------------------------- 1 | # API: Application Programming Interface 2 | # Hoje em dia é muito comum que diferentes aplicações consumam dados pela internet, muitas vezes dados providenciados por terceiros. 3 | # Por exemplo, um aplicativo de entrega de alimentos pode usar dados de geolocalização do Google para localizar restaurantes próximos ao usuário e exibir a 4 | # rota percorrida pelo entregador. 5 | # 6 | # Como as aplicações podem rodar em diferentes plataformas (Windows, Android, MacOS, iOS, um navegador de internet...), 7 | # é importante estabelecer uma linguagem comum para que todos consigam consumir esses dados. 8 | # Essa "linguagem comum" é o que chamamos de API: Application Programming Interface. A organização que disponibiliza os dados estabelece algumas 9 | # "regrinhas" para fazermos requisições, e em contrapartida ela garante que os recursos fornecidos também seguirão certos padrões, facilitando a vida dos 10 | # programadores. 11 | # Portanto, quando decidimos utilizar uma API, a primeira coisa que precisamos fazer é estudar sua documentação. Vejamos alguns dos pontos mais relevantes 12 | # para procurar. 13 | # Todos os exemplos de requisição que mostraremos aqui podem ser colados em seu navegador ou estudados usando um requests.get no Python e imprimindo seu 14 | # campo text. 15 | import json 16 | 17 | import requests 18 | 19 | # Definir a url para qual vou fazer a chamada: 20 | url = 'https://v6.exchangerate-api.com/v6/5a5a0dd437de745bc8d037eb/latest/USD' 21 | 22 | # Fazer um requisição: 23 | requisicao = requests.get(url) 24 | 25 | # Verificando se o código de status 200 está ok: 26 | print(f'Sucesso!\n{requisicao.status_code}') 27 | 28 | # Recuperando os dados da requisição: o json() retorna um dicionário. 29 | dados = requisicao.json() 30 | 31 | # Depois de recuperar os dados vamos dar um print() para ver o que tem: 32 | print(dados) 33 | # Vai retornar um dicionario no formato json() todas as informações e cotações das moedas: 34 | 35 | # solicitar ao usuario o valor em reais que deseja converter: 36 | valor_reais = float(input('Informe o valor em R$ a ser convertido: \nR$ ')) 37 | # criar uma variavel que recebe as informações de dados, no conjunto rate e na posição BRL o valor. 38 | cotacao = dados['conversion_rates']['BRL'] 39 | print(f'R$ {valor_reais} em dólar valem U$$ {(valor_reais / cotacao):.2f}') 40 | 41 | # 42 | # Application Programming Interface 43 | # Hoje em dia é muito comum que diferentes aplicações consumam dados pela internet, muitas vezes dados providenciados por terceiros. 44 | # Por exemplo, um aplicativo de entrega de alimentos pode usar dados de geolocalização do Google para localizar restaurantes próximos ao usuário e exibir 45 | # a rota percorrida pelo entregador. 46 | # 47 | # Como as aplicações podem rodar em diferentes plataformas (Windows, Android, MacOS, iOS, um navegador de internet...), é importante estabelecer uma 48 | # linguagem comum para que todos consigam consumir esses dados. 49 | # 50 | # Essa "linguagem comum" é o que chamamos de API: Application Programming Interface. A organização que disponibiliza os dados estabelece algumas "regrinhas" 51 | # para fazermos requisições, e em contrapartida ela garante que os recursos fornecidos também seguirão certos padrões, facilitando a vida dos programadores. 52 | # 53 | # Portanto, quando decidimos utilizar uma API, a primeira coisa que precisamos fazer é estudar sua documentação. 54 | # Vejamos alguns dos pontos mais relevantes para procurar. 55 | # 56 | # Todos os exemplos de requisição que mostraremos aqui podem ser colados em seu navegador ou estudados usando um requests.get no Python e 57 | # imprimindo seu campo text. 58 | # 59 | # URI base 60 | # Várias APIs fornecem um "endereço base". Todas as suas requisições incluirão esse endereço, e ao final dele nós colocamos detalhes específicos para cada 61 | # um dos recursos disponíveis. 62 | # 63 | # Por exemplo, na AlphaVantage (https://www.alphavantage.co/), uma API de dados de bolsas de valores e criptomoedas, a URI base é: 64 | # 65 | # https://www.alphavantage.co/query? 66 | # 67 | # Após a interrogação nós colocaremos os campos para nossa consulta. Por exemplo, para fazer uma consulta sem autenticação para valores da 68 | # IBM, de 5 em 5 minutos, o endereço completo fica: 69 | # 70 | # https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=IBM&interval=5min&apikey=demo 71 | # 72 | # Note o formato com &NomeDoCampo=ValorDoCampo. Ele é bastante comum. Outro formato bastante comum é o de "subdiretórios". 73 | # 74 | # Um exemplo é a PokéAPI. A URI base é: 75 | # 76 | # https://pokeapi.co/api/v2/ 77 | # 78 | # Para procurar por pokémons, adicionamos pokemon/. Em seguida, podemos colocar números (índices) ou nomes de Pokémon, como: 79 | # 80 | # https://pokeapi.co/api/v2/pokemon/ditto/ 81 | # 82 | # https://pokeapi.co/api/v2/pokemon/25 83 | # 84 | # Se ao invés de pokémons estivéssemos interessados em tipos de pokémon, usaríamos types/ e o nome ou índice do tipo desejado: 85 | # 86 | # https://pokeapi.co/api/v2/type/ghost 87 | # 88 | # Formato 89 | # Tipo de dado 90 | # Algumas APIs possuem formatos fixos de dados. Outros permitem que você escolha. É comum, por exemplo, que uma API permita que você escolha 91 | # entre JSON, XML, CSV e/ou outros formatos. 92 | # 93 | # Caso você tenha entrado no AlphaVantage e se registrado para obter uma chave (falaremos mais adiante), você pode especificar, por exemplo, que 94 | # gostaria de resultados no formato CSV: 95 | # 96 | # https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=IBM&interval=5min&dataformat=csv&apikey=demo 97 | # 98 | # Substitua "demo" por sua chave no exemplo acima e ele funcionará. 99 | # 100 | # Schema 101 | # É bastante comum que as APIs disponibilizem um "modelo" genérico de como será formatado o seu JSON, XML etc para que os desenvolvedores saibam quais 102 | # campos esperar e quais tipos de dados serão possíveis para cada campo. Por exemplo: 103 | # 104 | # { 105 | # 'nome':string, 106 | # 'pontuacao':integer 107 | # } 108 | # Autenticação 109 | # Outro aspecto importante é a autenticação. Enquanto algumas APIs são grátis, outras são pagas. Ainda temos algumas híbridas: você pode gratuitamente 110 | # acessar certos recursos, ou consumir um certo volume de dados, e acima disso você deverá pagar. Os dois modelos mais comuns de autenticação: 111 | # 112 | # Chave: ao fazer seu registro, você recebe uma chave que será inclusa na requisição, como é o caso do AlphaVantage. 113 | # OAuth: um esquema um pouco mais complexo onde são combinados códigos de autorização, identificação do cliente e segredo do cliente em um POST, e 114 | # o servidor cria uma sessão por um tempo limitado e fornece o ID da mesma. APIs de gigantes da internet (como Google e Facebook) costumam usar esse modelo. 115 | # Rate limiting 116 | # Um dado parcialmente relacionado ao item anterior. As APIs costumam limitar o número de requisições que você pode fazer em um instante de tempo 117 | # (3 requisições por minuto, 10000 requisições por dia etc). Temos dois motivos: 118 | # 119 | # Segurança: evitar uma sobrecarga no servidor deles que possa indisponibilizar a API para todos os usuários. 120 | # Venda de planos: várias APIs pagas possuem diferentes planos de pagamento. Os planos mais caros costumam permitir mais requisições do que os mais 121 | # baratos ou gratuitos. 122 | # Wrappers 123 | # Algumas APIs possuem tantas buscas diferentes e os resultados podem ser tão complexos que mesmo vindo em formatos simples como JSON pode ser um 124 | # pouco trabalhoso montar as requisições e isolar os dados que queremos. Por conta disso, frequentemente são fornecidas wrapper libraries: 125 | # bibliotecas escritas em linguagens de programação específicas que já trazem classes e funções prontas para fazer requisições automaticamente e já quebrar o resultado em objetos fáceis de serem utilizados. Elas também costumam oferecer alguns benefícios adicionais, como caching: de tempos em tempos a base de dados é totalmente ou parcialmente baixada por completo e salva localmente, o que ajuda a economizar requisições e, consequentemente, uso de dados 126 | # (bastante útil considerando em usuários de dispositivos móveis, por exemplo). 127 | # 128 | # Sandbox 129 | # Várias APIs possuem no mesmo site de sua documentação uma área conhecida como sandbox, onde você pode simular requisições no próprio navegador e ver 130 | # não só a resposta formatada, como informações sobre como montar aquela requisição em software. 131 | # 132 | # Aqui podemos observar a área de sandbox para fazer consultas de gastos por meio de cartão de pagamento do Portal da Transparência do governo federal. 133 | # Note que ele mostra o schema e apresenta campos para preenchermos as buscas. 134 | 135 | # Consumindo APIs em Python 136 | # As APIs são meios de nos conectarmos a recursos na internet. Portanto, já possuímos as ferramentas na mão desde os capítulos anteriores. 137 | # Você irá construir a lógica para decidir o que você irá buscar/consultar, montará uma string seguindo o formato indicado pela documentação da API (como todos os exemplos deste capítulo). Em seguida você tratará a resposta de acordo: 138 | # 139 | # Se for JSON, utilize o método json da própria requests. 140 | # Se for CSV, utilize o módulo CSV estudado anteriormente. 141 | # Se for XML, podemos utilizar o módulo BeautifulSoup, que não será estudado aqui. 142 | # Para outros formatos, provavelmente a solução mais fácil será baixar um módulo preparado para lidar com eles. 143 | # Descobrindo APIs: tem boas ideias e gostaria de saber se existe uma boa API para ajudar? Confira alguns bons repositórios de API organizados por categoria: 144 | # 145 | # https://github.com/n0shake/public-apis 146 | # 147 | # https://github.com/public-apis/public-apis 148 | # 149 | # https://any-api.com/ 150 | # 151 | # Sites de governos costumam ter uma grande riqueza de dados também. Segue abaixo algumas sugestões (oficiais ou mantidas por voluntários) com dados do 152 | # Brasil como um todo. Experimente buscar por bases de dados de sua cidade ou estado! 153 | # 154 | # http://www.transparencia.gov.br/swagger-ui.html 155 | # 156 | # http://www.dados.gov.br/ 157 | # 158 | # https://brasil.io/home/ 159 | -------------------------------------------------------------------------------- /arquivo.teste.txt: -------------------------------------------------------------------------------- 1 | Essa é a primeria linha que escrevi usando Python 2 | Essa é a segunda linha que escrevi usando Python 3 | Essa é a terceira linha que escrevi usando Python 4 | Essa é a terceira linha que escrevi usando Python 5 | -------------------------------------------------------------------------------- /brasil_covid.csv..csv: -------------------------------------------------------------------------------- 1 | data,pais,novos_casos,novos_obitos,total_casos,total_obitos 2 | 2019-12-31,Brasil,0,0,0,0 3 | 2020-01-01,Brasil,0,0,0,0 4 | 2020-01-02,Brasil,0,0,0,0 5 | 2020-01-03,Brasil,0,0,0,0 6 | 2020-01-04,Brasil,0,0,0,0 7 | 2020-01-05,Brasil,0,0,0,0 8 | 2020-01-06,Brasil,0,0,0,0 9 | 2020-01-07,Brasil,0,0,0,0 10 | 2020-01-08,Brasil,0,0,0,0 11 | 2020-01-09,Brasil,0,0,0,0 12 | 2020-01-10,Brasil,0,0,0,0 13 | 2020-01-11,Brasil,0,0,0,0 14 | 2020-01-12,Brasil,0,0,0,0 15 | 2020-01-13,Brasil,0,0,0,0 16 | 2020-01-14,Brasil,0,0,0,0 17 | 2020-01-15,Brasil,0,0,0,0 18 | 2020-01-16,Brasil,0,0,0,0 19 | 2020-01-17,Brasil,0,0,0,0 20 | 2020-01-18,Brasil,0,0,0,0 21 | 2020-01-19,Brasil,0,0,0,0 22 | 2020-01-20,Brasil,0,0,0,0 23 | 2020-01-21,Brasil,0,0,0,0 24 | 2020-01-22,Brasil,0,0,0,0 25 | 2020-01-23,Brasil,0,0,0,0 26 | 2020-01-24,Brasil,0,0,0,0 27 | 2020-01-25,Brasil,0,0,0,0 28 | 2020-01-26,Brasil,0,0,0,0 29 | 2020-01-27,Brasil,0,0,0,0 30 | 2020-01-28,Brasil,0,0,0,0 31 | 2020-01-29,Brasil,0,0,0,0 32 | 2020-01-30,Brasil,0,0,0,0 33 | 2020-01-31,Brasil,0,0,0,0 34 | 2020-02-01,Brasil,0,0,0,0 35 | 2020-02-02,Brasil,0,0,0,0 36 | 2020-02-03,Brasil,0,0,0,0 37 | 2020-02-04,Brasil,0,0,0,0 38 | 2020-02-05,Brasil,0,0,0,0 39 | 2020-02-06,Brasil,0,0,0,0 40 | 2020-02-07,Brasil,0,0,0,0 41 | 2020-02-08,Brasil,0,0,0,0 42 | 2020-02-09,Brasil,0,0,0,0 43 | 2020-02-10,Brasil,0,0,0,0 44 | 2020-02-11,Brasil,0,0,0,0 45 | 2020-02-12,Brasil,0,0,0,0 46 | 2020-02-13,Brasil,0,0,0,0 47 | 2020-02-14,Brasil,0,0,0,0 48 | 2020-02-15,Brasil,0,0,0,0 49 | 2020-02-16,Brasil,0,0,0,0 50 | 2020-02-17,Brasil,0,0,0,0 51 | 2020-02-18,Brasil,0,0,0,0 52 | 2020-02-19,Brasil,0,0,0,0 53 | 2020-02-20,Brasil,0,0,0,0 54 | 2020-02-21,Brasil,0,0,0,0 55 | 2020-02-22,Brasil,0,0,0,0 56 | 2020-02-23,Brasil,0,0,0,0 57 | 2020-02-24,Brasil,0,0,0,0 58 | 2020-02-25,Brasil,0,0,0,0 59 | 2020-02-26,Brasil,1,0,1,0 60 | 2020-02-27,Brasil,0,0,1,0 61 | 2020-02-28,Brasil,0,0,1,0 62 | 2020-02-29,Brasil,0,0,1,0 63 | 2020-03-01,Brasil,1,0,2,0 64 | 2020-03-02,Brasil,0,0,2,0 65 | 2020-03-03,Brasil,0,0,2,0 66 | 2020-03-04,Brasil,0,0,2,0 67 | 2020-03-05,Brasil,1,0,3,0 68 | 2020-03-06,Brasil,5,0,8,0 69 | 2020-03-07,Brasil,5,0,13,0 70 | 2020-03-08,Brasil,0,0,13,0 71 | 2020-03-09,Brasil,12,0,25,0 72 | 2020-03-10,Brasil,0,0,25,0 73 | 2020-03-11,Brasil,9,0,34,0 74 | 2020-03-12,Brasil,18,0,52,0 75 | 2020-03-13,Brasil,25,0,77,0 76 | 2020-03-14,Brasil,21,0,98,0 77 | 2020-03-15,Brasil,23,0,121,0 78 | 2020-03-16,Brasil,79,0,200,0 79 | 2020-03-17,Brasil,34,0,234,0 80 | 2020-03-18,Brasil,57,1,291,1 81 | 2020-03-19,Brasil,137,3,428,4 82 | 2020-03-20,Brasil,193,2,621,6 83 | 2020-03-21,Brasil,283,5,904,11 84 | 2020-03-22,Brasil,224,7,1128,18 85 | 2020-03-23,Brasil,418,7,1546,25 86 | 2020-03-24,Brasil,345,9,1891,34 87 | 2020-03-25,Brasil,310,12,2201,46 88 | 2020-03-26,Brasil,232,11,2433,57 89 | 2020-03-27,Brasil,482,20,2915,77 90 | 2020-03-28,Brasil,502,15,3417,92 91 | 2020-03-29,Brasil,487,22,3904,114 92 | 2020-03-30,Brasil,352,22,4256,136 93 | 2020-03-31,Brasil,323,23,4579,159 94 | 2020-04-01,Brasil,1138,42,5717,201 95 | 2020-04-02,Brasil,1119,40,6836,241 96 | 2020-04-03,Brasil,1074,58,7910,299 97 | 2020-04-04,Brasil,1146,60,9056,359 98 | 2020-04-05,Brasil,1222,73,10278,432 99 | 2020-04-06,Brasil,852,54,11130,486 100 | 2020-04-07,Brasil,926,67,12056,553 101 | 2020-04-08,Brasil,1661,114,13717,667 102 | 2020-04-09,Brasil,2210,133,15927,800 103 | 2020-04-10,Brasil,1930,141,17857,941 104 | 2020-04-11,Brasil,1781,115,19638,1056 105 | 2020-04-12,Brasil,1089,68,20727,1124 106 | 2020-04-13,Brasil,1442,99,22169,1223 107 | 2020-04-14,Brasil,1261,105,23430,1328 108 | 2020-04-15,Brasil,1832,204,25262,1532 109 | 2020-04-16,Brasil,3058,204,28320,1736 110 | 2020-04-17,Brasil,2105,188,30425,1924 111 | 2020-04-18,Brasil,3257,217,33682,2141 112 | 2020-04-19,Brasil,2917,206,36599,2347 113 | 2020-04-20,Brasil,2055,115,38654,2462 114 | 2020-04-21,Brasil,1927,113,40581,2575 115 | 2020-04-22,Brasil,2498,166,43079,2741 116 | 2020-04-23,Brasil,2678,165,45757,2906 117 | 2020-04-24,Brasil,3735,407,49492,3313 118 | 2020-04-25,Brasil,3503,357,52995,3670 119 | 2020-04-26,Brasil,5514,346,58509,4016 120 | 2020-04-27,Brasil,3379,189,61888,4205 121 | 2020-04-28,Brasil,4613,338,66501,4543 122 | 2020-04-29,Brasil,5385,474,71886,5017 123 | 2020-04-30,Brasil,6276,449,78162,5466 124 | 2020-05-01,Brasil,7218,435,85380,5901 125 | 2020-05-02,Brasil,6209,428,91589,6329 126 | 2020-05-03,Brasil,4970,421,96559,6750 127 | 2020-05-04,Brasil,4588,275,101147,7025 128 | 2020-05-05,Brasil,6633,296,107780,7321 129 | 2020-05-06,Brasil,6935,600,114715,7921 130 | 2020-05-07,Brasil,10503,615,125218,8536 131 | 2020-05-08,Brasil,9888,610,135106,9146 132 | 2020-05-09,Brasil,10222,751,145328,9897 133 | 2020-05-10,Brasil,10611,730,155939,10627 134 | 2020-05-11,Brasil,6760,496,162699,11123 135 | 2020-05-12,Brasil,5632,396,168331,11519 136 | 2020-05-13,Brasil,9258,881,177589,12400 137 | 2020-05-14,Brasil,11385,749,188974,13149 138 | 2020-05-15,Brasil,13944,844,202918,13993 139 | 2020-05-16,Brasil,15305,824,218223,14817 140 | 2020-05-17,Brasil,14919,816,233142,15633 141 | 2020-05-18,Brasil,7938,485,241080,16118 142 | 2020-05-19,Brasil,13140,674,254220,16792 143 | 2020-05-20,Brasil,17408,1179,271628,17971 144 | 2020-05-21,Brasil,19951,888,291579,18859 145 | 2020-05-22,Brasil,18508,1188,310087,20047 146 | 2020-05-23,Brasil,20803,1001,330890,21048 147 | 2020-05-24,Brasil,16508,965,347398,22013 148 | 2020-05-25,Brasil,15813,653,363211,22666 149 | 2020-05-26,Brasil,11687,807,374898,23473 150 | 2020-05-27,Brasil,16324,1039,391222,24512 151 | 2020-05-28,Brasil,20599,1086,411821,25598 152 | 2020-05-29,Brasil,26417,1156,438238,26754 153 | 2020-05-30,Brasil,26928,1124,465166,27878 154 | 2020-05-31,Brasil,33274,956,498440,28834 155 | 2020-06-01,Brasil,16409,480,514849,29314 156 | 2020-06-02,Brasil,11598,623,526447,29937 157 | 2020-06-03,Brasil,28936,1262,555383,31199 158 | 2020-06-04,Brasil,28633,1349,584016,32548 159 | 2020-06-05,Brasil,30916,1473,614932,34021 160 | 2020-06-06,Brasil,30830,1005,645762,35026 161 | 2020-06-07,Brasil,27075,904,672837,35930 162 | 2020-06-08,Brasil,18921,525,691758,36455 163 | 2020-06-09,Brasil,15654,679,707412,37134 164 | 2020-06-10,Brasil,32091,1272,739503,38406 165 | 2020-06-11,Brasil,32913,1274,772416,39680 166 | 2020-06-12,Brasil,30412,1239,802828,40919 167 | 2020-06-13,Brasil,25982,909,828810,41828 168 | 2020-06-14,Brasil,21704,892,850514,42720 169 | 2020-06-15,Brasil,17110,612,867624,43332 170 | 2020-06-16,Brasil,20647,627,888271,43959 -------------------------------------------------------------------------------- /cadastro_pesssoas.csv: -------------------------------------------------------------------------------- 1 | Nome: ,Sobrenome: 2 | Cuca ,Beludo 3 | Paula,Trajano 4 | -------------------------------------------------------------------------------- /cadastro_usuario.py: -------------------------------------------------------------------------------- 1 | # Exercicio cadastro de usuario: 2 | import csv 3 | # Criando um cabeçalho: 4 | header = ['Nome: ', 'Sobrenome: '] 5 | 6 | # Criando uma lista vazia para armazenar os dados recebidos atraves do input: 7 | dados = [] 8 | 9 | # Input ao usuario sobre o que deseja fazer: 10 | opc = input('O que deseja fazer?\n\n1 - Para cadastrar usuario: \n0 - Sair\n:') 11 | 12 | # loop até que a resposta seja 0 para sair do loop: 13 | while opc != '0': 14 | nome = input('Qual seu nome ? ') 15 | sobrenome = input('Qual seu sobrenome ? ') 16 | # Adicionando as duas variaveis nome e sobrenome na lista vazia. 17 | dados.append([nome, sobrenome]) 18 | opc = input('O que deseja fazer?\n1 - Para cadastrar usuario: \n0 - Sair\n') 19 | 20 | print(dados) 21 | 22 | # Criando um arquivo: 23 | with open('cadastro_pesssoas.csv', 'w', newline='') as new_arquivo: 24 | # Criando um Escritor: 25 | writer = csv.writer(new_arquivo) 26 | # Escrevendo o cabeçalho: 27 | writer.writerow(header) 28 | # Escrevendo os dados: 29 | writer.writerows(dados) 30 | 31 | # Fazendo a leitura do arquivo criado acima: 32 | with open('cadastro_pesssoas.csv', 'r') as csv_file: 33 | csv_reader = csv.reader(csv_file, delimiter=',') 34 | for row in csv_reader: 35 | print(row) 36 | 37 | 38 | 39 | # DictReader e DictWriter 40 | # Podemos também trabalhar com dicionários, nos quais a primeira linha é lida como a chave e as demais são os respectivos valores: 41 | 42 | with open('email.csv', 'r') as emails: 43 | leitor = csv.DictReader(emails, delimiter=';') #a primeira linha é lida como um cabeçalho 44 | for linha in leitor: 45 | print(linha['Login email']) #podemos chamar um valor específico de cada linha pela chave no cabeçallho 46 | 47 | 48 | with open('names.csv', 'w', newline='') as csvfile: 49 | chaves = ['first_name', 'last_name'] # definimos o cabeçalho 50 | writer = csv.DictWriter(csvfile, fieldnames=chaves) # especificamos o cabeçalho 51 | 52 | writer.writeheader() # escrevemos o cabeçalho 53 | writer.writerow({'first_name': 'Senhor', 'last_name': 'Batata'}) # escrevemos linhas com as chaves e valores 54 | writer.writerow({'first_name': 'Will', 'last_name': 'Smith'}) 55 | writer.writerow({'first_name': 'Elon', 'last_name': 'Musk'}) -------------------------------------------------------------------------------- /criando_arquivo_csv.py: -------------------------------------------------------------------------------- 1 | # Criando um arquivo csv: 2 | import csv 3 | 4 | # with open('user_csv', 'w', newline='') as arquivo_user: 5 | # escritor = csv.writer(arquivo_user) 6 | # escritor.writerow(['Nome:', 'Sobrenome: ', 'email: ', 'Gênero: ']) 7 | # escritor.writerow(['Diego', 'Dantas', 'ddb.gemail.com', 'Masculino']) 8 | 9 | 10 | with open('user_csv', 'r', newline='') as arquivo_user: 11 | leitor = csv.reader(arquivo_user) 12 | # Mostrando linha por linha: 13 | for linha in leitor: 14 | print(linha) -------------------------------------------------------------------------------- /criando_um_arquivo.py: -------------------------------------------------------------------------------- 1 | # Criando um Arquivo: 2 | 3 | # Modo 'w' é para escrever() write() ou seja escrever um arquivo: 4 | # with open('arquivo.teste.txt', 'w', encoding='utf-8') as arquivo: 5 | # arquivo.write('Essa é a primeria linha que escrevi usando Python\n') 6 | # arquivo.write('Essa é a segunda linha que escrevi usando Python\n') 7 | 8 | # Modo 'r' é para ler() read() o arquivo: 9 | with open('arquivo.teste.txt', 'r', encoding='utf-8') as arquivo: 10 | print(arquivo.read(), end='') 11 | 12 | # Modo 'a' é apra adicionar um texto ou mais uma linha no arquivo: 13 | with open('arquivo.teste.txt', 'a', encoding='utf-8') as arquivo: 14 | arquivo.write('Essa é a terceira linha que escrevi usando Python\n') 15 | 16 | # Fazendo a leitura novamente após adicionar mais uma linha: 17 | with open('arquivo.teste.txt', 'r', encoding='utf-8') as arquivo: 18 | print(arquivo.read(), end='') 19 | 20 | #Arquivos em Python 21 | # O Python possui algumas funções prontas para manipular arquivos binários puros (onde, conhecendo a estrutura interna de qualquer formato, podemos salvar qualquer tipo de arquivo) e para manipular arquivos de texto (onde os binários são decodificados como strings). 22 | # 23 | # Focaremos no básico de manipulação de arquivo de texto, pois, na prática, quando formos trabalhar com arquivos mais complexos, é provável que usaremos bibliotecas específicas para lidar com eles, e elas já terão funções próprias para ler e salvar esses arquivos da maneira correta. 24 | # 25 | # Abrindo e fechando arquivos 26 | # Podemos criar arquivos novos ou abrir arquivos já existentes utilizando a função open. Ela possui 2 argumentos: o caminho do arquivo e o modo de operação. 27 | # 28 | # Modo Símbolo Descrição 29 | # read r lê um arquivo existente 30 | # write w cria um novo arquivo 31 | # append a abre um arquivo existente para adicionar informações ao seu final 32 | # update + ao ser combinado com outros modos, permite alteração de arquivo já existente (ex: r+ abre um arquivo existente e permite modificá-lo) 33 | # Após abrirmos (ou criarmos) um arquivo, podemos realizar diversas operações. Ao final de todas elas, devemos fechar o nosso arquivo usando a função close. Essa etapa é importante por 2 motivos: 34 | # 35 | # Se alteramos o arquivo mas não o fechamos, as alterações não serão salvas; 36 | # Se esquecemos de fechar um arquivo, outros programas podem ter problemas ao acessá-lo. 37 | # Roteiro básico 38 | # Vamos seguir os seguintes passos para manipular nossos arquivos: 39 | # 40 | # Abrir ou criar um arquivo: 41 | arquivocriado = open("criado.txt", "w") 42 | # A linha de comando acima abre (ou cria se não existe) um arquivo chamado "criado.txt" para escrita ("w", de write) e guarda na variável "arquivocriado" as informações para manipulá-lo. 43 | 44 | arquivolido = open("teste.txt", "r") 45 | # A linha acima lê ("r", de read) um arquivo já existente chamado "teste.txt" e guarda na variável "arquivolido" as informações para manipulá-lo. 46 | 47 | # Carregar os dados do arquivo (leitura) 48 | dados = arquivolido.read() 49 | print(dados) 50 | # A função read() retorna todo o conteúdo do arquivo como uma string. 51 | 52 | # Precisamos carregar o conteúdo do arquivo em algum formato que sabemos trabalhar. A read() carrega o conteúdo de um arquivo de texto em uma string. 53 | 54 | # Manipular os dados do arquivo (escrita) 55 | arquivocriado.write("linha 1") 56 | arquivocriado.write("linha 2") 57 | arquivocriado.write("linha 3") 58 | # Em casos mais complexos, iremos manipular o conteudo LIDO no passo anterior para posteriormente reescrevê-lo. Em outros mais simples, podemos escrever diretamente no arquivo. 59 | 60 | # Fechar o arquivo 61 | arquivocriado.close() 62 | arquivolido.close() 63 | # Essa etapa é muito importante para garantir a integridade dos novos dados no arquivo. As modificações são salvas somente ao fechar o arquivo. 64 | 65 | # Comando with 66 | # Um jeito mais inteligente de se trabalhar com arquivos é utilizar a sintaxe do "with". Ele garante que após a finalização do bloco, o arquivo será fechado. 67 | 68 | with open('teste.txt', 'r') as arquivolido: 69 | dados = arquivolido.read() 70 | print(dados) 71 | # É possível ler o arquivo linha a linha, como no exemplo: 72 | 73 | with open('teste.txt', 'r') as arquivolido: 74 | linha = arquivolido.readline() 75 | while linha != '': 76 | print(linha, end='') 77 | linha = arquivolido.readline() 78 | 79 | 80 | # OU 81 | 82 | with open('teste.txt', 'r') as arquivolido: 83 | for linha in arquivolido: 84 | print(linha, end='') 85 | # O mesmo pode ser feito para escrever no arquivo: 86 | 87 | with open('teste.txt', 'r') as arquivolido: 88 | with open('copiateste.txt', 'w') as arquivocriado: 89 | for linha in arquivolido: 90 | arquivocriado.write(linha) 91 | # No comando acima, as linhas do arquivo "teste.txt" são copiadas e salvas no arquivo "copiateste.txt". -------------------------------------------------------------------------------- /date_time.py: -------------------------------------------------------------------------------- 1 | # Datetime 2 | # Para treinar o uso da biblioteca datetime, execute as funções do código a seguir, tentando prever os seus resultados: 3 | 4 | import datetime 5 | 6 | d = datetime.date(2001, 9, 11) 7 | tday = datetime.date.today() 8 | print(tday, d) 9 | 10 | 11 | # datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 12 | 13 | tdelta = datetime.timedelta(hours=12) 14 | print(tday + tdelta) 15 | 16 | 17 | bday = datetime.date(2016, 9, 24) 18 | till_bday = tday - bday 19 | print(till_bday.days) 20 | 21 | # strftime - Datetime para String 22 | dt_agora = datetime.datetime.now() 23 | print(dt_agora.strftime('%B %d, %Y')) 24 | 25 | # strptime - String para Datetime 26 | 27 | dt_str = 'July 24, 2016' 28 | dt = datetime.datetime.strptime(dt_str, '%B %d, %Y') 29 | print(dt) 30 | 31 | 32 | -------------------------------------------------------------------------------- /dicionario.py: -------------------------------------------------------------------------------- 1 | # Dicionario: Um dicionário é uma coleção, assim como as listas e as tuplas. Porém, enquanto as tuplas eram indexadas por um índice, os dicionários são indexados 2 | # por chaves. Todo elemento em um dicionário possui uma chave e um valor. Chaves tipicamente são strings, valores podem ser qualquer tipo de dado. 3 | 4 | # Criando um Dicionario: 5 | dados_cidades = {'Nome': 'São Paulo', 6 | 'Estado': 'SP', 7 | 'area KM': 1521, 8 | 'populações_milhoes': 12.18 9 | } 10 | print(dados_cidades) 11 | print() 12 | 13 | # Adicionando valores no Dicionario: 14 | dados_cidades['pais'] = 'Brasil' 15 | print(dados_cidades) 16 | print() 17 | 18 | # Acessando um valor no dicionario: 19 | print(dados_cidades['Nome']) 20 | print() 21 | 22 | # Alterar dados do dicionario: 23 | dados_cidades['area KM'] = 1500 24 | print(dados_cidades) 25 | print() 26 | 27 | # Fazendo uma cópia do dicionario: 28 | dados_cidades2 = dados_cidades.copy() 29 | dados_cidades2['Nome'] = 'Santos' 30 | print(dados_cidades) 31 | print(dados_cidades2) 32 | print() 33 | 34 | # Atualizando um dicionario: 35 | novos_dados = { 36 | 'populações_milhoes': 15, 37 | 'Fundação': '25/01/1554' 38 | } 39 | dados_cidades.update(novos_dados) 40 | print(dados_cidades) 41 | print() 42 | 43 | # Método get() em um valor que não possui no dicionario, retorna none: 44 | print(dados_cidades.get('Prefeito')) 45 | print() 46 | 47 | # Método key() retorna uma lista de chaves de um dicionario ou seja transforma um dicionario em lista: 48 | print(dados_cidades.keys()) 49 | print() 50 | 51 | # Método values() retorna uma lista de valores de um dicionario ou seja transforma um dicionario em lista: 52 | print(dados_cidades.values()) 53 | print() 54 | 55 | # Método items() retorna uma lista de tuplas (chave, valor) de um dicionario ou seja transforma um dicionario em lista: 56 | print(dados_cidades.items()) 57 | 58 | # O dicionário é definido pelos símbolos { e } 59 | 60 | dicionario = {} 61 | 62 | # O dicionário não possui um "append". 63 | # Adicionamos valores diretamente: 64 | 65 | dicionario['cat'] = 'gato' 66 | dicionario['dog'] = 'cachorro' 67 | dicionario['mouse'] = 'rato' 68 | 69 | print(dicionario) 70 | print(type(dicionario)) 71 | print() 72 | ''' 73 | Saída: 74 | {'cat': 'gato', 'dog': 'cachorro', 'mouse': 'rato'} 75 | 76 | ''' 77 | 78 | # Dicionários, assim como as listas, são mutáveis: 79 | dicionario['dog'] = 'cão' 80 | print(dicionario) 81 | print() 82 | # Saída: {'cat': 'gato', 'dog': 'cão', 'mouse': 'rato'} 83 | 84 | # Podemos criar o dicionário diretamente também: 85 | dicionario2 = {'Curso': 'Python Pro', 'Linguagem':'Python', 'Módulo':2} 86 | print(dicionario2) 87 | print() 88 | # Saída: {'Curso': 'Python Pro', 'Linguagem': 'Python', 'Módulo': 2} 89 | 90 | # Podemos utilizar o operador "in" para verificar se uma chave existe: 91 | if 'cat' in dicionario: 92 | print('cat existe!') # Sim 93 | if 'bird' in dicionario: 94 | print('bird existe!') # Não 95 | if 'gato' in dicionario: 96 | print('gato existe!') # Não 97 | 98 | ''' 99 | Também podemos utilizar as funções .keys() e .values() para obter listas 100 | com apenas as chaves ou apenas os valores do dicionário. 101 | ''' 102 | chaves = dicionario.keys() 103 | print(chaves) 104 | print() 105 | # Saída: dict_keys(['cat', 'dog', 'mouse']) 106 | 107 | valores = dicionario.values() 108 | print(valores) 109 | print() 110 | # Saída:dict_values(['gato', 'cão', 'rato']) 111 | 112 | # Já a função .items(), retorna uma lista de tuplas (chave, valor) de um dicionário 113 | 114 | itens = dicionario.items() 115 | print(itens) 116 | print() 117 | # Saída:dict_items([('cat', 'gato'), ('dog', 'cão'), ('mouse', 'rato')]) -------------------------------------------------------------------------------- /dom_casmurro_cap_1.txt.txt: -------------------------------------------------------------------------------- 1 | Dom Casmurro 2 | 3 | Texto de referenda: 4 | Obras Completas de Machado de Assis, vol. I, 5 | Nova Aguilar, Rio de Janeiro, 1994. 6 | Publicado originalmente pela Editora Gamier, Rio de Janeiro, 1899. 7 | 8 | 9 | CAPITULO PRIMEIRO 10 | DO TITULO 11 | 12 | Uma noite destas, vindo da cidade para o Engenho Novo, encontrei no trem da 13 | Central um rapaz aqui do bairro, que eu conhego de vista e de chapeu. 14 | Cumprimentou-me, sentou-se ao pe de mim, falou da Lua e dos ministros, e 15 | acabou recitando-me versos. A viagem era curta, e os versos pode ser que nao 16 | fossem inteiramente maus. Sucedeu, porem, que, como eu estava cansado, fechei 17 | os olhos tres ou quatro vezes; tanto bastou para que ele interrompesse a leitura e 18 | metesse os versos no bolso. 19 | 20 | — Continue, disse eu acordando. 21 | 22 | — Ja acabei, murmurou ele. 23 | 24 | — Sao muito bonitos. 25 | 26 | Vi-lhe fazer um gesto para tira-los outra vez do bolso, mas nao passou do gesto; 27 | estava amuado. No dia seguinte entrou a dizer de mim nomes feios, e acabou 28 | alcunhando-me Dom Casmurro. Os vizinhos, que nao gostam dos meus habitos 29 | reclusos e calados, deram curso a alcunha, que afinal pegou. Nem por isso me 30 | zanguei. Contei a anedota aos amigos da cidade, e eles, por graga, chamam-me 31 | assim, alguns em bilhetes: "Dom Casmurro, domingo vou jantar com voce”.— 32 | "Vou para Petropolis, Dom Casmurro; a casa e a mesma da Renania; ve se deixas 33 | essa caverna do Engenho Novo, e vai la passar uns quinze dias comigo".— "Meu 34 | caro Dom Casmurro, nao cuide que o dispenso do teatro amanha; venha e dormira 35 | aqui na cidade; dou-lhe camarote, dou-lhe cha, dou-lhe cama; so nao Ihe dou 36 | moga”. 37 | 38 | Nao consultes dicionarios. Casmurro nao esta aqui no sentido que eles Ihe dao, 39 | mas no que Ihe pos o vulgo de homem calado e metido consigo. Dom veio por 40 | ironia, para atribuir-me fumos de fidalgo. Tudo por estar cochilando! Tambem nao 41 | achei melhor titulo para a minha narracao; se nao tiver outro daqui ate ao fim do 42 | livro, vai este mesmo. O meu poeta do trem ficara sabendo que nao Ihe guardo 43 | rancor. E com pequeno esforco, sendo o titulo seu, podera cuidar que a obra e 44 | sua. Ha livros que apenas terao isso dos seus autores; alguns nem tanto. 45 | -------------------------------------------------------------------------------- /estrutura_de_repeticao.py: -------------------------------------------------------------------------------- 1 | # Estrutura de repetição while: 2 | from time import sleep 3 | 4 | cont = 0 5 | 6 | while cont < 10: 7 | cont += 1 8 | if cont == 1: 9 | print(f' {cont} Item Limpo!') 10 | else: 11 | sleep(1) 12 | print(f' {cont} Itens Limpos!') 13 | 14 | print('Fim!Louça terminada.') 15 | print() 16 | 17 | # while True ou seja laço infinito com parada forçada break: 18 | cont1 = 0 19 | while True: 20 | cont1 += 1 21 | if cont1 <= 10: 22 | if cont1 == 1: 23 | print(f' {cont1} - Item Limpo!') 24 | else: 25 | sleep(1) 26 | print(f' {cont1} - Itens Limpos!') 27 | else: 28 | break 29 | print('Fim!Louça terminada.') 30 | print() 31 | 32 | # Loop com validação: 33 | 34 | texto = input('Digite sua senha: ') 35 | 36 | contSenha = 0 37 | while texto != 'LetsCode123': 38 | contSenha += 1 39 | texto = input(f'Senha Inválida! {contSenha}° tentavita, você tem 3 tentativas. \nTente novamente: ') 40 | if contSenha == 3: 41 | print('Acesso Bloqueado! Entre em contato com operadora.') 42 | break 43 | print('Acesso Permitido!') 44 | print() 45 | 46 | # Utilizando a palavra reservada continue: 47 | cont4 = 0 48 | while cont4 < 10: 49 | cont4 += 1 50 | if cont4 == 1: 51 | continue 52 | sleep(1) 53 | print(f' {cont4} - Itens Limpos!') -------------------------------------------------------------------------------- /estruturas_condicionais.py: -------------------------------------------------------------------------------- 1 | # Estruturas Condicionais: 2 | valor_da_passagem = 4.30 3 | valor_da_corrida = float(input('Qual o valor da corrida? R$ ')) 4 | 5 | if valor_da_corrida <= valor_da_passagem * 5: 6 | print('Pague a corrida!') 7 | elif valor_da_corrida <= valor_da_passagem * 6: 8 | print('Aguarde um pouco... Tente novamente em 3 minutos.') 9 | else: 10 | print('Pegue um ônibus!') -------------------------------------------------------------------------------- /estruturas_de_repetição_for.py: -------------------------------------------------------------------------------- 1 | # Percorrendo coleções 2 | # O for é um tipo especial de loop feito para percorrer elementos de uma coleção. Acima vimos exemplos usando um while e um contador para percorrer uma lista. 3 | # O for elimina a necessidade de inicializarmos um contador, incrementarmos e verificar a condição de parada. Sintaxe: 4 | # for (variável temporária) in (lista): 5 | # instruções... 6 | 7 | # Criando uma lista e fazendo um for nela ou seja pecorrendo a lista: 8 | nomes_cidade = ['São Paulo', 'Londres', 'Tóquio', 'Paris'] 9 | for cidades in nomes_cidade: 10 | print(f'- {cidades}') 11 | 12 | print() 13 | 14 | for numeros in enumerate(nomes_cidade): 15 | print(f'{numeros}') 16 | 17 | print() 18 | 19 | # Usando for em dicionarios: 20 | # Criando um dicionario: 21 | cidade = { 22 | 'estado': 'São Paulo', 23 | 'cidade': 'São Paulo', 24 | 'população_milhoes': 12.2 25 | } 26 | # chave acessa somente a chave estado, cidade e população_milhoes: 27 | for chave in cidade: 28 | print(f'{chave}: {cidade[chave]}') 29 | 30 | 31 | # Função range(): 32 | print(list(range(10))) 33 | print((list(range(2, 10)))) 34 | print(list(range(2, 10, 2))) 35 | 36 | 37 | -------------------------------------------------------------------------------- /estruturas_sequenciais.py: -------------------------------------------------------------------------------- 1 | # Estruturas Sequenciais: 2 | idade = int(input('Digite sua idade: ')) 3 | print(f'Idade {idade}', type(idade)) 4 | 5 | meses = 12 6 | salario_mensal = float(input('Digite seu salário mensal: R$ ')) 7 | gastos_mensal = float(input('Digite seu gasto mensal em média: R$ ')) 8 | 9 | salario_total = salario_mensal * meses 10 | gastos_total = gastos_mensal * meses 11 | 12 | montante_economizado = salario_total - gastos_total 13 | print(f'Total economizado foi de R$ {montante_economizado} ') -------------------------------------------------------------------------------- /funcoes_def.py: -------------------------------------------------------------------------------- 1 | # Funções: 2 | 3 | # Declarando uma função sem aprametro: 4 | def hello(): 5 | print('Olá, Mundo!') 6 | 7 | 8 | hello() 9 | print() 10 | 11 | 12 | # Declarando uma função com parametro que calcula média de três notas: 13 | def calcula_media(valor1, valor2, valor3): 14 | soma = valor1 + valor2 + valor3 15 | media = soma / 3 16 | return media 17 | 18 | 19 | nota = calcula_media(8.5, 4.9, 10) 20 | print(f'Média: {nota}') 21 | print() 22 | 23 | 24 | # Funções recursivas: 25 | 26 | def funcaoRecursiva(numero): 27 | if (numero != 1): 28 | funcaoRecursiva(numero - 1) 29 | print(numero) 30 | 31 | 32 | print("Testando a função recursiva:") 33 | funcaoRecursiva(10) 34 | print() 35 | 36 | 37 | # Funções II 38 | 39 | # Funções com varios parametros: Quando utilizamos um * em parametros, quer dizer que posso passar varios argumentos e esses argumentos são armazenados em 40 | # uma tupla(). 41 | def calcula_media1(*args): 42 | soma = sum(args) 43 | media = soma / len(args) 44 | return media 45 | 46 | 47 | print(f'Média de varios parametros: {calcula_media1(10, 5, 8, 9, 10, 7, 6, 2)}') 48 | print() 49 | 50 | # Funções com varios parametros: Quando utilizamos dois ** em parametros, quer dizer que posso passar varios argumentos e esses argumentos são armazenados em 51 | # um dicionario(). 52 | def print_info(**kwargs): 53 | print(kwargs, type(kwargs)) 54 | 55 | 56 | print_info(nome='Diego', sobrenome='Dantas') 57 | -------------------------------------------------------------------------------- /leitura_arquivos_CSV.py: -------------------------------------------------------------------------------- 1 | # Manipulação de Arquivos CSV: 2 | # Importando um biblioteca: 3 | import csv 4 | # Passando o path() para uma variavel e fazendo um for para ler linha por linha. Os valores são separados por virgula, e o retorna de cada valor é uma lista. 5 | with open('C:\\Users\\thyci\\PycharmProjects\\Lets_Code\\Lets_code_python\\python_basics\\brasil_covid.csv..csv', 'r') as arquivo_csv: 6 | leitor = csv.reader(arquivo_csv) 7 | # Mostrando linha por linha: 8 | # for linha in leitor: 9 | # print(linha) 10 | 11 | # Para pular o cabeçalho: 12 | next(leitor) 13 | ## Mostrando os valores apenas quando 'novos_casos' for maior que 1. ou seja na posição 2 da lista: 14 | for linha in leitor: 15 | if float(linha[2]) > 1: 16 | print(linha) 17 | 18 | # Fazendo a mesma leitura do arquivo sem importar a biblioteca csv: 19 | with open('C:\\Users\\thyci\\PycharmProjects\\Lets_Code\\Lets_code_python\\python_basics\\brasil_covid.csv..csv', 'r') as csv_file: 20 | linhas = csv_file.read() 21 | linhas = linhas.split('\n') 22 | for linha in linhas: 23 | linha = linha.split(',') 24 | print(linha) -------------------------------------------------------------------------------- /listas_e_tuplas.py: -------------------------------------------------------------------------------- 1 | # Listas e Tuplas: 2 | 3 | # Criando uma Lista: 4 | nomes_paises = ['Brasil', 'Argentina', 'China', 'Canadá', 'Japão'] 5 | 6 | print(f'Tamanho da lista: {len(nomes_paises)} paieses cadastrados: {nomes_paises}') 7 | 8 | # Indexzação base 0: 9 | print(f'O pais no indice 4 é : {nomes_paises[4]}') 10 | # ou 11 | print(f'O pais no indice -1 é : {nomes_paises[-1]}') 12 | 13 | # Trocando o pais Japão por Colômbia: 14 | nomes_paises[4] = 'Colômbia' 15 | print(nomes_paises) 16 | 17 | # Retornando os paises na posição 1 e 2: 18 | print(f'Retornando os paises na posição 1 e 2: {nomes_paises[1:3]}') 19 | 20 | # Retornando os paises na posição 1 até a -1: 21 | print(f'Retornando os paises na posição 1 até a -1: {nomes_paises[1:-1]}') 22 | 23 | # Retornando os paises na posição 2 até o final da minha lista: 24 | print(f'Retornando os paises na posição 2 até o final da minha lista: {nomes_paises[2:]}') 25 | 26 | # Retornando os paises na posição inicial até a posição 3: 27 | print(f'Retornando os paises na posição inicial até a posição 3: {nomes_paises[:3]}') 28 | 29 | # Retornando os paises pulando de duas em duas posições: 30 | print(f'Retornando os paises pulando de dois em dois posições: {nomes_paises[::2]}') 31 | 32 | # Invertendo a ordem da lista: 33 | print(f'Invertendo a ordem da lista: {nomes_paises[::-1]}') 34 | 35 | # Checando se um pais está na lista: Retorno boolean: 36 | print('Checando se o pais Brasil está na lista: Retorno boolean:', 'Brasil' in nomes_paises) 37 | print() 38 | 39 | # Criando uma nova lista vazia: 40 | lista_capitais = [] 41 | print('Criando uma nova lista vazia e Adicionando capitais na minha lista vazia:') 42 | 43 | # Adicionando elementos na minha lista vazia: 44 | lista_capitais.append('Brasilia') 45 | lista_capitais.append('Buenos Aires') 46 | lista_capitais.append('Pequim') 47 | lista_capitais.append('Bogotá') 48 | 49 | print(lista_capitais) 50 | 51 | # Adicionando um elemento na minha lista em uma posição especifica. Ex: Paris na posição 2: 52 | print(f"Adicionando um elemento na minha lista em uma posição especifica. Ex: Paris na posição 2: {lista_capitais.insert(2, 'Paris')}") 53 | print(lista_capitais) 54 | 55 | # Removendo um pais da lista. No ex: ser Buenos Aires. Removendo pelo nome: 56 | lista_capitais.remove('Buenos Aires') 57 | print(f'Removendo a capital Buenos Aires: {lista_capitais}') 58 | 59 | # Método pop que remove pela posiçã do elemento: 60 | removido = lista_capitais.pop(2) 61 | print(f'Removendo a capital {removido} na posição 2: {lista_capitais}') 62 | print() 63 | print() 64 | # Criando uma lista vazia. 65 | listavazia = [] 66 | 67 | # Criando uma lista com alguns valores. 68 | numeros = [1, 3, 7, 8, 9] 69 | 70 | # Listas podem mesclar diferentes tipos de valores. 71 | listamista = [14, "let's code", 0.1, True] 72 | 73 | # Acessamos cada elemento da lista através de um índice entre colchetes. 74 | # Os índices começam em 0. 75 | print(numeros[0]) 76 | print(numeros[1]) 77 | print(numeros[2]) 78 | print(numeros[3]) 79 | print(numeros[4]) 80 | 81 | # Listas são mutáveis: podemos alterar o valor de seus itens. 82 | numeros[2] = 5 83 | print(numeros) 84 | 85 | # Um jeito inteligente de trabalhar com listas é utilizando loops. 86 | indice = 0 87 | while indice < 5: 88 | print(f'Um jeito inteligente de trabalhar com listas é utilizando loops: {numeros[indice]}') 89 | indice = indice + 1 90 | 91 | print() 92 | print() 93 | 94 | #Outra função útil é lista.append(), que coloca um elemento novo ao final da lista. 95 | animais = [] 96 | resposta = 's' 97 | while resposta == 's' or resposta == 'S': 98 | resposta = input('Deseja adicionar um animal à lista (s/n)? ') 99 | if (resposta in 'sS'): 100 | animal = input('Digite o nome do animal: ') 101 | animais.append(animal) # adiciona o novo animal à lista 102 | print(animais) 103 | print() 104 | print() 105 | # A função lista.remove() deleta um elemento da lista. (mas dá erro se o elemento não existir). 106 | animal = input('Digite o animal a ser deletado da lista: ') 107 | animais.remove(animal) 108 | print(animais) 109 | print() 110 | print() 111 | 112 | # Algumas outras funções úteis: 113 | 114 | # lista.count() conta quantas vezes um elemento aparece. 115 | jogadores = ['Ronaldo', 'Rivaldo', 'Ronaldo', 'Adriano'] 116 | ronaldos = jogadores.count('Ronaldo') 117 | print(jogadores) 118 | print('Quantidade de Ronaldos: ', ronaldos) 119 | print() 120 | 121 | # lista.index() busca em um elemento e fala em qual posição ele aparece. 122 | rivaldo = jogadores.index('Rivaldo') 123 | print("Rivaldo está na posição ", rivaldo) 124 | print() 125 | 126 | # lista.sort() ordena uma lista. 127 | jogadores.sort() 128 | print("jogadores em ordem alfabética: ", jogadores) 129 | print() 130 | 131 | # As funções max(lista) e min(lista) obtém, respectivamente, o maior e o menor valor. 132 | digitos = [3, 1, 4, 1, 5, 9, 2, 6, 5] 133 | maior = max(digitos) 134 | menor = min(digitos) 135 | print(digitos) 136 | print("Maior = ", maior, "e menor = ", menor) 137 | print() 138 | print() 139 | 140 | print(' Criando uma Tupla: ') 141 | # Criando uma Tupla: 142 | nome_estado = 'São Paulo', 'Ceará', 'Rio de Janeiro', 'Rio Grande do Sul' 143 | print(f'Tamanho da tupla: {len(nome_estado)} posições.') 144 | 145 | # Atribuindo cada elemento da tupla ha uma variavel: 146 | s, c, r, rio = nome_estado 147 | print(s, c,) 148 | 149 | # Uma tupla é uma coleção de objetos que lembra muito as listas. 150 | 151 | # Ao invés de colchetes, usamos parênteses para declarar as tuplas: 152 | numeros = (1,2,3,5,7,11) 153 | 154 | # Podemos declarar sem parênteses também: 155 | numeros_sem_parenteses = 1, 2, 3, 5, 7, 11 156 | 157 | # Para acessar um valor, utilizamos a mesma sintaxe das listas: 158 | print(numeros[4]) 159 | print(type(numeros)) 160 | 161 | ''' 162 | Porém, tuplas são imutáveis: não é possível adicionar ou modificar valores. 163 | Descomentar a linha abaixo provocará erro de execução: 164 | ''' 165 | # numeros[4] = 8 166 | 167 | # Podemos gerar uma tupla a partir de uma lista... 168 | lista1 = [3, 1, 4, 1, 5, 9, 2, 6, 5] 169 | tupla1 = tuple(lista1) 170 | print(tupla1) 171 | 172 | # ...ou uma lista a partir de uma tupla: 173 | tupla2 = [1, 6, 1, 8] 174 | lista2 = list(tupla2) 175 | print(lista2) 176 | 177 | # Também pode-se usar o unpacking com uma tupla: 178 | a, b, c, d, e, f = numeros # "desempacota" a tupla numeros 179 | print("O primeiro vale:", a, "e o ultimo vale:", f) 180 | -------------------------------------------------------------------------------- /manipulação_de_arquivos.py: -------------------------------------------------------------------------------- 1 | # Manipulação de Arquivos: 2 | 3 | 4 | # # Abrir arquivo: 1°) cria uma variavel onde vai receber o retorno do método; 2°) método open() onde passa o parametro o caminho(path) do arquivo se tiver na 5 | # # mesma pasta do projeto entao é so digitar o nome do arquivo; 3°) forma de abertura do arquivo, nesteb exemplo utilizaremos o 'r' de leitura. 6 | # arquivo = open('C:\\Users\\thyci\\PycharmProjects\\Lets_Code\\Lets_code_python\\python_basics', 'r', encoding='utf-8') 7 | # # fazer a leitura do texto do arquivo: 8 | # texto = arquivo.read() 9 | # print(texto) 10 | # # Toda vez que abrir um arquivo ele deve set fechado, para nao dar problemas futuros.7 11 | # arquivo.close() 12 | 13 | 14 | def leituraArquivo(): 15 | ''' 16 | -> criada uma variavel chamada de arquivo. Onde arquivo recebe o método ope() e o nome do arquivo como parametro. 17 | -> if (arquivo.mode == 'r'): #Ou seja se o arquivo estiver no mode de leitura 'r' 18 | - > conteudo = arquivo.read() # read() método de leitura. ou seja variavel conteudo recebe variavel arquivo no método de leitura 19 | #OBS: essa maneira é para leitura de arquivos pequenos. Nos casos de leitura de arquivos grandes é na função abaixo. 20 | print(f'Conteudo do arquivo: {conteudo}') 21 | 22 | -> arquivo.close() # fechadno o arquivo 23 | :return: sem retorno 24 | ''' 25 | arquivo = open('dom_casmurro_cap_1.txt', 'r') 26 | if (arquivo.mode == 'r'): 27 | conteudo = arquivo.read() 28 | print(f'Conteudo do arquivo: {conteudo}') 29 | 30 | arquivo.close() 31 | 32 | 33 | leituraArquivo() -------------------------------------------------------------------------------- /operadores_aritimedicos.py: -------------------------------------------------------------------------------- 1 | # Variavel x e y recebem valores diferentes: 2 | x = 50 3 | y = 2 4 | 5 | # Somando: 6 | print(f'Somando: x + y = {x + y}') 7 | print() 8 | # Subtraindo: 9 | print(f'Subtraindo: x - y = {x - y}') 10 | print() 11 | # Multiplicando: 12 | print(f'Multiplicando: x * y = {x * y}') 13 | print() 14 | # Dividindo: 15 | print(f'Dividindo: x / y = {x / y}') 16 | print() 17 | # Potência: 18 | print(f'Potência: x ** y = {x ** y}') 19 | print() 20 | # Parte inteira da Divisão: 21 | print(f'Parte inteira da Divisão: x // y = {x // y}') 22 | print() 23 | # Resto da Divisão: 24 | print(f'Resto da Divisão: x % y = {x % y}') 25 | print() 26 | # Operadores Lógicos: 27 | print('Operadores Lógicos:') 28 | tem_cafe = True 29 | tem_pao = False 30 | print(f'Não tem café: {not tem_cafe}') 31 | print(f'Tem café ou pão: {tem_cafe or tem_pao}') 32 | print(f'Tem café e pão: {tem_cafe and tem_pao}') 33 | print() 34 | dolar = 5.6 35 | real = 1 36 | print(f'Dolar é maior que real: {dolar > real}') 37 | print(f'Dolar é menor que real: {dolar < real}') 38 | print(f'Dolar é igual ao real: {dolar == real}') 39 | print(f'Dolar é maior ou igual o real: {dolar >= real}') 40 | print(f'Dolar é menor ou igual o real: {dolar <= real}') 41 | print(f'Dolar é diferente do real: {dolar != real}') 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /projeto_final/brasil_covid.csv: -------------------------------------------------------------------------------- 1 | confirmados,obbitos,recuperados,ativos,data 2 | 1,0,0,1,2020-02-26 3 | 1,0,0,1,2020-02-27 4 | 1,0,0,1,2020-02-28 5 | 2,0,0,2,2020-02-29 6 | 2,0,0,2,2020-03-01 7 | 2,0,0,2,2020-03-02 8 | 2,0,0,2,2020-03-03 9 | 4,0,0,4,2020-03-04 10 | 4,0,0,4,2020-03-05 11 | 13,0,0,13,2020-03-06 12 | 13,0,0,13,2020-03-07 13 | 20,0,0,20,2020-03-08 14 | 25,0,0,25,2020-03-09 15 | 31,0,0,31,2020-03-10 16 | 38,0,0,38,2020-03-11 17 | 52,0,0,52,2020-03-12 18 | 151,0,0,151,2020-03-13 19 | 151,0,0,151,2020-03-14 20 | 162,0,0,162,2020-03-15 21 | 200,0,1,199,2020-03-16 22 | 321,1,2,318,2020-03-17 23 | 372,3,2,367,2020-03-18 24 | 621,6,2,613,2020-03-19 25 | 793,11,2,780,2020-03-20 26 | 1021,15,2,1004,2020-03-21 27 | 1546,25,2,1519,2020-03-22 28 | 1924,34,2,1888,2020-03-23 29 | 2247,46,2,2199,2020-03-24 30 | 2554,59,2,2493,2020-03-25 31 | 2985,77,6,2902,2020-03-26 32 | 3417,92,6,3319,2020-03-27 33 | 3904,111,6,3787,2020-03-28 34 | 4256,136,6,4114,2020-03-29 35 | 4579,159,120,4300,2020-03-30 36 | 5717,201,127,5389,2020-03-31 37 | 6836,240,127,6469,2020-04-01 38 | 8044,324,127,7593,2020-04-02 39 | 9056,359,127,8570,2020-04-03 40 | 10360,445,127,9788,2020-04-04 41 | 11130,486,127,10517,2020-04-05 42 | 12161,564,127,11470,2020-04-06 43 | 14034,686,127,13221,2020-04-07 44 | 16170,819,127,15224,2020-04-08 45 | 18092,950,173,16969,2020-04-09 46 | 19638,1057,173,18408,2020-04-10 47 | 20727,1124,173,19430,2020-04-11 48 | 22192,1223,173,20796,2020-04-12 49 | 23430,1328,173,21929,2020-04-13 50 | 25262,1532,3046,20684,2020-04-14 51 | 28320,1736,14026,12558,2020-04-15 52 | 30425,1924,14026,14475,2020-04-16 53 | 33682,2141,14026,17515,2020-04-17 54 | 36658,2354,14026,20278,2020-04-18 55 | 38654,2462,22130,14062,2020-04-19 56 | 40743,2587,22130,16026,2020-04-20 57 | 43079,2741,22991,17347,2020-04-21 58 | 45757,2906,25318,17533,2020-04-22 59 | 50036,3331,26573,20132,2020-04-23 60 | 54043,3704,27655,22684,2020-04-24 61 | 59324,4057,29160,26107,2020-04-25 62 | 63100,4286,30152,28662,2020-04-26 63 | 67446,4603,31142,31701,2020-04-27 64 | 73235,5083,32544,35608,2020-04-28 65 | 79685,5513,34132,40040,2020-04-29 66 | 87187,6006,35935,45246,2020-04-30 67 | 92202,6412,38039,47751,2020-05-01 68 | 97100,6761,40937,49402,2020-05-02 69 | 101826,7051,42991,51784,2020-05-03 70 | 108620,7367,45815,55438,2020-05-04 71 | 115455,7938,48221,59296,2020-05-05 72 | 126611,8588,51370,66653,2020-05-06 73 | 135773,9190,55350,71233,2020-05-07 74 | 146894,10017,59297,77580,2020-05-08 75 | 156061,10656,61685,83720,2020-05-09 76 | 162699,11123,64957,86619,2020-05-10 77 | 169594,11653,67384,90557,2020-05-11 78 | 178214,12461,72597,93156,2020-05-12 79 | 190137,13240,78424,98473,2020-05-13 80 | 203165,13999,79479,109687,2020-05-14 81 | 220291,14962,84970,120359,2020-05-15 82 | 233511,15662,89672,128177,2020-05-16 83 | 241080,16118,94122,130840,2020-05-17 84 | 255368,16853,100459,138056,2020-05-18 85 | 271885,17983,106794,147108,2020-05-19 86 | 291579,18859,116683,156037,2020-05-20 87 | 310087,20047,125960,164080,2020-05-21 88 | 330890,21048,135430,174412,2020-05-22 89 | 347398,22013,142587,182798,2020-05-23 90 | 363211,22666,149911,190634,2020-05-24 91 | 374898,23473,153833,197592,2020-05-25 92 | 391222,24512,158593,208117,2020-05-26 93 | 411821,25598,166647,219576,2020-05-27 94 | 438238,26754,177604,233880,2020-05-28 95 | 465166,27878,189476,247812,2020-05-29 96 | 498440,28834,200892,268714,2020-05-30 97 | 514849,29314,206555,278980,2020-05-31 98 | 526447,29937,211080,285430,2020-06-01 99 | 555383,31199,223638,300546,2020-06-02 100 | 584016,32548,238617,312851,2020-06-03 101 | 614941,34021,254963,325957,2020-06-04 102 | 645771,35026,266940,343805,2020-06-05 103 | 672846,35930,277149,359767,2020-06-06 104 | 691758,36455,283952,371351,2020-06-07 105 | 707412,37134,378257,292021,2020-06-08 106 | 739503,38406,396737,304360,2020-06-09 107 | 772416,39680,413916,318820,2020-06-10 108 | 802828,40919,429965,331944,2020-06-11 109 | 828810,41828,445123,341859,2020-06-12 110 | 850514,42720,459436,348358,2020-06-13 111 | 867624,43332,469141,355151,2020-06-14 112 | 888271,43959,477709,366603,2020-06-15 113 | 923189,45241,490005,387943,2020-06-16 114 | 955377,46510,521046,387821,2020-06-17 115 | 978142,47748,534580,395814,2020-06-18 116 | 1032913,48954,551631,432328,2020-06-19 117 | 1067579,49976,576779,440824,2020-06-20 118 | 1083341,50591,588118,444632,2020-06-21 119 | 1106470,51271,601736,453463,2020-06-22 120 | 1145906,52645,627963,465298,2020-06-23 121 | 1188631,53830,660469,474332,2020-06-24 122 | 1228114,54971,679524,493619,2020-06-25 123 | 1274974,55961,702399,516614,2020-06-26 124 | 1313667,57070,727715,528882,2020-06-27 125 | 1344143,57622,746018,540503,2020-06-28 126 | 1368195,58314,757811,552070,2020-06-29 127 | 1402041,59594,788318,554129,2020-06-30 128 | 1448753,60632,817642,570479,2020-07-01 129 | 1496858,61884,957692,477282,2020-07-02 130 | 1539081,63174,984615,491292,2020-07-03 131 | 1577004,64265,990731,522008,2020-07-04 132 | 1603055,64867,1029045,509143,2020-07-05 133 | 1623284,65487,1062542,495255,2020-07-06 134 | 1668589,66741,1107012,494836,2020-07-07 135 | 1713160,67964,1139844,505352,2020-07-08 136 | 1755779,69184,1171447,515148,2020-07-09 137 | 1800827,70398,1217361,513068,2020-07-10 138 | 1839850,71469,1244088,524293,2020-07-11 139 | 1864681,72100,1264843,527738,2020-07-12 140 | 1884967,72833,1291251,520883,2020-07-13 141 | 1926824,74133,1323425,529266,2020-07-14 142 | 1966748,75366,1350098,541284,2020-07-15 143 | 2012151,76688,1397531,537932,2020-07-16 144 | 2046328,77851,1428520,539957,2020-07-17 145 | 2074860,78772,1447408,548680,2020-07-18 146 | 2098389,79488,1459072,559829,2020-07-19 147 | 2118646,80120,1514300,524226,2020-07-20 148 | 2159654,81487,1555339,522828,2020-07-21 149 | 2227514,82771,1591975,552768,2020-07-22 150 | 2287475,84082,1620313,583080,2020-07-23 151 | 2343366,85238,1693214,564914,2020-07-24 152 | 2394513,86449,1785359,522705,2020-07-25 153 | 2419091,87004,1812913,519174,2020-07-26 154 | 2442375,87618,1846641,508116,2020-07-27 155 | 2483191,88539,1868749,525903,2020-07-28 156 | 2552265,90134,1922802,539329,2020-07-29 157 | 2610102,91263,1956807,562032,2020-07-30 158 | 2662485,92475,2008854,561156,2020-07-31 159 | 2707877,93563,2037982,576332,2020-08-01 160 | 2733677,94104,2062876,576697,2020-08-02 161 | 2750318,94665,2098976,556677,2020-08-03 162 | 2801921,95819,2157484,548618,2020-08-04 163 | 2859073,97256,2190361,571456,2020-08-05 164 | 2912212,98493,2230542,583177,2020-08-06 165 | 2962442,99572,2272299,590571,2020-08-07 166 | 3012412,100477,2321537,590398,2020-08-08 167 | 3035422,101049,2356983,577390,2020-08-09 168 | 3057470,101752,2390830,564888,2020-08-10 169 | 3109630,103026,2449338,557266,2020-08-11 170 | 3164785,104201,2506228,554356,2020-08-12 171 | 3224876,105463,2521100,598313,2020-08-13 172 | 3275520,106523,2616981,552016,2020-08-14 173 | 3317096,107232,2622878,586986,2020-08-15 174 | 3340197,107852,2655017,577328,2020-08-16 175 | 3359570,108536,2699080,551954,2020-08-17 176 | 3407354,109888,2751246,546220,2020-08-18 177 | 3456652,111100,2801931,543621,2020-08-19 178 | 3501975,112304,2844318,545353,2020-08-20 179 | 3532330,113358,2855558,563414,2020-08-21 180 | 3582362,114250,2913966,554146,2020-08-22 181 | 3605783,114744,2947784,543255,2020-08-23 182 | 3622861,115309,2976256,531296,2020-08-24 183 | 3669995,116580,3032551,520864,2020-08-25 184 | 3717156,117665,3082447,517044,2020-08-26 185 | 3761391,118649,3122846,519896,2020-08-27 186 | 3804803,119504,3158783,526516,2020-08-28 187 | 3846153,120262,3202185,523706,2020-08-29 188 | 3862311,120828,3237615,503868,2020-08-30 189 | 3908272,121381,3268591,518300,2020-08-31 190 | 3950931,122596,3345240,483095,2020-09-01 191 | 3997865,123780,3387309,486776,2020-09-02 192 | 4041638,124614,3429435,487589,2020-09-03 193 | 4091801,125502,3464278,502021,2020-09-04 194 | 4123000,126203,3498999,497798,2020-09-05 195 | 4137521,126650,3522155,488716,2020-09-06 196 | 4147794,126960,3549201,471633,2020-09-07 197 | 4162073,127464,3572421,462188,2020-09-08 198 | 4197889,128539,3611632,457718,2020-09-09 199 | 4238446,129522,3657701,451223,2020-09-10 200 | 4282164,130396,3695158,456610,2020-09-11 201 | 4315687,131210,3723206,461271,2020-09-12 202 | 4330455,131625,3723206,475624,2020-09-13 203 | 4345610,132006,3770138,443466,2020-09-14 204 | 4382263,133119,3811505,437639,2020-09-15 205 | 4419083,134106,3845464,439513,2020-09-16 206 | 4455386,134935,3873934,446517,2020-09-17 207 | 4495183,135793,3897539,461851,2020-09-18 208 | 4528240,136532,3936893,454815,2020-09-19 209 | 4544629,136895,3963446,444288,2020-09-20 210 | 4558040,137272,3993432,427336,2020-09-21 211 | 4591364,138105,4016831,436428,2020-09-22 212 | 4591364,138105,4046827,406432,2020-09-23 213 | 4657702,139808,4102954,414940,2020-09-24 214 | 4689613,140537,4128490,420586,2020-09-25 215 | 4717991,141406,4153307,423278,2020-09-26 216 | 4732309,141741,4172711,417857,2020-09-27 217 | 4745464,142058,4197372,406034,2020-09-28 218 | 4777522,142921,4237152,397449,2020-09-29 219 | 4810935,143952,4274774,392209,2020-09-30 220 | 4847092,144680,4299659,402753,2020-10-01 221 | 4847092,144680,4299659,402753,2020-10-02 222 | 4906833,145987,4361108,399738,2020-10-03 223 | 4915289,146352,4375354,393583,2020-10-04 224 | 4927235,146675,4397882,382678,2020-10-05 225 | 4969141,147494,4430340,391307,2020-10-06 226 | 5000694,148228,4457172,395294,2020-10-07 227 | 5028444,148957,4488092,391395,2020-10-08 228 | 5055888,149639,4502854,403395,2020-10-09 229 | 5082637,150198,4502854,429585,2020-10-10 230 | 5094979,150488,4526393,418098,2020-10-11 231 | 5103408,150689,4526393,426326,2020-10-12 232 | 5113628,150998,4526393,436237,2020-10-13 233 | 5140863,151747,4526393,462723,2020-10-14 234 | 5169386,152460,4526393,490533,2020-10-15 235 | 5200300,153214,4526393,520693,2020-10-16 236 | 5224362,153675,4526393,544294,2020-10-17 237 | 5224362,153675,4526393,544294,2020-10-18 238 | 5250727,154176,4526393,570158,2020-10-19 239 | 5273954,154837,4526393,592724,2020-10-20 240 | 5298772,155403,4526393,616976,2020-10-21 241 | 5323630,155900,4526393,641337,2020-10-22 242 | 5353656,156471,4526393,670792,2020-10-23 243 | 5380635,156903,4526393,697339,2020-10-24 244 | 5394128,157134,4526393,710601,2020-10-25 245 | 5409854,157397,4526393,726064,2020-10-26 246 | 5439641,157946,4914733,366962,2020-10-27 247 | 5468270,158456,4947777,362037,2020-10-28 248 | 5494376,158969,4962574,372833,2020-10-29 249 | 5516658,159477,4987435,369746,2020-10-30 250 | 5535605,159884,5005161,370560,2020-10-31 251 | 5545705,160074,5022338,363293,2020-11-01 252 | 5554206,160253,5039438,354515,2020-11-02 253 | 5566049,160496,5060697,344856,2020-11-03 254 | 5590025,161106,5078162,350757,2020-11-04 255 | 5590025,161106,5078162,350757,2020-11-05 256 | 5631181,162015,5118156,351010,2020-11-06 257 | 5653561,162269,5138641,352651,2020-11-07 258 | 5664115,162397,5147172,354546,2020-11-08 259 | 5675032,162628,5163226,349178,2020-11-09 260 | 5699005,162802,5183970,352233,2020-11-10 261 | 5747660,163368,5222937,361355,2020-11-11 262 | 5781582,164281,5254457,362844,2020-11-12 263 | 5810652,164737,5274812,371103,2020-11-13 264 | 5848959,165658,5279452,403849,2020-11-14 265 | 5863093,165798,5279452,417843,2020-11-15 266 | 5876464,166014,5335498,374952,2020-11-16 267 | 5911758,166699,5358299,386760,2020-11-17 268 | 5945849,167455,5383385,395009,2020-11-18 269 | 5981767,168061,5406066,407640,2020-11-19 270 | 6020164,168613,5430896,420655,2020-11-20 271 | 6052786,168989,5437189,446608,2020-11-21 272 | 6071401,169183,5457973,444245,2020-11-22 273 | 6087608,169485,5481184,436939,2020-11-23 274 | 6118708,170115,5509645,438948,2020-11-24 275 | 6166606,170769,5534010,461827,2020-11-25 276 | 6204220,171460,5556887,475873,2020-11-26 277 | 6238350,171974,5581436,484940,2020-11-27 278 | 6290272,172561,5581436,536275,2020-11-28 279 | 6314740,172833,5581436,560471,2020-11-29 280 | 6335878,173120,5597802,564956,2020-11-30 281 | 6386787,173817,5712305,500665,2020-12-01 282 | 6436650,174515,5759294,502841,2020-12-02 283 | 6487084,175270,5792539,519275,2020-12-03 284 | 6533968,175964,5825745,532259,2020-12-04 285 | 6577177,176628,5864838,535711,2020-12-05 286 | 6603540,176941,5866657,559942,2020-12-06 287 | 6623911,177317,5897526,549068,2020-12-07 288 | 6674999,178159,5965492,531348,2020-12-08 289 | 6728452,178995,5966118,583339,2020-12-09 290 | 6781799,179765,6043219,558815,2020-12-10 291 | 6836227,180437,6078287,577503,2020-12-11 292 | 6880127,181123,6078287,620717,2020-12-12 293 | 6901952,181402,6138349,582201,2020-12-13 294 | 6927145,181835,6158049,587261,2020-12-14 295 | 6970034,182799,6206483,580752,2020-12-15 296 | 7040608,183735,6239192,617681,2020-12-16 297 | 7110434,184827,6301547,624060,2020-12-17 298 | 7162978,185650,6322955,654373,2020-12-18 299 | 7213155,186356,6388938,637861,2020-12-19 300 | 7238600,186764,6408517,643319,2020-12-20 301 | 7263619,187291,6469310,607018,2020-12-21 302 | 7318821,188259,6501341,629221,2020-12-22 303 | 7365517,189220,6512717,663580,2020-12-23 304 | 7423945,189982,6512717,721246,2020-12-24 305 | 7448560,190488,6512717,745355,2020-12-25 306 | 7465806,190795,6654189,620822,2020-12-26 307 | 7484285,191139,6677235,615911,2020-12-27 308 | 7504833,191570,6712757,600506,2020-12-28 309 | 7563551,192681,6754111,616759,2020-12-29 310 | 7619200,193875,6814092,611233,2020-12-30 311 | 7675973,194949,6848844,632180,2020-12-31 312 | 7700578,195411,6855372,649795,2021-01-01 313 | 7716405,195725,6893256,627424,2021-01-02 314 | 7733746,196018,6904172,633556,2021-01-03 315 | 7753752,196561,6950045,607146,2021-01-04 316 | 7810400,197732,6994845,617823,2021-01-05 317 | 7873830,198974,7033286,641570,2021-01-06 318 | 7961673,200498,7081521,679654,2021-01-07 319 | 8013708,201460,7136817,675431,2021-01-08 320 | 8075998,202631,7205410,667957,2021-01-09 321 | 8105790,203100,7231336,671354,2021-01-10 322 | 8131612,203580,7273237,654795,2021-01-11 323 | 8195637,204690,7284945,706002,2021-01-12 324 | 8256536,205964,7347080,703492,2021-01-13 325 | 8324294,207095,7394739,722460,2021-01-14 326 | 8393492,208246,7438075,747171,2021-01-15 327 | 8455059,209296,7485823,759940,2021-01-16 328 | 8488099,209847,7509009,769243,2021-01-17 329 | 8511770,210299,7560460,741011,2021-01-18 330 | 8573864,211491,7618080,744293,2021-01-19 331 | 8638249,212831,7618080,807338,2021-01-20 332 | 8697368,214147,7673092,810129,2021-01-21 333 | 8753920,215243,7746910,791767,2021-01-22 334 | 8816254,216445,7775928,823881,2021-01-23 335 | 8844577,217037,7821376,806164,2021-01-24 336 | 8871393,217664,7864969,788760,2021-01-25 337 | 8933356,218878,7896290,818188,2021-01-26 338 | 8996876,220161,7964176,812539,2021-01-27 339 | 9058687,221547,7979513,857627,2021-01-28 340 | 9118513,222666,8066603,829244,2021-01-29 341 | 9176975,223945,8148671,804359,2021-01-30 342 | 9204731,224504,8176373,803854,2021-01-31 343 | 9229322,225099,8202354,801869,2021-02-01 344 | 9283418,226309,8258074,799035,2021-02-02 345 | 9339420,227563,8311881,799976,2021-02-03 346 | 9396293,228795,8366197,801301,2021-02-04 347 | 9447165,230034,8396148,820983,2021-02-05 348 | 9447165,230034,8428992,788139,2021-02-06 349 | 9524640,231534,8467982,825124,2021-02-07 350 | 9524640,231534,8478818,814288,2021-02-08 351 | 9599565,233520,8577207,788838,2021-02-09 352 | 9659167,234850,8616282,808035,2021-02-10 353 | 9713909,236201,8637050,840658,2021-02-11 354 | 9765455,237489,8691664,836302,2021-02-12 355 | 9809754,238532,8740445,830777,2021-02-13 356 | 9834513,239245,8765048,830220,2021-02-14 357 | 9866710,239773,8821887,805050,2021-02-15 358 | 9921981,240940,8847264,833777,2021-02-16 359 | 9978747,242090,8933402,803255,2021-02-17 360 | 10030626,243457,8960755,826414,2021-02-18 361 | 10084208,244737,8988618,850853,2021-02-19 362 | 10139148,245977,9070505,822666,2021-02-20 363 | 10168174,246504,9095692,825978,2021-02-21 364 | 10195160,247143,9108205,839812,2021-02-22 365 | 10257875,248529,9189903,819443,2021-02-23 366 | 10324463,249957,9214337,860169,2021-02-24 367 | 10390461,251498,9264696,874267,2021-02-25 368 | 10455630,252835,9309568,893227,2021-02-26 369 | 10517232,254221,9371448,891563,2021-02-27 370 | 10551259,254942,9382316,914001,2021-02-28 371 | 10587001,255720,9437611,893670,2021-03-01 372 | 10646926,257361,9506251,883314,2021-03-02 373 | 10718630,259271,9548315,911044,2021-03-03 374 | 10793732,260970,9605870,926892,2021-03-04 375 | 10869227,262770,9647550,958907,2021-03-05 376 | 10938836,264325,9686024,988487,2021-03-06 377 | 11019344,265411,9739464,1014469,2021-03-07 378 | 11051665,266398,9826292,958975,2021-03-08 379 | 11122429,268370,9878566,975493,2021-03-09 380 | 11202305,270656,9921994,1009655,2021-03-10 381 | 11277717,272889,9983656,1021172,2021-03-11 382 | 11363380,275105,10041024,1047251,2021-03-12 383 | 11439558,277102,10084820,1077636,2021-03-13 384 | 11483370,278229,10113487,1091654,2021-03-14 385 | 11519609,279286,10195598,1044725,2021-03-15 386 | 11603535,282127,10261154,1060254,2021-03-16 387 | 11693838,284775,10326375,1082688,2021-03-17 388 | 11780820,287499,10383496,1109825,2021-03-18 389 | 11871390,290314,10435864,1145212,2021-03-19 390 | 11950459,292752,10476123,1181584,2021-03-20 391 | 11998233,294042,10509457,1194734,2021-03-21 392 | 12047526,295425,10611595,1140506,2021-03-22 393 | 12130019,298676,10665161,1166182,2021-03-23 394 | 12220011,300685,10750131,1169195,2021-03-24 395 | 12320169,303462,10808499,1208208,2021-03-25 396 | 12404414,307112,10886792,1210510,2021-03-26 397 | 12490362,310550,10948382,1231430,2021-03-27 398 | 12534688,312206,11004281,1218201,2021-03-28 399 | 12573615,313866,11022192,1237557,2021-03-29 400 | 12658109,317646,11085369,1255094,2021-03-30 401 | 12748747,321515,11181371,1245861,2021-03-31 402 | 12839844,325284,11240213,1274347,2021-04-01 403 | 12910082,328206,11277632,1304244,2021-04-02 404 | 12953597,330193,11327510,1295894,2021-04-03 405 | 12984956,331433,11343607,1309916,2021-04-04 406 | 13013601,332752,11405558,1275291,2021-04-05 407 | 13100580,336947,11459548,1304085,2021-04-06 408 | 13193205,340776,11592159,1260270,2021-04-07 409 | 13279857,345025,11668734,1266098,2021-04-08 410 | 13373174,348718,11722181,1302275,2021-04-09 411 | 13445006,351334,11739649,1354023,2021-04-10 412 | 13482023,353137,11878958,1249928,2021-04-11 413 | 13517808,354617,11892229,1270962,2021-04-12 414 | 13599994,358425,11975121,1266448,2021-04-13 415 | 13673507,361884,12033880,1277743,2021-04-14 416 | 13746681,365444,12084851,1296386,2021-04-15 417 | 13832455,368749,12163831,1299875,2021-04-16 418 | 13900091,371678,12212890,1315523,2021-04-17 419 | 13943071,373335,12303538,1266198,2021-04-18 420 | 13973695,374682,12346828,1252185,2021-04-19 421 | 14043076,378003,12425791,1239282,2021-04-20 422 | 14122795,381475,12436210,1305110,2021-04-21 423 | 14167973,383502,12530970,1253501,2021-04-22 424 | 14237078,386416,12586272,1264390,2021-04-23 425 | 14308215,389492,12606011,1312712,2021-04-24 426 | 14340787,390797,12614559,1335431,2021-04-25 427 | 14369423,391936,12707500,1269987,2021-04-26 428 | 14441563,395022,12815119,1231422,2021-04-27 429 | 14521289,398185,12849663,1273441,2021-04-28 430 | 14590678,401186,12942081,1247411,2021-04-29 431 | 14659011,403781,12991951,1263279,2021-04-30 432 | 14725975,406437,13023892,1295646,2021-05-01 433 | 14754910,407639,13083550,1263721,2021-05-02 434 | 14779529,408622,13135143,1235764,2021-05-03 435 | 14856888,411588,13170561,1274739,2021-05-04 436 | 14930183,414399,13254660,1261124,2021-05-05 437 | 15003563,416949,13285589,1301025,2021-05-06 438 | 15082449,419114,13400075,1263260,2021-05-07 439 | 15145879,421316,13422047,1302516,2021-05-08 440 | 15184790,422340,13457400,1305050,2021-05-09 441 | 15209990,423229,13481062,1305699,2021-05-10 442 | 15282705,425540,13592463,1264702,2021-05-11 443 | 15359397,428034,13622419,1308944,2021-05-12 444 | 15433989,430417,13662690,1340882,2021-05-13 445 | 15519525,432628,13703280,1383617,2021-05-14 446 | 15586534,434715,13710822,1440997,2021-05-15 447 | 15627243,435751,13764520,1426972,2021-05-16 448 | 15657391,436537,13856731,1364123,2021-05-17 449 | 15732836,439050,13957814,1335972,2021-05-18 450 | 15812055,441691,14043766,1326598,2021-05-19 451 | 15894094,444094,14080089,1369911,2021-05-20 452 | 15970949,446309,14103800,1420840,2021-05-21 453 | 16047439,448208,14132443,1466788,2021-05-22 454 | 16083258,449068,14132443,1501747,2021-05-23 455 | 16120756,449858,14190644,1480254,2021-05-24 456 | 16194209,452031,14231991,1510187,2021-05-25 457 | 16274695,454429,14272174,1548092,2021-05-26 458 | 16342162,456674,14455810,1429678,2021-05-27 459 | 16391930,459045,14492701,1440184,2021-05-28 460 | 16471600,461057,14496224,1514319,2021-05-29 461 | 16515120,461931,14540507,1512682,2021-05-30 462 | 16545554,462791,14586009,1496754,2021-05-31 463 | 16624480,465199,14694950,1464331,2021-06-01 464 | 16720081,467706,14763694,1488681,2021-06-02 465 | 16803472,469388,14763694,1570390,2021-06-03 466 | 16841408,470842,14868994,1501572,2021-06-04 467 | 16907425,472531,14944069,1490825,2021-06-05 468 | 16947062,473404,15000718,1472940,2021-06-06 469 | 16984218,474414,15019797,1490007,2021-06-07 470 | 17037129,476792,15055747,1504590,2021-06-08 471 | 17122877,479515,15154101,1489261,2021-06-09 472 | 17210969,482019,15211176,1517774,2021-06-10 473 | 17296118,484235,15260459,1551424,2021-06-11 474 | 17374818,486272,15271120,1617426,2021-06-12 475 | 17412766,487401,15400169,1525196,2021-06-13 476 | 17452612,488228,15421397,1542987,2021-06-14 477 | 17533221,490696,15519955,1522570,2021-06-15 478 | 17628588,493693,15569556,1565339,2021-06-16 479 | 17702630,496004,15660614,1546012,2021-06-17 480 | 17801462,498499,15687189,1615774,2021-06-18 481 | 17883750,500800,15745463,1637487,2021-06-19 482 | 17927928,501825,15745463,1680640,2021-06-20 483 | 17966831,502586,15819764,1644481,2021-06-21 484 | 18054653,504717,15862096,1687840,2021-06-22 485 | 18169881,507109,16008271,1654501,2021-06-23 486 | 18243483,509141,16038230,1696112,2021-06-24 487 | 18322760,511142,16097711,1713907,2021-06-25 488 | 18386894,512735,16146608,1727551,2021-06-26 489 | 18420598,513474,16160826,1746298,2021-06-27 490 | 18448402,514092,16240380,1693930,2021-06-28 491 | 18513305,515985,16277785,1719535,2021-06-29 492 | 18557141,518066,16299258,1739817,2021-06-30 493 | 18622304,520095,16477253,1624956,2021-07-01 494 | 18687469,521952,16509821,1655696,2021-07-02 495 | 18742025,523587,16524100,1694338,2021-07-03 496 | 18769808,524417,16582483,1662908,2021-07-04 497 | 18792511,525112,16675561,1591838,2021-07-05 498 | 18855015,526892,16740136,1587987,2021-07-06 499 | 18909037,528540,16763522,1616975,2021-07-07 500 | 18962762,530179,16796161,1636422,2021-07-08 501 | 19020499,531688,16823301,1665510,2021-07-09 502 | 19069003,532893,16983333,1552777,2021-07-10 503 | 19089940,533488,17001043,1555409,2021-07-11 504 | 19106971,534233,17014796,1557942,2021-07-12 505 | 19151993,535838,17037027,1579128,2021-07-13 506 | 19209729,537394,17128429,1543906,2021-07-14 507 | 19262518,538942,17141848,1581728,2021-07-15 508 | 19308109,540398,17252650,1515061,2021-07-16 509 | 19342448,541266,17254329,1546853,2021-07-17 510 | 19376574,542214,17304814,1529546,2021-07-18 511 | 19391845,542756,17319329,1529760,2021-07-19 512 | 19419437,544180,17371065,1504192,2021-07-20 513 | 19473954,545604,17404495,1523855,2021-07-21 514 | 19523711,547016,17470332,1506363,2021-07-22 515 | 19632443,548340,17475091,1609012,2021-07-23 516 | 19670534,549448,17656625,1464461,2021-07-24 517 | 19688663,549924,17702038,1436701,2021-07-25 518 | 19707662,550502,17704701,1452459,2021-07-26 519 | 19749073,551835,17715481,1481757,2021-07-27 520 | 19797086,553179,17742532,1501375,2021-07-28 521 | 19839369,554497,17771228,1513644,2021-07-29 522 | 19880273,555460,17771228,1553585,2021-07-30 523 | 19917855,556370,17771228,1590257,2021-07-31 524 | 19938358,556834,17771228,1610296,2021-08-01 525 | 19953501,557223,17771228,1625050,2021-08-02 526 | 19985817,558432,17771228,1656157,2021-08-03 527 | 20026533,559607,17771228,1695698,2021-08-04 528 | 20066587,560706,0,19505881,2021-08-05 529 | 20108746,561762,0,19546984,2021-08-06 530 | 20151779,562752,0,19589027,2021-08-07 531 | 20165672,563151,0,19602521,2021-08-08 532 | 20177757,563562,0,19614195,2021-08-09 533 | 20212642,564773,0,19647869,2021-08-10 534 | 20245085,565748,0,19679337,2021-08-11 535 | 20285067,566896,0,19718171,2021-08-12 536 | 20319000,567862,0,19751138,2021-08-13 537 | 20350142,568788,0,19781354,2021-08-14 538 | 20364099,569058,0,19795041,2021-08-15 539 | 20378570,569492,0,19809078,2021-08-16 540 | 20416183,570598,0,19845585,2021-08-17 541 | 20457897,571662,0,19886235,2021-08-18 542 | 20494212,572641,0,19921571,2021-08-19 543 | 20528099,573511,0,19954588,2021-08-20 544 | 20556487,574209,0,19982278,2021-08-21 545 | 20570891,574527,0,19996364,2021-08-22 546 | 20583994,574848,0,20009146,2021-08-23 547 | 20614866,575742,0,20039124,2021-08-24 548 | 20645537,576645,0,20068892,2021-08-25 549 | 20676561,577565,0,20098996,2021-08-26 550 | 20703906,578326,0,20125580,2021-08-27 551 | 20728605,579010,0,20149595,2021-08-28 552 | 20741815,579308,0,20162507,2021-08-29 553 | 20752281,579574,0,20172707,2021-08-30 554 | 20776870,580413,0,20196457,2021-08-31 555 | 20804215,581150,0,20223065,2021-09-01 556 | 20830495,581914,0,20248581,2021-09-02 557 | 20856060,582670,0,20273390,2021-09-03 558 | 20877864,583362,0,20294502,2021-09-04 559 | 20890779,583628,0,20307151,2021-09-05 560 | 20899933,583810,0,20316123,2021-09-06 561 | 20914237,584108,0,20330129,2021-09-07 562 | 20928008,584421,0,20343587,2021-09-08 563 | 20958899,585174,0,20373725,2021-09-09 564 | 20974850,585846,0,20389004,2021-09-10 565 | 20989164,586558,0,20402606,2021-09-11 566 | 20999779,586851,0,20412928,2021-09-12 567 | 21006424,587066,0,20419358,2021-09-13 568 | 21019830,587797,0,20432033,2021-09-14 569 | 21034610,588597,0,20446013,2021-09-15 570 | 21069017,589246,0,20479771,2021-09-16 571 | 21080219,589573,0,20490646,2021-09-17 572 | 21230325,590508,0,20639817,2021-09-18 573 | 21239783,590752,0,20649031,2021-09-19 574 | 21247667,590955,0,20656712,2021-09-20 575 | 21247094,591440,0,20655654,2021-09-21 576 | 21283567,592316,0,20691251,2021-09-22 577 | 21308178,592964,0,20715214,2021-09-23 578 | 21327616,593663,0,20733953,2021-09-24 579 | 21343304,594200,0,20749104,2021-09-25 580 | 21351972,594443,0,20757529,2021-09-26 581 | 21366395,594653,0,20771742,2021-09-27 582 | 21381790,595446,0,20786344,2021-09-28 583 | 21399546,596122,0,20803424,2021-09-29 584 | 21427073,596749,0,20830324,2021-09-30 585 | 21445651,597255,0,20848396,2021-10-01 586 | 21459117,597723,0,20861394,2021-10-02 587 | 21468121,597948,0,20870173,2021-10-03 588 | 21478546,598152,0,20880394,2021-10-04 589 | 21499074,598829,0,20900245,2021-10-05 590 | 21516967,599359,0,20917608,2021-10-06 591 | 21532558,599810,0,20932748,2021-10-07 592 | 21550730,600425,0,20950305,2021-10-08 593 | 21567181,600829,0,20966352,2021-10-09 594 | 21575820,601011,0,20974809,2021-10-10 595 | 21582738,601213,0,20981525,2021-10-11 596 | 21590097,601398,0,20988699,2021-10-12 597 | 21597949,601574,0,20996375,2021-10-13 598 | 21612237,602099,0,21010138,2021-10-14 599 | 21627476,602669,0,21024807,2021-10-15 600 | 21638726,603152,0,21035574,2021-10-16 601 | 21644464,603282,0,21041182,2021-10-17 602 | 21651910,603465,0,21048445,2021-10-18 603 | 21664879,603855,0,21061024,2021-10-19 604 | 21680488,604228,0,21076260,2021-10-20 605 | 21697341,604679,0,21092662,2021-10-21 606 | 21711843,605139,0,21106704,2021-10-22 607 | 21723559,605457,0,21118102,2021-10-23 608 | 21729763,605644,0,21124119,2021-10-24 609 | 21735560,605804,0,21129756,2021-10-25 610 | 21748984,606246,0,21142738,2021-10-26 611 | 21766168,606679,0,21159489,2021-10-27 612 | 21781436,607068,0,21174368,2021-10-28 613 | 21793401,607462,0,21185939,2021-10-29 614 | -------------------------------------------------------------------------------- /projeto_final/meu-primeiro-grafico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DiegoDBLe/Python-Basico-Lets-Code/9ebaffeeeee8884bb9a38ee0c46df353ede10d88/projeto_final/meu-primeiro-grafico.png -------------------------------------------------------------------------------- /projeto_final/projeto_final_lets_code.py: -------------------------------------------------------------------------------- 1 | # Projeto Finale let's Code: 2 | import requests 3 | 4 | url = 'https://api.covid19api.com/dayone/country/brazil' 5 | resposta = requests.get(url) 6 | if resposta.status_code == 200: 7 | print(f'{resposta.status_code} = Sucesso!') 8 | else: 9 | print('Not Found!') 10 | 11 | # Retorna todos os dados da API: 12 | dados_json = resposta.json() 13 | print(dados_json[0]) 14 | 15 | # Só vou trabalhar com essas informações: 'Confirmed'(casos confirmados): 1, 'Deaths'(mortes): 0, 16 | # 'Recovered'(Recuperados): 0, 'Active'(casos Ativos): 1, 'Date'(Data): '2020-02-26T00:00:00Z' 17 | # Criar uma variavel para filtrar essas informações: 18 | dados_filtrados = [] 19 | 20 | # Fazer um for para cada infroamção encontrada em dados_jason: vou adicionar em dados_filtrados: 21 | for informacoes in dados_json: 22 | dados_filtrados.append([informacoes['Confirmed'], informacoes['Deaths'], informacoes['Recovered'], informacoes['Active'], informacoes['Date']]) 23 | 24 | # Colocando o cabeçalho : 25 | dados_filtrados.insert(0, ['confirmados', 'obbitos', 'recuperados', 'ativos', 'data']) 26 | 27 | # Excluindo o time zone que é 0 e não agrega em nada no projeto: 28 | confirmado = 0 29 | obitos = 1 30 | recuperados = 2 31 | ativos = 3 32 | data = 4 33 | 34 | # Excluindo o time zone que é 0 e não agrega em nada no projeto: 35 | for linhas in range(1, len(dados_filtrados)): 36 | dados_filtrados[linhas][data] = dados_filtrados[linhas][data][:10] 37 | 38 | # Colocando as informações abaixo do cabeçalho cada um referente a sua informação: 39 | print(dados_filtrados[0]) 40 | for i in dados_filtrados[1:]: 41 | print(i) 42 | 43 | print() 44 | # DateTime: Data, hora, segundo e microsegundo: 45 | import datetime as dt 46 | print(dt.time(12, 6, 21, 7), 'Hora:minuto:segundo:microsegundo') 47 | print('----') 48 | print(dt.date(2021, 10, 30), 'Ano/mês/dia') 49 | print('----') 50 | print(dt.datetime(2021, 10, 30, 12, 6, 21, 7), 'Ano/mês/dia Hora:minuto:segundo:microsegundo') 51 | print() 52 | 53 | # Tipos de datas contadores de segundos: 54 | 55 | natal = dt.date(2021, 12, 25) 56 | reveillon = dt.date(2022, 1, 1) 57 | print({reveillon - natal}) 58 | print(f'Faltam {(reveillon - natal).days} dias para o reveillon') 59 | print(f'Faltam {(reveillon - natal).total_seconds()} segundos para o reveillon') 60 | print(f'Faltam {(reveillon - natal).microseconds} microsegundos para o reveillon') 61 | print() 62 | 63 | # Transformando os dados da minha API em csv: 64 | import csv 65 | with open('brasil_covid.csv', 'w') as file: 66 | writer = csv.writer(file) 67 | writer.writerows(dados_filtrados) 68 | 69 | # Altertando a data dos dados que é string para datetime: 70 | for i in range(1, len(dados_filtrados)): 71 | dados_filtrados[i][data] = dt.datetime.strptime(dados_filtrados[i][data], '%Y-%m-%d') 72 | 73 | 74 | # Colocando as informações abaixo do cabeçalho cada um referente a sua informação: 75 | print(dados_filtrados[0]) 76 | for i in dados_filtrados[1:]: 77 | print(i) 78 | 79 | 80 | # Criando uma função para construir os dados do eixo y: 81 | def get_datasets(y, labels): 82 | # Condição para verificar se o primeiro valor que foi passado em y é um tipo lista ou um valor comum: 83 | if type(y[0]) == list: 84 | # se for uma lista eu vou inicializar uma variavel: que vai ser uma lista contendo os valores de 'y' e o 'label' respectivo de cada um delas. 85 | datasets = [] 86 | for i in range(len(y)): 87 | datasets.append({ 88 | 'label': labels[i], 89 | 'data': y[i] 90 | }) 91 | return datasets 92 | else: 93 | return [ 94 | { 95 | 'label': labels[0], 96 | 'data': y 97 | } 98 | ] 99 | 100 | 101 | # Função para definir o titulo do gráfico: 102 | def set_title(title=''): 103 | if title != '': 104 | display = 'true' 105 | else: 106 | display = 'false' 107 | return { 108 | 'title': title, 109 | 'display': display 110 | } 111 | 112 | 113 | # Função que cria o gráfico: que recebe todos os dicionarios: 114 | def create_chart(x, y, labels, kind='bar', title=''): 115 | # Criar uma cariavel que recebe uma função 116 | datasets = get_datasets(y, labels) 117 | 118 | # Variavel Chave responsavel pela denifição do titulo e outras coisas referente essa API: 119 | options = set_title(title) 120 | 121 | # Criar o dicionario que representa o gráfico: 122 | chart = { 123 | 'type': kind, 124 | 'data': { 125 | 'labels': x, 126 | 'datasets': datasets 127 | }, 128 | 'options': options 129 | } 130 | return chart 131 | 132 | 133 | # Função para fazer a requisição na API: retorno é binário 134 | def get_api_chart(chart): 135 | url_base = 'https://quickchart.io/chart' 136 | requisicao = requests.get(f'{url_base}?c={str(chart)}') 137 | return requisicao.content 138 | 139 | 140 | # Função para salvar a imagem: 141 | def save_image(path, content): 142 | with open(path, 'wb') as image: 143 | image.write(content) 144 | 145 | 146 | from PIL import Image 147 | from IPython.display import display 148 | 149 | 150 | # Função para mostrar a imagem 151 | def display_image(path): 152 | img_pil = Image.open(path) 153 | display(img_pil) 154 | 155 | 156 | y_data_1 = [] 157 | for obs in dados_filtrados[1::10]: 158 | y_data_1.append(obs[confirmado]) 159 | 160 | y_data_2 = [] 161 | for obs in dados_filtrados[1::10]: 162 | y_data_2.append(obs[recuperados]) 163 | 164 | labels = ['Confirmados', 'Recuperados'] 165 | 166 | x = [] 167 | 168 | for obs in dados_filtrados[1::10]: 169 | x.append(obs[data].strftime('%d/%m/%a')) 170 | 171 | chart = create_chart(x, [y_data_1, y_data_2], labels, title='Gráfico confirmado x recuperados') 172 | chart_content = get_api_chart(chart) 173 | save_image('meu-primeiro-grafico.png', chart_content) 174 | display_image('meu-primeiro-grafico.png') 175 | 176 | from urllib.parse import quote 177 | 178 | 179 | # Gerar QR-CODE: 180 | def get_api_qrcode(link): 181 | text = quote(link) # parsing do link para url 182 | url_base = 'https://quickchart.io/qr' 183 | resp = requests.get(f'{url_base}?text={text}') 184 | return resp.content 185 | 186 | 187 | # Recuperar o link 188 | url_base = 'https://quickchart.io/chart' 189 | link = f'{url_base}?c={str(chart)}' 190 | save_image('qr-code.png', get_api_qrcode(link)) 191 | display_image('qr-code.png') -------------------------------------------------------------------------------- /projeto_final/qr-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DiegoDBLe/Python-Basico-Lets-Code/9ebaffeeeee8884bb9a38ee0c46df353ede10d88/projeto_final/qr-code.png -------------------------------------------------------------------------------- /strings.py: -------------------------------------------------------------------------------- 1 | # Strings I 2 | empresa = "Let's code" 3 | print(empresa) 4 | print() 5 | 6 | frase = "O Professor Pietro da Let's Code disse: \"Hoje a pizza é por minha conta\"" 7 | print(frase) 8 | print() 9 | 10 | #Método len(): 11 | 12 | tamanho = len(frase) 13 | print("A frase possui", tamanho, "caracteres") 14 | 15 | # Fatiando uma String: 16 | empresa1 = 'Google' 17 | print(f'Mostrando a letra na posição 0 do nome {empresa1}: {empresa1[0]}') 18 | 19 | print(f'Mostrando as três primeiras letras do nome {empresa1}: {empresa1[:3]}') 20 | 21 | # Métodos split para String's: 22 | nomes_cidades = 'São Paulo, Belo Horizonte, Rio de Janeiro, Brasilia' 23 | print(nomes_cidades[0]) # Antes do método split(', ') ele retorna somente a primeira letra 's' da cidade de são paulo 24 | nomes_cidades = nomes_cidades.split(', ') 25 | print(nomes_cidades) 26 | print(nomes_cidades[0]) # Usando o método split ele retorna o nome da cidade de São Paulo 27 | print(nomes_cidades[1]) 28 | print() 29 | 30 | # Método strip(): 31 | cabecalho = ' MENU PRINCIPAL ' 32 | # Sem o método strip(): 33 | print(f'Sem o método strip(): {cabecalho}') 34 | # Com o método strip(): 35 | print(f'Com o método strip(): {cabecalho.strip()}') 36 | print() 37 | 38 | # Métodos: title(), capitalize(), lower(), upper(): 39 | cidade = 'rIo dE JaNeiRo' 40 | print(f'Usando o Método title(): {cidade.title()}') 41 | print(f'Usando o Método capitalize(): {cidade.capitalize()}') 42 | print(f'Usando o Método lower(): {cidade.lower()}') 43 | print(f'Usando o Método upper(): {cidade.upper()}') 44 | print() 45 | 46 | # Exercicio: 47 | nome_cidade = input('Qual cidade do Brasil é conhecida como cidade maravilhosa? ').strip() 48 | while nome_cidade.lower() != 'rio de janeiro': 49 | print('Tenta de novo ai...') 50 | nome_cidade = input('Qual cidade do Brasil é conhecida como cidade maravilhosa? ').strip() 51 | print('Boa Campeão!! ') 52 | 53 | # Podemos converter strings para listas: 54 | listafrase = list(frase) 55 | print(f'Podemos converter strings para listas: {listafrase}') 56 | 57 | # A função join() intercala cada elemento de uma lista com uma string. 58 | stringfinal = '-py'.join(listafrase) 59 | print(stringfinal) 60 | print() 61 | 62 | 63 | # Usar um join() com uma string vazia é útil para transformar a lista de volta 64 | # em string: 65 | stringfinal = ''.join(listafrase) 66 | print(stringfinal) 67 | 68 | # Podemos inserir quebras de linha com '\n' 69 | frase = 'uma\nFRASE' 70 | print(frase) 71 | # Podemos inserir tabulação com '\t' 72 | frase = 'uma\n\tFRASE' 73 | print(frase) 74 | # Para conseguir representar a barra '\', precisamos de 2 barras: 75 | frase = 'uma\\FRASE' 76 | -------------------------------------------------------------------------------- /tipos_de_variaveis.py: -------------------------------------------------------------------------------- 1 | # Variavel x recebe um valor inteiro: 2 | x = 5 3 | print(f'x = {x} ', type(x)) 4 | print() 5 | 6 | # Variavel preco recebe um valor float: 7 | preco = 19.99 8 | print(f'Preço vale R$ {preco}', type(preco)) 9 | print() 10 | 11 | # Variavel cidade recebe um valor String: 12 | cidade = 'Fortaleza' 13 | print(f'Cidade: {cidade}', type(cidade)) 14 | print() 15 | 16 | # Variavel disponivel recebe um valor boolean: 17 | disponivel = True 18 | print(f'Disponivel: {disponivel}', type(disponivel)) 19 | 20 | -------------------------------------------------------------------------------- /user_csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DiegoDBLe/Python-Basico-Lets-Code/9ebaffeeeee8884bb9a38ee0c46df353ede10d88/user_csv --------------------------------------------------------------------------------