def fatorial(n):
    return 1 if n < 2 else n * fatorial(n-1)

fatorial(42)

"""
Explanation: Jupyter Notebook é uma ferramenta excelente para:

Exploração interativa de dados;
Análise de dados (i.e. Analytics);
Aprender Python, R, Julia e dezenas de outras linguagens suportadas

O nome Jupyter é mistura de Julia, Python e R, as três primeiras linguagens suportadas depois que o projeto iPython Notebook se tornou agnóstico em relação a linguagens.
O Jupyter é um aplicativo que permite ver e editar documentos interativos chamados notebooks, assim como o Excel é um aplicativo para ver editar documentos interativos chamados planilhas.
Um notebook é composto de células com texto, código e imagens. Você está lendo agora uma célula de texto. A seguir temos uma célula de código:
End of explanation
"""


2**100

"""
Explanation: Como você viu, uma célula de código pode ter várias linhas de código em Python (ou de outra linguagem suportada), incluindo definições de funções e classes. Muitas vezes uma célula tem apenas uma linha, apenas para fazer um cálculo:
End of explanation
"""


from IPython.display import IFrame
IFrame('http://jupyter.org/', width='100%', height=400)

"""
Explanation: O notebook é dinâmico porque todas as células são editáveis. Experimente clicar na célula acima e alterar o expoente de 100 para 1000. Depois de editar, tecle [SHIFT]+[RETURN] para executar o código.

Atenção: se você está vendo este notebook online é provável que você não tenha permissão para editá-lo. Para editar você precisa instalar o Jupyter Notebook em seu computador e executar este documento localmente.

Além de ser um aplicativo, Jupyter é uma plataforma que inclui bibliotecas muito poderosas. Por exemplo, com uma chamada de função é possível embutir uma página Web em um notebook:
End of explanation
"""


%matplotlib inline
# use o comando acima só uma vez, para configurar a exibição dos gráficos
import matplotlib.pyplot as plt
plt.plot([1, 2, 4, 8, 16])
plt.ylabel('litros de sorvete')
plt.show()

"""
Explanation: Também é fácil gerar gráficos, usando o comando mágico %matplotlib inline e funções da biblioteca matplotlib:
End of explanation
"""


IFrame('http://forpythonquants.com/', width='100%', height=400)

"""
Explanation: Quem usa o Jupyter Notebook
O Jupyter Notebook e seu antecessor, iPython Notebook já são largamente utilizados em:

Análise de dados de experimentos científicos (Scientific Computing)
Análise quantitativa de dados financeiros (Quantitative Analysis)

Na área de finanças quantitativas a primeira conferências especializadas no uso de Jupyter/iPython notebook aconteceu em 2014 em New York, e teve novas edições lá em em Londres:
Para aprender mais
Sites principais:

Jupyter Notebook
iPython, que fornece os kernels para usar Python 2 ou Python 3 no Jupyter
pandas
matplotlib
NumPy e SciPy
End of explanation
"""


