S04 - Projeto: Química
Finalidade
Prove que você pode desenvolver um programa Python que cria e usa listas compostas.
Projeto
Não use IA para gerar o código deste programa.
Usar IA para gerar este programa é uma violação da política de IA do curso e pode resultar em nota zero na atividade, reprovação na disciplina ou até remoção do programa.
Se você precisar de ajuda com a atividade ou tiver dúvidas sobre o uso de IA, por favor pergunte ao seu instrutor.
Contexto
Você faz estágio em uma instalação de pesquisa do governo. O laboratório de química solicitou um programa que calculará a massa molar e o número de mols para uma determinada quantidade de um composto químico. Designaram você para criar o programa.
Muitas vezes você ficará responsável por criar programas dos quais talvez não consiga entender completamente o assunto. Quando isso acontece, use como base os requisitos fornecidos pelo usuário. Para este problema, você pode não saber o que é um mol ou uma massa molar. Não se preocupe. O usuário sabe o que são e pode fornecer as informações necessárias para resolver seu problema.
Requisitos do Usuário
Mariana Cardoso, a química responsável, pediu que você criasse um programa com os seguintes requisitos.
- Solicitar uma fórmula química ao usuário.
- Solicitar a quantidade do composto em gramas ao usuário (ou seja, massa_da_amostra).
- Calcular e exibir a massa molar.
- Calcular e exibir o número de mols.
Mariana forneceu as seguintes informações:
- Um composto ou molécula é descrito por uma lista de elementos que ele contém. O elemento é identificado pelo símbolo do elemento. Se houver mais de um átomo desse elemento, um número representando o número de átomos no composto seguirá o símbolo do elemento. Aqui estão alguns exemplos:
- H2O (água) tem 2 átomos de hidrogênio e 1 átomo de oxigênio.
- C6H12O6 (glicose) tem 6 átomos de carbono, 12 átomos de hidrogênio e 6 átomos de oxigênio.
-
Para calcular a massa molar de um composto, tudo o que você precisa fazer é somar a massa de todos os átomos no composto.
-
Para calcular o número de mols em uma amostra, use a seguinte fórmula:numero_mols =massa_da_amostramassa_molar
Design
Os requisitos foram enviados para Alice Laurent, uma de nossas arquitetas de software. Ela forneceu a seguinte orientação.
Alice desenvolveu a seguinte arquitetura de programa. Use essas informações para criar seu programa. Como programador júnior, você deve usar as funções definidas por Alice, utilizando exatamente os nomes e parâmetros indicados.
Especificações de Função
Nome da Função Tipo de Retorno de Parâmetros Descrição criar_tabela_periodica Parâmetros: (nenhum) Retorna: Dicionário Retorna um objeto de dicionário com todos os elementos da tabela periódica. - Para cada elemento, a chave do dicionário deve ser o símbolo do elemento.
- O valor contém uma lista em que o primeiro item é o nome do elemento e o segundo é a massa atômica.
calcular_massa_molar Parâmetros: lista_quantidade_simbolos, dic_da_tabela_periodica Retorna: float Calcule e retorne a massa molar total de todos os elementos listados em lista_quantidade_simbolos. - Percorra os itens na lista_quantidade_simbolos utilizando um loop.
- Para cada item na lista, use o símbolo do elemento para procurar a massa atômica do elemento no dicionário dic_da_tabela_periodica.
- Multiplique a massa atômica do elemento pela quantidade de átomos do elemento (da lista_quantidade_simbolos) e adicione isso à massa total.
- Retorne a massa total.
main Parâmetros: (nenhum) Retorna: (nenhum) - Solicita ao usuário uma fórmula química.
- Solicita ao usuário o tamanho da amostra em gramas.
- Chama criar_tabela_periodica (da biblioteca fornecida) para obter uma lista de elementos na fórmula. (armazena em uma variável).
- Chama a função interpretar_formula e armazena o dicionário retornado na variável.
- Chama calcular_massa_molar para calcular a massa molar. Passa o dicionário da tabela periódica e a lista de elementos retornados das funções anteriores.
- Exibe a massa molar.
- Calcula o número de mols na amostra.
- Exibe o número de mols.
Outras informações úteis.
Enquanto trabalhava neste projeto, Alice descobriu que outro programador já havia criado uma biblioteca que tem uma função chamada
interpretar_formulapara outro projeto. Esta função faz exatamente o que você precisa. Você pode usar essa biblioteca em seu programa para economizar tempo. A função está na bibliotecaformula.pyEtapa
Comece seu projeto escrevendo o esboço do seu programa. Siga estas etapas:
- Crie uma pasta para o projeto desta semana e dê a ela o nome que você quiser.
- Abra a pasta que você acabou de criar no VSCode.
- Crie um arquivo chamado quimica.py.
- Crie a função
criar_tabela_periodica. Quando concluída, a função retornará um dicionário que contém todos os elementos da tabela periódica. Seu dicionário deve ser parecido com este:dic_da_tabela_periodica = { # símbolo: [nome, massa_atomica] "Ac": ["Actínio", 227], "Ag": ["Prata", 107.8682], "Al": ["Alumínio", 26.9815386], ⋮ }Lista completa de elementos:
Mariana forneceu esta lista de elementos para você usar.Símbolo Nome Massa Atômica Ac Actínio 227 Ag Prata 107.8682 Al Alumínio 26.9815386 Ar Argônio 39.948 As Arsênio 74.9216 At Astato 210 Au Ouro 196.966569 B Boro 10.811 Ba Bário 137.327 Be Berílio 9.012182 Bi Bismuto 208.9804 Br Bromo 79.904 C Carbono 12.0107 Ca Cálcio 40.078 Cd Cádmio 112.411 Ce Cério 140.116 Cl Cloro 35.453 Co Cobalto 58.933195 Cr Crômio 51.9961 Cs Césio 132.9054519 Cu Cobre 63.546 Dy Disprósio 162.5 Er Érbio 167.259 Eu Európio 151.964 F Flúor 18.9984032 Fe Ferro 55.845 Fr Frâncio 223 Ga Gálio 69.723 Gd Gadolínio 157.25 Ge Germânio 72.64 H Hidrogênio 1.00794 He Hélio 4.002602 Hf Háfnio 178.49 Hg Mercúrio 200.59 Ho Hólmio 164.93032 I Iodo 126.90447 In Índio 114.818 Ir Irídio 192.217 K Potássio 39.0983 Kr Kriptônio 83.798 La Lantânio 138.90547 Li Lítio 6.941 Lu Lutécio 174.9668 Mg Magnésio 24.305 Mn Manganês 54.938045 Mo Molibdênio 95.96 N Nitrogênio 14.0067 Na Sódio 22.98976928 Nb Nióbio 92.90638 Nd Neodímio 144.242 Ne Neônio 20.1797 Ni Níquel 58.6934 Np Neptúnio 237 O Oxigênio 15.9994 Os Ósmio 190.23 P Fósforo 30.973762 Pa Protactínio 231.03588 Pb Chumbo 207.2 Pd Paládio 106.42 Pm Promécio 145 Po Polônio 209 Pr Praseodímio 140.90765 Pt Platina 195.084 Pu Plutônio 244 Ra Rádio 226 Rb Rubídio 85.4678 Re Rênio 186.207 Rh Ródio 102.9055 Rn Radônio 222 Ru Rutênio 101.07 S Enxofre 32.065 Sb Antimônio 121.76 Sc Escândio 44.955912 Se Selênio 78.96 Si Silício 28.0855 Sm Samário 150.36 Sn Estanho 118.71 Sr Estrôncio 87.62 Ta Tântalo 180.94788 Tb Térbio 158.92535 Tc Tecnécio 98 Te Telúrio 127.6 Th Tório 232.03806 Ti Titânio 47.867 Tl Tálio 204.3833 Tm Túlio 168.93421 U Urânio 238.02891 V Vanádio 50.9415 W Tungstênio 183.84 Xe Xenônio 131.293 Y Ítrio 88.90585 Yb Itérbio 173.054 Zn Zinco 65.38 Zr Zircônio 91.224 - Adicione a função
main. Por enquanto, basta fazer com que a função main chame criar_tabela_periodica e exiba a tabela retornada.- Inclua o seguinte código na parte inferior do seu programa para facilitar os testes.
if __name__ == "__main__": main()Teste
Verifique se seu programa funciona corretamente seguindo cada etapa deste procedimento de teste:
Baixe o arquivo Python
test_etapa_quimica.pye salve-o na mesma pasta onde você salvou seu programaquimica.py. Execute o arquivotest_etapa_quimica.pye verifique se o teste foi aprovado. Se as funções de teste não forem aprovadas, há um erro no seu programaquimica.py. Leia a saída depytest, corrija o erro e execute o arquivotest_etapa_quimica.pynovamente até que todas as funções de teste sejam aprovadas.============================= test session starts ============================= platform win32 -- Python 3.13.4, pytest-8.4.1, pluggy-1.6.0 -- cachedir: .pytest_cache rootdir: C:\Users\cse111\week04\quimica collected 1 item test_etapa_quimica.py::test_criar_tabela_periodica [PASSED 100%] ================================ 1 passed in 0.04s ===============================
Envio de Etapa
Na data de entrega ou antes dela, retorne ao Canvas e reporte seu progresso nesta etapa.
Conclusão do Projeto
Conclua seu projeto terminando o código para as funções
calcular_massa_molaremain. Certifique-se de que seu código atenda aos requisitos especificados acima.-
Baixe o arquivo Python
formula.pye salve-o na mesma pasta onde você salvou seu programaquimica.py. O arquivoformula.pyinclui uma classeFormulaErrore uma função chamadainterpretar_formula. Ambos estão completos e funcionam corretamente, então você não deve alterá-los. -
Abra o arquivo
formula.pyno VS Code e leia a string entre aspas triplas no topo da funçãointerpretar_formula. Segundo essa string, a funçãointerpretar_formulaconverte uma fórmula química para uma molécula, como "C13H16N2O2" (melatonina), em uma lista de compostos, como [["C", 13], ["H", 16], ["N", 2], ["O", 2]]. Esta lista de compostos é conhecida como lista_quantidade_simbolos porque contém os símbolos dos elementos químicos e a quantidade de átomos de cada elemento que aparecem em uma fórmula química. -
Copie e cole a seguinte instrução de importação no seu programa
quimica.py, na parte superior do programa. Esta instrução importará a funçãointerpretar_formulado arquivoformula.pypara o seu programaquimica.py, assim você poderá chamar a funçãointerpretar_formulano programa.from formula import interpretar_formula - Complete a função
calcular_massa_molarde acordo com as especificações do programa.Exemplo de Cálculo:
Este exemplo pode ajudar você a escrever seu código. Considere uma amostra de glicose (C6H12O6) com uma massa de 12.37 gramas. Para usar uma calculadora de massa molar, um químico insere:
-
C6H12O6
-
12.37
A calculadora calcula a massa molar da glicose fazendo o seguinte:
-
Somar o número de átomos de cada elemento na fórmula da glicose:
6 átomos de carbono
12 átomos de hidrogênio
6 átomos de oxigênio -
Encontrar a massa atômica de cada elemento:
Símbolo Nome Massa Atômica C Carbono 12.0107 H Hidrogênio 1.00794 O Oxigênio 15.9994 -
Multiplicar o número de átomos pela massa atômica:
6 × 12.0107 = 72.0642 12 × 1.00794 = 12.09528 6 × 15.9994 = 95.9964 -
Somar os resultados das multiplicações para obter a massa molar da glicose:72.0642 + 12.09528 + 95.9964 = 180.15588 gramas/mol
Em seguida, a calculadora divide a massa da amostra de glicose pela massa molar de glicose, o que resulta no número de mols na amostra:
= 0.06866 mols12.37 gramas180.15588 gramas/molA calculadora exibe dois resultados para o químico:
-
a massa molar da glicose: 180.15588 gramas/mol
-
o número de mols na amostra: 0.06866 mols
Dica: Não se esqueça das variáveis do índice.
Lembre-se de que, ao trabalhar com listas compostas, é útil criar variáveis que contenham os valores de índice dos seus dados. Por exemplo, se eu tivesse uma lista com listas que descrevessem pessoas e suas cores favoritas:
O código a seguir exibirá o nome e a cor favorita de cada pessoa.pessoas=[['James','vermelho'],['Julia','azul'],['Ricardo','amarelo']]
Se usar variáveis bem nomeadas para armazenar os índices da lista, o código será muito mais fácil de entender.for pessoa in pessoas: print(f"A cor favorita de {pessoa[0]} é {pessoa[1]}")INDICE_NOMES=0 INDICE_CORES=1 for pessoa in pessoas: print(f"A cor favorita de {pessoa[INDICE_NOMES]} é {pessoa[INDICE_CORES]}") -
- Complete a função
main. Remova o código da etapa e conclua a função main de acordo com as especificações do programa.
Desafios Adicionais
Se o seu programa atender aos requisitos para esta atividade, conforme descrito acima, você receberá 93% dos pontos possíveis. Para ganhar os 7% de pontos restantes, você precisará adicionar um ou mais recursos ao seu programa. Use sua criatividade. Adicione um comentário no topo do seu código que explique a(s) melhoria(s).
Documente suas melhorias:Se você escolher adicionar recursos ao seu código, coloque um comentário no topo do seu arquivo descrevendo o que você fez para melhorar seu programa.
Teste
Verifique se seu programa funciona corretamente seguindo cada etapa deste procedimento de teste:
-
Baixe o arquivo Python
test_quimica.pye salve-o na mesma pasta onde você salvou seu programaquimica.py. Execute o arquivotest_quimica.pye certifique-se de que todas as três funções de teste sejam aprovadas. Se alguma das funções de teste não for aprovada, há um erro no seu programaquimica.py. Leia a saída depytest, corrija o erro e execute o arquivotest_quimica.pynovamente até que todas as funções de teste sejam aprovadas.> python test_quimica_2.py ==================== test session starts ====================== platform win32--Python 3.8.6, pytest-6.1.2. py-1.9.0. pluggy rootdir: C:\Users\cse111\week04 collected 3 itens test_quimica_2.py::test_criar_tabela_periodica PASSED [33%] test_quimica_2.py::test_interpretar_formula PASSED [ 66%] test_quimica_2.py::test_calcular_massa_molar PASSED [100%] ===================== 3 passed in 0.17s ======================
-
Execute seu programa
quimica.pyfinalizado. Insira a entrada mostrada abaixo e certifique-se de que seu programa exiba a saída mostrada abaixo.> python quimica.py Insira a fórmula molecular da amostra: C6H6 Insira a massa em gramas da amostra: 25.04 78.11184 gramas/mol 0.32057 mols
Envio do Projeto
Volte ao Canvas e envie seu arquivo
quimica.pypara que seu programa seja avaliado.Não tire zero!Se o seu programa contiver um erro que o impeça de ser executado até o fim, a tarefa receberá nota zero e você precisará corrigir e reenviar o código. Em outras palavras, evite enviar um programa que não funciona. Em vez disso, peça ajuda para entender o erro e corrigi-lo antes do envio.
Links Úteis:
- Voltar para: Visão Geral da Semana | Página Inicial
- Adicione a função