– Seus primeiros programas em Python – Criando seu primeiro programa
Primeiro vamos entender a interface do Jupyter! Quando o Jupyter rodar no seu computador, você verá uma tela como a tela ao lado. Ela basicamente é um espelho das pastas do SEU computador.
Para começarmos, basta você selecionar a pasta em que deseja salvar os arquivos. No nosso caso, vamos salvar na Pasta Área de Trabalho → Cartilhas Python
Na pasta selecionada, você poderá abrir Notebooks antigos, criar novos Notebooks ou carregar arquivos (por exemplo, as cartilhas disponibilizadas no curso). Para carregar um arquivo é bem fácil. Basta clicar no item UPLOAD indicado pela seta. Já é interessante você carregar as cartilhas de exercícios disponibilizadas nas aulas. Lembrando que os arquivos são no formato .ipynb e por isso só podem ser abertos no Jupyter ou no Google Colab
A outra opção é criarmos do zero um novo arquivo do Jupyter. Para isso, basta clicar em NEW → Python 3
Show! Temos agora um novo arquivo Jupyter, no formato .ipynb. Vamos conhecer agora os principais ícones da barra de tarefas.
1. Nome do arquivo: Para alterar, basta clicar e escrever o nome que você preferir
2. Status do Autosave: Status da última vez que o arquivo foi salvo
3. Célula de entrada de código ou texto
Vamos conhecer agora os principais ícones da barra de tarefas
Da esquerda para a direita:
• Save and Checkpoint: Salva arquivo;
• Insert Cell Below: Insere uma célula abaixo da célula selecionada;
• Cut Selected Cells: Corta células selecionadas
• Copy Selected Cells: Copia células selecionadas;
• Paste Cells Below: Cola células abaixo;
• Move Selected Cells Up: Move a célula selecionada para a linha acima;
• Move Selected Cells Down: Move a célula selecionada para a linha abaixo;
Indicação de seleção de célula:
Azul: Célula selecionada (ATALHO = ESC);
Verde: Célula ativa para entrada de dados (ATALHO = ENTER);
Vamos conhecer agora os principais ícones da barra de tarefas
Da esquerda para a direita:
• Run: Roda o código (ATALHO = CTRL+ENTER)
• Interrupt the Kernel: Pausa o processamento no kernel;
• Restart the Kernel: “Reseta” o Jupyter
• Restart the Kernel, then re-run the whole notebook : “Reseta” o Jupyter e roda o programa do início novamente.
• Barra de “tipo de entrada”: Define se será inserido um Markdown (TEXTO) ou Code (CÓDIGO) na célula selecionada;
• Open the Command Palette: Abre a lista de atalhos
Atenção! Células CODE são aquelas que possuem o indicador ao
lado “In [ ]“. Já as MARKDOWN não possuem esse indicador
Agora vamos entender um pouco mais a fundo como funciona o Jupyter Notebook.
Primeiro vamos falar sobre o tipo Markdown: Este tipo de célula será utilizada quando você quiser APENAS texto. Um título, uma introdução, etc. O Markdown possui 6 tamanhos de fontes distintos para títulos. Para selecionar o tamanho desejado você deve usar o “#” quanto menor o número de #, maior o tamanho da letra. Outro detalhe é que o Jupyter já entende que existe um espaço entre linhas quando você usa esse recurso. Pode ver que o resultado sempre tem um espaço entre o texto, mesmo que não esteja sinalizado na hora de escrever.
Para executar a célula selecionada, basta clicar no ícone RUN ou usar o atalho CTRL+ ENTER. Outra dica útil é usar o atalho Shift + ENTER quando você quiser executar uma célula e inserir uma nova célula automaticamente.
A T E N Ç Ã O !
Lembre – se:
Verde : Célula ativa para entrada de dados;
Azul : Célula selecionada e não ativa para entrada de dados;
Agora vamos entender as células CODE. O primeiro código que vamos usar vai ser usando a função PRINT. Ela “imprime” o que estiver escrito dentro do parênteses. Funciona tanto para texto como para números, mas para texto é muito importante lembrar de utilizar as ASPAS! O Python vai entender tanto as duplas(“ “) quanto as simples (‘ ‘). Para os números, basta escrever dentro dos parênteses. Mais para frente, vamos entender como imprimir variáveis e uma combinação entre texto e números.
– Operações Básicas
As operações matemáticas básicas podem ser realizadas no Python, a partir dos símbolos abaixo:
SOMA (+)
SUBTRAÇÃO ( - )
DIVISÃO ( /)
MULTIPLICAÇÃO ( * )
POTENCIAÇÃO ( ** )
Além destas operações, o Python também possui uma operação que será muito útil mais para frente: o RESTO ( %).
O RESTO (%) sempre terá como resultado o
RESTO de uma DIVISÃO. Por exemplo:
RESTO(%) da divisão 7 DIVIDIDO por 2 = 1.
Vamos pegar o exemplo ao lado.
print(10*2)
print(10/2)
print(10.0/2)
print (10/2.0)
print (10.0/2.0)
__________
20
5.0
5.0
5.0
5.0
A primeira operação é uma multiplicação e o resultado é o número, sem casa decimais, 20. Já as divisões seguintes possuem o mesmo resultado , com casa decimal, 5.0.
Qual a diferença?
1) Uma divisão sempre será apresentada com casas decimais.
2) Sempre que um dos números envolvidos na operação tiver casas decimais, o seu resultado terá casa decimais.
O Python sempre vai buscar entender o seu código. Mas caso ele não entenda, o erro vai ser indicado para você. É comum em um primeiro momento que ele assuste, mas vamos focar no que é essencial nesse início e vai ser bem fácil.
Como você pode ver, fizemos 2 operações 10÷2 e 10÷0. A primeira operação foi bem sucedida. O nosso resultado foi “printado”. Sendo ele o valor 5.0
print(10/2)
print(10/0)
__________
5.0
----------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-1-9da99367bc033> in <module>
1 print(10/2)
----> 2 print(10/0)
ZeroDivisionError: division by zero
Agora, antes de entendermos a operação 2, vamos tentar ler a mensagem de erro:
ZeroDivisionError: Nesse campo, conseguimos entender que o erro é uma divisão por zero. Pois matematicamente isso não é correto.
Precisamos entender em qual das linhas esse erro está. Para isso, não é necessário procurar no código. O Python sempre te dará uma dica de onde pode estar o problema.
O Python sempre te dará uma dica de onde pode estar o problema. Nesse caso, está na
linha 2 da nossa célula. Ela está indicada pela seta - - -> logo antes do número 2.
Sabendo disso, é fácil identificar que de fato no nosso código, na linha 2, temos o cálculo 10/0, o que gera assim, um erro no programa.
– Ordem das Operações no Python
No caso de operações maiores, o Python seguirá a mesma ordem de operações da matemática. Ou seja, Multiplicação e Divisão são realizadas antes das operações de Adição e Subtração. Caso seja necessária a adição antes da multiplicação, será necessário o uso dos parênteses.
print(10*2 +5)
print(10*(2+5))
___________
25
70
Como você pode perceber, o resultado foi alterado, pois na primeira linha temos o cálculo:
10*2=20 + 5 = 25
Enquanto na segunda linha, Primeiro é somado 2 com 5 = 7 e depois é feita a multiplicação 10*7 = 70
– Operações com texto (String)
Até agora utilizamos o termo “texto” para os códigos escritos dentro das aspas. Na realidade, o termo mais correto é STRING. Assim como nas operações matemáticas, podemos fazer operações com Strings.
Vamos ver o exemplo ao lado.
print("Daniel")
print("Candiotto")
print("Daniel" + "Candiotto")
print("Daniel" , "Candiotto")
_______________
Daniel
Candiotto
DanielCandiotto
Daniel Candiotto
Candiotto
DanielCandiotto
Daniel Candiotto
As duas primeiras linhas são apenas prints “convencionais” sem nenhuma operação. Já a terceira e quarta linha usam 2 operadores distintos para unir textos e formar uma string única.
Perceba que o sinal de “+” CONCATENA os textos escritos nas aspas. Já a vírgula, concatena os dois textos, mas faz uma separação por um espaço
A T E N Ç Ã O !
A decisão pelo uso do “+” ou “,” pode afetar seu resultado mais a frente. Uma outra forma de se obter o mesmo resultado da vírgula utilizando o sinal “+” é: print(‘Daniel’ + ‘ ‘ + ‘Candiotto’)
Outra operação possível com strings é a função in. Essa função permite verificar se algum caractere ou conjunto de caracteres está contido em uma outra string.
Vamos dar uma checada nos exemplos ao lado.
'D' in 'Daniel"
'Da' in 'Daniel"
'J' in 'Daniel'
'J' in 'Daniel'
'da' in 'Daniel'
__________
True
True
False
False
‘D’ in ‘Daniel’ -> Resultado “TRUE”. Por que? A função in retorna sempre se o que está sendo testado é VERDADEIRO (TRUE) ou FALSO (FALSE). Nesse caso como ‘D’ está em ‘Daniel’ o resultado é verdadeiro. Já no teste ‘J’ in ‘Daniel’ o resultado é FALSO pois não existe a letra J no nome Daniel.
A T E N Ç Ã O !
A operação “in” é “case sensitive”, isso significa dizer que há diferenciação entre letras MAIÚSCULAS e MINÚSCULAS. Nesse caso, por exemplo: daniel é diferente de Daniel
– Variáveis
O que são variáveis?
Variáveis são elementos que nos ajudam a guardar uma informação, mesmo que esta varie com o tempo.
Mas como eu crio uma variável?
No Python é muito comum que as variáveis tenham nomes muito parecidos com os nomes falados. Por exemplo, vamos dizer que eu quero fazer um programa que calcula a média de alunos.
Uma variável que posso criar será a variável NOTA = 9
A T E N Ç Ã O !
Quando estamos tratando de variáveis o termo “=“ não significa IGUAL e sim, RECEBE! Na programação, sempre o que está A ESQUERDA do “=“ RECEBE ALGO do que está escrito À DIREITA do “ = “ Então, no exemplo ao lado não lemos NOTA igual a NOVE e sim, A variável NOTA recebe o valor NOVE
Agora que entendemos um pouco mais sobre variáveis, vamos ver o exemplo ao lado escrito no Jupyter. Ao invés de sempre fazermos a conta manualmente, podemos usar as variáveis nota1, nota2 e nota3 para calcular a média que seguirá a fórmula descrita na variável média_geral
nota1 = 10
nota2 = 9.5
nota 3 = 9
media_geral = ((nota1+nota2+nota3)/3)
print (media_geral)
_________
9.5
Sem mudar nenhuma linha de código, apenas as notas, conseguimos recalcular a média.
Na criação de uma variável é importante levar em consideração algumas restrições e dicas:
Restrições:
• Não pode ter o nome de uma função. Ex: Uma variável não pode se chamar “print”.
• A variável não deve ter nenhum ESPAÇO. O uso do “_” é uma boa forma de separar as
palavras como por exemplo media_geral. Outra possibilidade é o uso de letras maiúsculas. Ex: MediaGeral.
D I C A
Padronize para todo o programa como você escreverá as variáveis. Isso facilitará o seu entendimento e das demais pessoas que usarão seus programas.
– Um Erro Comum com Variáveis no Jupyter
Um erro que acontece muitas vezes quando estamos trabalhando com variáveis, principalmente quando estamos trabalhando com arquivos muito grandes.
Na figura da esquerda executamos apenas o código da célula de baixo, e assim o Python nos retornou um erro, dizendo que o nome ‘faturamento’ não está definido.
faturamento = 150
custo = 60
lucro = faturamento - custo
print(lucro)
-------------------------------
NameError: name 'faturamento' is not defined
“Mas por quê? O faturamento está definido na célula de cima, ele é 150”, você pode pensar.
Porque o código sempre tem que ser executado de cima para baixo (lembra que falamos isso anteriormente?) e o código da primeira célula não foi executado. Então sempre que você criar ou editar algum código na célula de cima, terá que executar o código dessa célula antes de executar o código da célula de baixo. Isto irá resolver o problema como na imagem da direita.
Se agora alterarmos o valor de faturamento para 100 e executarmos somente o código da segunda célula, podemos perceber que o valor do lucro não será alterado.
Como não rodamos o código da primeira célula, o valor do faturamento não foi atualizado, e o lucro foi calculado com os valores antigos, ainda armazenados nas variáveis.
Para que os valores sejam atualizados é necessário rodarmos primeiro o código da célula de cima e depois o código da célula de baixo.
Se você quiser garantir que sempre que você rodar um código no jupyter, ele rode tudo na ordem, de cima para baixo, você deve clicar em Cell → Run All. Esse comando sempre rodará todas as células e na ordem, não importando se seu código tem 2 células ou 200 células.
– Input – Pegando informações do Usuário
Muitas vezes no Python iremos precisar consultar o usuário sobre alguma informação.
Para isso, usamos a função Input(). Vamos ver o exemplo ao lado. A estrutura do input é:
Input(‘TEXTO QUE SERÁ LIDO PELO USUÁRIO’)
Após a execução da célula, um campo em branco será disponibilizado ao usuário. Após inserida a informação pelo usuário, o Python continuará a processar as demais linhas do código.
O * indica que a célula está sendo processada pelo Jupyter. Nesse caso específico, aguardando o usuário inserir no campo a informação solicitada
In [*]: input('Qual seu nome?')
No entanto, o input por si só não guarda esta
informação... Para armazenar essa informação
precisamos atribuir o resultado do input à uma
variável.
Variável NOME recebe resultado do INPUT
Muito importante!! Perceba que não usamos
mais o termo IGUAL e sim RECEBE pois o sinal
“=“ deverá ser lido assim daqui para frente.
Outro ponto de atenção é a estrutura:
A variável sempre virá à esquerda do “=“ e o
que se quer atribuir na variável, à direita.
VARIÁVEL = O QUE SE QUER ATRIBUIR
Perceba que no primeiro caso, o input apenas retornou a resposta dada pelo usuário, mas o seu código não prevê uma “impressão” da variável.
Já no segundo caso, como atribuímos a função input à variável NOME, a informação “Daniel” fornecida pelo usuário está armazenada nesta variável.
Assim, ao inserirmos a variável NOME dentro do argumento da função print (), a mesma retornará o nome armazenado.
– Um Erro Comum com Input no Jupyter
Agora vamos ver um erro que pode acontecer quando você estiver trabalhando com input, e como resolver esse erro.
Quando executamos esse código, ele abre uma caixa de texto para inserirmos o faturamento da empresa. Mas se em vez disso, apertássemos de novo por algum motivo o botão Run ?
O que acontece é que o código permanece em execução, porém a caixa de texto para a entrada de valores sumiu, e não importa quantas vezes você clique no botão Run, que irá permanecer como está.
Existem 2 formas de resolver esse erro:
A primeira forma é clicar no botão Stop e depois no botão Run de novo, que na maioria das vezes resolve.
Se a primeira forma não resolver, a segunda forma é clicar em Kernel → Restart.
Logo após confirmar o Restart, 2 mensagens irão aparecer no canto superior direito do Jupyter: a primeira é Connected e a segunda é Kernel ready. Isso significa que agora o Jupyter irá se comportar como se você tivesse acabado de abri-lo.
Isso irá resolver o problema e permitir que você rode o seu código novamente
– Erro Comum do print, cuidado
Agora vamos ver um erro que muitas pessoas cometem na hora de usar o print.
Sabemos que a forma correta de usar o print é com o conteúdo que queremos imprimir entre parênteses.
print("texto")
_________
texto
Mas muitas pessoas acabam usando o print com = sem perceber. O que não deve acontecer de modo algum, porque acaba modificando a função original do print, e com isso o print não imprimirá mais nada . E quando tentarmos usar o print novamente, será gerado um erro
print = "texto"
------------------------------
TypeError: 'str' object is not callable
Portanto, Nunca use o print com =. Mas caso aconteça sem querer, não adianta só corrigir o código, você precisa reiniciar o programa clicando em Kernel → Restart
Após clicar em Restart novamente, as 2 mensagens:
“Connected” e “Kernel Ready” aparecerão no canto superior direito do Jupyter.
Isso significa que o Jupyter foi reiniciado e tudo que rodamos até agora foi deletado, ou seja, todas as células de código precisam ser executadas de novo. E quando rodarmos o print, ele funcionará novamente.
Nenhum comentário:
Postar um comentário