<jupyter_start><jupyter_text>Computação Aplicada A Ciência e Engenharia Introdução à Linguagem Python (Aula 01-C) Conteúdo1. A biblioteca padrão *Math*;2. A biblioteca Numpy;3. A função *buint* in `input()`.  1. Biblioteca *standard* MathA linguagem Python 3 ao ser intalada em uma máquina trás, na própria instalação, uma série de livrarias que são denominadas *Python Standard Library* a lista completa destas funcionalidades é extensa e pode ser encontrada em [AQUI](https://docs.python.org/3/library/).A listagem abaixo mostra a passagem de uma instrução ao interpretador que tenta calcular a raiz quadrada do inteiro quatro (4). Note que não foi possível a efetivação da tarega e um erro foi retornado como saída. No erro se lê `name 'sqrt' is not defined` ( o nome sqrt não é definido), o que significa que o kernel do interpretador não consegue atribuir significado à chamada de uma função denominada `sqrt`.<jupyter_code>sqrt(4) #tenta calcular a raiz quadrada do inteiro 4.<jupyter_output><empty_output><jupyter_text>Agora veja o comportamento do interpretador quando a bilioteca `math`é utilizada.<jupyter_code>from math import * # Importação de todas as funcionalidade de math
sqrt(4)<jupyter_output><empty_output><jupyter_text>Na listagem anterior todas as funcionalidades da biblioteca foram importadas para o kernel do interpretador, tecnicamente, na primeira linham estamos dizendo ao interpretador **de math importe tudo**.Apesar de funcional, esta não é uma boa prática de programação, já que as funcionalidade de math se combinam com as funcionalidade *built in* do Python o que pode gerar erros caso alguma função básica tenha o mesmo nome de uma *built in*.Uma forma mais segura de fazer tal importação seria:<jupyter_code>import math as mt
mt.sqrt(4)<jupyter_output><empty_output><jupyter_text>Uma maneira ainda mais otimizada de utilizar funcionalidades de bibliotecas, seria fazendo a importação exclusiva da ou das função que se deseja utilizar. Se de *math* quiséssemos importar apenas `sqrt` então poderíamos fazer como na listagem abaixo.<jupyter_code>from math import sqrt as mtsqrt
mtsqrt(9)<jupyter_output><empty_output><jupyter_text>Veja que neste caso importamos apenas a função `sqrt` da biblioteca e a ela demos o *alias* `mtsqrt`, desta forma evitamos que as funcionalidades externas entrem em conflito com funcionalidades *built in* e ainda evitamos a alocação desnecessária de memória, já que não importamos toda a livraria.  Exercício 1Modifique seu programa desenvolvido no exercício anterior para que agora ele passe a utilizar a biblioteca `math`.  Exercício 2Faça uma calculador trigonométrica com a qual o usuário possa selecionar entre as funções seno cosseno e tangente e fazer a entrada de um determinado ângulo e obter o resultado correspondente.   2. Bibliteca NumPyA biblioteca (Numpy)[https://numpy.org] será certamente a mais utilizada neste curso, veja nas linhas abaixo como fazer o cálculo da raiz quadrada de um determanado valor com esta bibliteca.<jupyter_code>import numpy as np
np.sqrt(4)<jupyter_output><empty_output><jupyter_text>Alternativamente, e se soubéssemos com certeza que apenas a função `sqrt` seria necessária para o programa, então a importação poderia ser realizada como:<jupyter_code>from numpy import sqrt as npsqrt
npsqrt(4)<jupyter_output><empty_output><jupyter_text>A biblioteca NumPy possui todas as funcionalidades de `math` e muitas outras, por motivos de economia de memória, é conveniente que apenas uma delas seja importada para o kernel. Neste curso a NumPy será preferida pois o número de funcionalidades que possui é superior a `math`, além de ser mais otimizada no tempo de execução. Acesse [Numpy Basic Math](https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.math.html) para encontrar as funções matemáticas disponíveis. Exercício 3Modifique sua calculadora trigonométrica para que ela utilize Numpy no lugar de `math`.   2. A função *buint* in `input()`.Para resolver os exercícios propostos a função *built in* `input()` pode ser necessária, basicamente ela solicita ao usuário a inserção de um determinado valor por meio do dispositivo padrão de entrada, geralmente o teclado, apos a inserção que se dá quando o usuário digita o valor desejado e pressiona a tecla `enter`, a função retorna o valor fornecido no formato de uma cadeia de caracteres.Veja um exemplo de sua utilização.<jupyter_code>nome = input("Digite seu nome: ") #Note o texto passado como argumento da função.
print(nome)<jupyter_output>Digite seu nome:  Reginaldo<jupyter_text>Outro exemplo:<jupyter_code>val = input("Digite um número: ")
print(type(val))<jupyter_output>Digite um número:  256<jupyter_text>Note que o usuário digitou um número real, mas a função armazenou um objeto da classe `str`, abreviação de *string*, que são cadeias de caracteres sequenciais e ordenados. Para que o valor fosse armazenado como número o procedimento correto seria:<jupyter_code>val_int = int(input("Digite um inteiro: ")) # linha A
val_real = float(input("Digite um número real: ")) #linha B
print(type(val_int))
print(type(val_real))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.059718969555035126, 'fraction_numerical': 0.00546448087431694, 'mean_word_length': 5.842456608811749, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '120957', 'license': 'MIT', 'n_tokens_mistral': 1706, 'n_tokens_neox': 1667, 'n_words': 672, 'path': 'Aula01/Aula01_C.ipynb', 'repo_name': 'ProfLeao/ProgramacaoParaCienciaEEngenhariaComPython3', 'size': '5124'}