Aulas do bloco

← Todas as aulas
Pythonaula 431/07/20261h33

TP1 na prática: comentários, tipos e entrega no Deep Note

Detalha o fluxo completo de entrega do TP1 no Deep Note (duplicar template, compartilhar com link e exportar IPYNB) e percorre as questões 1 a 8 com comentários, type(), fluxo IPO e booleanos; traz prazo estendido até 14 de agosto e regra de pênalti no AT. Vale reabrir para conferir a entrega e refazer os exemplos antes da divisão inteira da questão 11.

▶ Abrir gravaçãoIniciar exercíciosAlta71/1000/24 exercícios

Para revisar rápido

Resumo da aula

8 pontos
  • Os TPs não entram na nota, mas atraso limita a nota máxima mesmo com AT gabaritado; o AT é o que define a nota.

  • Quem não entrega os TPs não pode entregar o AT e não pode ser aprovado.

  • O prazo do TP1 foi estendido para 14 de agosto; por enquanto, faça só até a questão 10.

  • Comentários começam com #, são ignorados pelo Python e documentam o código para pessoas.

  • Variável é um nome que guarda um valor; os tipos vistos foram string, int, float e booleano (True/False).

  • O fluxo IPO organiza o programa em entrada, processamento e saída; print() mostra a saída.

  • A função type() informa o tipo de um valor; ela não faz a checagem do tipo.

  • A entrega é no Deep Note: duplicar o template, compartilhar em modo Edit, colar o link e exportar o IPYNB.

Guia de estudo

Regras de avaliação: TPs e AT

Nesta aula o foco foi o TP1 na prática e as regras de entrega. Os três TPs não impactam a nota final, mas precisam ser entregues na data. Atraso limita a nota máxima, mesmo que o AT seja gabaritado. Se não entregar os TPs, não pode entregar o AT e não pode ser aprovado. É o AT que define a nota final da disciplina.

A correção dos TPs é feita pelos monitores; o AT é corrigido pela professora. Só o TP1 será lido em aula. TP2 e TP3 não serão lidos, mas dúvidas podem ser tiradas em aula ou pelo infinete.online. A recomendação é ir fazendo os TPs aos poucos, ao longo das aulas.

O prazo do TP1 foi estendido para 14 de agosto (o original era 10 de agosto). Faça apenas até a questão 10. A questão 11 depende de divisão inteira e operador de resto, ainda não dados. O TP é com consulta; o site RealPython foi recomendado.

Como acessar e entregar o TP1 no Deep Note

O template do TP está no Deep Note, onde se escreve e se roda o código. O fluxo recomendado de entrega é duplicar o template (Duplicate Project), compartilhar a cópia com permissão de edição (Share com modo Edit), copiar o link e colá-lo no campo indicado no começo do notebook, exportar o IPYNB e enviar no Moodle.

IPYNB é o formato de notebook que guarda código e texto; é o arquivo da entrega. O link do Share entra no começo do arquivo antes de exportar. Depois de duplicar, dá para rodar o código. Com o foco no bloco, Ctrl+Enter executa sem clicar em play.

Não é estritamente obrigatório copiar o template: se as questões estiverem identificadas e cada bloco for uma questão, é difícil o monitor implicar. O recomendado, ainda assim, é seguir o template.

Comentários (#) e organização do código

Linhas que começam com # (hashtag/sustenido) são ignoradas pelo Python. Servem para documentar o código para humanos. Em comentário longo, cada linha precisa começar com #. Também dá para colocar # depois do código: o Python executa o trecho antes da # e ignora o resto. Comentar uma linha impede que ela seja executada sem apagá-la, útil como rascunho. No Deep Note, selecionar linhas e apertar Ctrl+/ comenta todas de uma vez.

Código bem comentado demais pode indicar débito técnico, nome científico para gambiarra. Código de qualidade tende a crescer para baixo; linhas muito longas indicam problema. Código curto não é código melhor: o importante é ser fácil de entender e seguir o enunciado.

Comentário de linha ignorado pelo Python

# documentacao para humanos
print("Python")

A linha que começa com # não entra na execução. Só o print roda e exibe o texto.

Comentário no fim de uma linha de código

print("Python")  # o trecho depois da cerquilha e ignorado

O Python executa o print e descarta o que vem depois do # na mesma linha.

Variáveis, print e snake_case

Variável é um nome que guarda um valor na memória, como disciplina guardando a string Python. Use snake_case: minúsculas e underscores, por exemplo quantidade_macas. Isso deixa o nome legível e alinhado ao que o enunciado pede.

A função print() exibe valores no terminal e pode receber mais de um valor separado por vírgula. Para mostrar animal e idade, a orientação foi um print por linha, sem vírgula. No exemplo, animal valia golfin e idade valia 67. Outro exemplo criou pior_bilionário com Elon Musk e fez print, com comentários. Se o enunciado pede dois prints, use dois prints.

Duas variáveis e dois prints separados

animal = "golfin"
idade = 67
print(animal)
print(idade)

Cada print vai para uma linha. Foi o jeito pedido para mostrar os dois valores, sem vírgula no print.

Variável de texto e print

disciplina = "Python"
print(disciplina)

O nome disciplina guarda a string. O print mostra o valor guardado, não o nome da variável.

Nome com acento e string

pior_bilionário = "Elon Musk"
print(pior_bilionário)

A variável guarda o texto Elon Musk. O print exibe exatamente esse valor.

Fluxo IPO: entrada, processamento e saída

O fluxo IPO (entrada, processamento, saída) é o padrão para montar os exercícios. Entrada são os dados colocados em variáveis. Processamento é o cálculo feito com esses dados. Saída é o que o print() mostra.

O exemplo da aula usou números na entrada, multiplicação no processamento e o resultado na saída. A soma segue a mesma lógica: valores de venda entram, o operador + processa, e a receita total sai. Escrever nessa ordem — guardar, calcular, imprimir — evita linha única confusa e ajuda a conferir o enunciado.

Entrada em variáveis e saída com print

animal = "golfin"
idade = 67
print(animal)
print(idade)

As atribuições são a entrada. Não há cálculo neste trecho. Os dois prints são a saída, um valor por linha.

Processamento com soma e saída do total

venda_smartphones = 101
venda_acessorios = 67
receita_total = venda_smartphones + venda_acessorios
print(receita_total)

O padrão da aula é receita_total = venda_smartphones + venda_acessorios. Os inteiros só tornam o trecho executável: entrada nas duas variáveis, + no processamento, print na saída.

Tipos de dados e a função type()

Quatro tipos aparecem no TP. String é texto, como Python. Inteiro (int) é número sem parte decimal, como 101. Float é número com parte decimal escrito com ponto, como 5.99. Booleano guarda verdadeiro ou falso; em Python as iniciais são maiúsculas: True e False.

A função type() devolve o tipo de um valor. Serve para ganhar informação ou decidir o comportamento do código. Ela não checa o tipo: informa ou extrai o tipo. Verificação exigiria estrutura condicional (if-else etc.), fora do que você precisa agora.

Na demonstração, type() foi aplicada à variável idade. Colocar type() dentro de print mostrou <class ‘int’>. Também deu para imprimir idade e o tipo na mesma linha, com vírgula.

type() devolve a classe do valor

idade = 67
print(type(idade))

A saída é <class ‘int’>. type() informa o tipo da idade; não compara e não valida nada.

Valor e tipo na mesma linha

idade = 67
print(idade, type(idade))

O print recebe dois argumentos separados por vírgula: primeiro o número, depois o tipo.

type() em string, float e booleano

print(type("Python"))
print(type(5.99))
print(type(True))

As saídas são <class ‘str’>, <class ‘float’> e <class ‘bool’>. Float usa ponto, não vírgula. True começa com maiúscula.

Booleanos, reatribuição e operador +

Depois de criada, a variável pode ter o valor trocado. O print mostra o valor atual naquele momento. O nome começou como Eduardo, foi reatribuído para Duda, e dois prints mostraram a mudança. O mesmo padrão vale para o booleano sensor_ativo, alterado de True para False.

A soma usa o operador +. O exemplo foi receita_total = venda_smartphones + venda_acessorios: processamento à direita, nome do resultado à esquerda. Não tente resolver em uma linha só para parecer avançado. Código fácil de entender e fiel ao enunciado é o que vale.

Reatribuição mostrada com dois prints

nome = "Eduardo"
print(nome)
nome = "Duda"
print(nome)

O primeiro print vê Eduardo. Depois o mesmo nome passa a guardar Duda. O segundo print vê o valor novo.

Booleano True alterado para False

sensor_ativo = True
print(sensor_ativo)
sensor_ativo = False
print(sensor_ativo)

True e False são booleanos com inicial maiúscula. A reatribuição troca o valor guardado em sensor_ativo.

Avisos administrativos — 9 recados sobre prazos, regras e funcionamento do curso
  • 00:12:09 Os três TPs não impactam a nota final, mas precisam ser entregues na data; atraso limita a nota máxima, mesmo que o AT seja gabaritado.
  • 00:13:22 Se não entregar os TPs, não pode entregar o AT e não pode ser aprovado.
  • 00:13:26 É o AT que define a nota final da disciplina.
  • 01:31:15 TP1: prazo estendido para 14 de agosto (original era 10 de agosto).
  • 01:29:13 Façam o TP1 apenas até a questão 10; a questão 11 depende de divisão inteira e operador de resto, que serão vistos na próxima aula.
  • 00:15:20 Só o TP1 será lido em aula; TP2 e TP3 não serão lidos, mas dúvidas podem ser tiradas em aula ou pelo infinete.online.
  • 00:26:59 Correção dos TPs é feita pelos monitores; o AT é corrigido pela professora.
  • 00:13:32 Recomendação: ir fazendo os TPs aos poucos, ao longo das aulas.
  • 01:32:14 Próxima aula na terça-feira.
Perguntas de aluno — 10 perguntas respondidas na gravação

Daniel: Você vai falar sobre os types nessa aula também? 00:09:28 Não hoje; vou explicar tudo sobre TP e types em breve.

Ícaro: É para tentar fazer o TP todo somente com o que estudou e lembra, ou pode consultar anotações sem IA? 00:53:50 · chat 00:53:43

Professora, uma dúvida:

É para a gente tentar fazer o TP todo somente com o conhecimento que a gente estudou e lembra? Ou podemos fazer consultas sem o envolvimento de IA, tipo as anotações que fizemos ou os códigos que praticamos no deepnote?

É com consulta; recomendo RealPython; pode ficar de boa; live code é outra história.

Felipe: Como fazer para usar o print e mostrar os dois? 00:59:31 Um print por linha, sem usar vírgula; ex.: print(animal) e print(idade).

Tiago: Qual a utilidade do type? 01:14:16 Serve para saber o tipo de um valor e, com base nisso, tomar decisões no código.

O type checa o tipo? 01:16:23 Não checa; ele informa/extrai o tipo. Verificação exige estrutura condicional (if-else etc.).

professora da para ver o codigo que roda a funcao type? 01:17:23 · chat 01:17:04 Sim, no código-fonte do interpretador Python; é bem complicado.

seria no caso eu tenho uma dúvida na questão 11, seria um conteúdo que você passaria numa próxima aula? 01:28:23 · chat 01:28:15 Sim; envolve divisão inteira e operador de resto; não façam a 11 ainda.

Eu acabei criando um do zero para fazer até a atividade 10, é obrigatório fazer uma cópia desse template? 00:28:20 · chat 00:24:17 Desde que identifique as questões e cada bloco seja uma questão, é difícil o monitor implicar; mas o recomendado é seguir o template.

Esse que é o link para colocar no começo do arquivo? 00:30:15 · chat 00:26:42 Sim, copie o link do Share e cole no campo indicado antes de exportar o IPYNB.

Dá para rodar o código ali? 00:33:02 Depois de duplicar, dá para rodar tranquilo.

Trechos que valem reouvir — 6 momentos que mais rendem uma segunda escuta
  • 00:22:44 — Passo a passo completo da entrega: duplicar template, compartilhar, gerar link e exportar IPYNB.
  • 00:38:20 — Demonstração de comentários no Deep Note e o atalho Ctrl+/.
  • 00:56:10 — Explicação do fluxo IPO, conceito central para vários exercícios.
  • 01:08:41 — Demonstração da função type() com o exemplo do golfinho e a saída da classe do valor.
  • 01:22:04 — Reatribuição de variável (Eduardo -> Duda), mostrando como o valor muda na execução.
  • 00:12:09 — Regra de pênalti por atraso de TP, que muda a nota final.

Glossário da aula

Conceitos

Comentário em Python (#)

00:39:59

É uma linha que começa com # e é ignorada pelo Python. Serve para documentar o código para humanos entenderem.

Ctrl+Enter (rodar bloco no Deep Note)

00:39:10

É o atalho que executa o código do bloco em foco no Deep Note. É usado para rodar sem precisar clicar em play.

Ctrl+/ (comentar seleção)

00:46:08

É o atalho que comenta todas as linhas selecionadas de uma vez. Serve para documentar ou desativar trechos rapidamente.

Variável

00:55:16

É um nome que guarda um valor na memória, como 'disciplina' guardando 'Python'. É usada para armazenar dados e reutilizá-los no código.

Função print()

00:39:01

É a função que exibe valores no terminal e pode receber vários valores separados por vírgula. É usada para mostrar resultados ou mensagens.

String

00:55:28

É o tipo de dado que representa texto, como 'Python'. É usado para guardar palavras, frases ou qualquer sequência de caracteres.

Inteiro (int)

00:55:38

É o tipo de dado para números sem parte decimal, como 101. É usado para contar quantidades inteiras ou valores exatos sem fração.

É o tipo de dado para números com parte decimal escritos com ponto, como 5.99. É usado para representar valores quebrados ou medidas precisas.

Booleano (True/False)

01:20:56

É o tipo que guarda apenas verdadeiro ou falso, escrito em Python como True e False com inicial maiúscula. É usado para decisões lógicas.

Função type()

01:09:20

É a função que devolve o tipo de um valor. É útil para descobrir o tipo e decidir como o código deve se comportar.

Fluxo IPO (entrada, processamento, saída)

00:56:10

É o padrão com três etapas: entrada, processamento e saída. É usado quando números entram, são multiplicados e o resultado é exibido.

Snake case

01:02:23

É a convenção de escrever nomes de variáveis com letras minúsculas e underscores, como quantidade_macas. É usada para deixar nomes legíveis e padronizados.

Soma com operador +

01:26:03

É o operador aritmético que soma valores, como em receita_total = venda_smartphones + venda_acessorios. É usado para calcular totais.

Divisão inteira e operador de resto

01:29:17

É um conteúdo ainda não ensinado sobre divisão inteira e operador de resto. Será necessário para resolver a questão 11 do TP1.

É o formato de arquivo de notebook que guarda código e texto. É o arquivo exportado para envio na entrega.

Deep Note

00:22:44

É a plataforma e editor onde fica o template do TP. É usada para escrever e rodar o código do trabalho.

Duplicate Project

00:24:12

É a ação de criar uma cópia do template do projeto. É usada para permitir editar sua própria versão sem alterar o original.

Share com modo Edit

00:24:21

É a ação de compartilhar o projeto copiado com permissão de edição. É usada para copiar o link e colocá-lo no notebook.

Export IPYNB

00:25:36

É o processo de baixar o arquivo .ipynb do projeto. É usado para enviar o arquivo final no Moodle.

Débito técnico (gambiarra)

00:44:38

É o nome científico para gambiarra no código. Código com comentários em excesso pode indicar que houve um débito técnico ali.

Código bom cresce para baixo

00:47:51

É a ideia de que código de qualidade cresce para baixo, em linhas verticais. Linhas muito longas indicam que há problema no código.

Código curto não é código melhor

01:26:49

É o princípio de que código curto não significa código melhor. O importante é ser fácil de entender, mesmo que não resolva tudo em uma linha, seguindo o enunciado.

RealPython

00:54:06

É um site recomendado para consulta durante o TP. É usado como fonte de apoio para tirar dúvidas e estudar exemplos.

Comentário para desativar linha

00:48:57

É o uso de # para impedir que uma linha seja executada sem apagá-la. É útil para manter rascunhos ou testar o código.

Comentário em linha de código existente

00:46:40

É a possibilidade de colocar # depois de um código na mesma linha. O Python executa o trecho antes da # e ignora o que vem depois.

Comentário de múltiplas linhas

00:45:46

É o comentário longo em que cada linha precisa começar com #. É usado para explicar trechos maiores mantendo tudo ignorado pelo Python.

Reatribuição de variável

01:22:21

É a troca do valor de uma variável já criada. O print sempre mostra o valor atual da variável no momento em que é chamado.

Prática autocorrigida

Exercícios

0/24 concluídos
  1. Classe de um inteiro lidoLeia um inteiro com int(input()) e mostre seu tipo usando type(), sem mostrar o valor numérico.faciltype()intinput()
  2. Número e tipo na mesma linhaLeia um inteiro. Use um único print() com dois argumentos para mostrar o valor e type() desse valor, separados por um espaço.faciltype()print()vírgula no print
  3. IPO com multiplicaçãoLeia dois inteiros, multiplique-os, guarde o produto em uma variável e mostre o resultado.facilfluxo IPOmultiplicaçãovariável
  4. Classe de um decimal lidoLeia um decimal com float(input()) e mostre somente seu tipo usando type(). Use ponto na entrada.faciltype()floatinput()
  5. Nome antigo e nome novoLeia uma linha na variável nome e mostre-a. Depois, leia outra linha na mesma variável e mostre o novo valor.facilreatribuição de variávelvariávelprint()
  6. Rótulo e sensor ligado depois desligadoLeia um rótulo. Crie sensor_ativo = True e mostre o rótulo e o sensor, um por linha. Reatribua False ao sensor e mostre seu novo valor.facilbooleanoreatribuição de variávelprint()
  7. Classe de um texto lidoLeia uma linha, guarde-a em uma variável e mostre somente seu tipo usando type(). Não converta a entrada.faciltype()stringvariável
  8. Texto e depois a classeLeia uma única linha. Mostre o texto recebido e, na linha seguinte, seu tipo usando type().faciltype()stringprint()
  9. Valor e classe na mesma linhaLeia um inteiro. Em um único print() com dois argumentos, mostre o número e seu tipo obtido por type().faciltype()intvírgula no print
  10. Classe do booleano FalseLeia e descarte uma linha. Depois, mostre type(False). Use o booleano False sem aspas no código.faciltype()booleanoFalse
  11. Produto de dois decimais no IPOLeia dois decimais, um por linha. Multiplique-os, guarde o produto em uma variável e mostre esse valor. Use ponto nas entradas.mediafluxo IPOfloatmultiplicação
  12. Texto e depois o sensor desligadoLeia um texto em uma variável e mostre-o. Reatribua o booleano False à mesma variável e mostre o novo valor.mediareatribuição de variávelbooleanoprint()
  13. Classe do quocienteLeia dois inteiros. Divida o primeiro pelo segundo com / e mostre somente o tipo do quociente usando type(). O divisor não será zero.mediatype()floatdivisão
  14. Texto e classe do inteiroLeia um texto e depois um inteiro, um por linha. Mostre o texto e, abaixo, o tipo do inteiro convertido, usando type().mediatype()stringint
  15. Linha lida e classe de TrueLeia uma linha. Mostre o texto recebido e, abaixo, type(True), usando o booleano True sem aspas.mediatype()booleanoprint()
  16. Três partes com pontoLeia três linhas e mostre-as em uma linha, acrescentando um ponto entre cada par de textos, sem espaços adicionais.mediaconcatenaçãostringinput()
  17. Soma dos dois primeiros menos o terceiroLeia três inteiros. Some os dois primeiros, subtraia o terceiro e mostre o resultado.mediaintoperadores aritméticos básicosfluxo IPO
  18. Primeira, terceira e depois a segundaLeia três linhas e mostre-as na ordem 1, 3 e 2, uma por linha.mediainput()execução sequencialprint()
  19. Subtração em cadeia de três inteirosLeia três inteiros. Mostre o primeiro menos o segundo menos o terceiro, nessa ordem.mediaintoperadores aritméticos básicosexecução sequencial
  20. Média de dois decimaisLeia dois decimais e mostre a média aritmética: a soma dos valores dividida por 2.mediafloatdivisãofluxo IPO
  21. Segunda, quinta e de novo a segundaLeia cinco linhas. Mostre as posições 2, 5 e novamente 2, uma por linha. Descarte as posições 1, 3 e 4.dificilinputvariávelexecução sequencial
  22. Soma de duas razõesLeia quatro inteiros w, x, y e z. Mostre w / x + y / z. Os divisores x e z não serão zero.dificildivisãoprecedência de operadoresfloat
  23. Três textos com dois-pontos no meioLeia três linhas e mostre-as na mesma linha, separadas por dois-pontos, sem acrescentar espaços.dificilconcatenaçãostringinput
  24. Produto de três inteiros e a classeLeia três inteiros. Mostre seu produto e, na linha seguinte, o tipo desse produto obtido por type().dificilmultiplicaçãotype()int