Guia de estudo
Tipos básicos e por que eles importam
Cada valor em Python pertence a um tipo, e o tipo define o que aquele valor aceita. Texto é string (str) e se declara entre aspas. Número inteiro é int e se escreve sem ponto decimal. Número com casas decimais é float e usa ponto, nunca vírgula, como separador. O tipo bool tem só True e False, sempre com inicial maiúscula e sem aspas. None marca ausência de valor; type(None) devolve NoneType.
O motivo de estudar tipos agora é simples: o Python aceita bem operação entre valores do mesmo tipo e reclama quando os tipos não combinam. Sem saber o tipo, o erro parece aleatório. O tipo não depende de um rótulo que você cola na variável. Ele nasce do valor. A pergunta da aula deixa isso claro: declarar x com 5400 não faz o Python assumir float. 5400 é int; 5400.0 é float. O ponto decimal é o que separa os dois.
No Python padrão a tipagem é dinâmica. A mesma variável pode receber outro tipo depois. Não há obrigação de fixar o tipo como em TypeScript ou Java, embora existam ferramentas opcionais de tipos. Outro detalhe prático do TP: a variável guarda só o número. A unidade (R$, kg e afins) fica no contexto e precisa ser sinalizada na exibição. No enunciado, 10.000 pode significar dez mil; isso não é float nem valor numérico pronto para o código.
O ponto decimal decide int ou float
x = 5400
y = 5400.0
print(type(x))
print(type(y))
5400 não tem ponto, então x é int. 5400.0 tem ponto, então y é float. O Python não transforma 5400 em float sozinho só porque o número é grande.
Cada variável mostra o próprio tipo
nome = "texto"
idade = 20
gosta_do_elon = False
saldo = 150.5
print(type(nome))
print(type(idade))
print(type(gosta_do_elon))
print(type(saldo))
print(type(None))
nome é str, idade é int, gosta_do_elon é bool, saldo é float e None tem tipo NoneType. True e False vão sem aspas; se fossem texto, o tipo mudaria para str.
A função type()
A função type() responde qual é o tipo de um valor. Ela aceita variável, valor direto ou o resultado de uma expressão. A saída vem no formato <class ‘str’> ou <class ‘int’>. Use type() quando quiser confirmar o que realmente está guardado, não o que você imagina que está guardado.
Na aula, type() foi aplicado a variáveis como nome, idade, gosta_do_elon e saldo, e também a expressões como 2+3. Isso conecta type() às regras da próxima seção: você não precisa adivinhar se 9/3 ficou int ou float; pergunta ao Python.
Em um projeto, type() aparece junto de decisões: horas podem chegar como int, float ou string e cada caso pede um tratamento. O ambiente Deep Note mostra sozinho o resultado da última linha, mesmo sem print. Isso é da ferramenta, não da linguagem. Não escreva x = 10/2 type x. O caminho seguro é print(type(x)) ou guardar o type em outra variável.
type() em valor, variável e expressão
x = 5400
print(type(x))
print(type(2 + 3))
print(type(None))
O primeiro type lê a variável, o segundo lê o resultado da soma e o terceiro lê um valor direto. Em todos os casos a função devolve o tipo, não o conteúdo.
Regras de tipo nas operações aritméticas
Nas contas, o Python faz poucas conversões sozinho. Essa conversão implícita, ou coerção, acontece em operações aritméticas: int somado a float vira float. É uma das poucas conversões automáticas permitidas.
As regras de resultado são três. Operação só entre inteiros resulta em inteiro. Se houver float, o resultado é float. A divisão com / entre inteiros também resulta em float. Por isso type(9/3) é float, type(93) é int e type(90.5) ou type(10*0.5) é float. A divisão sempre dar float foi uma escolha do Python: toda divisão é tratada como fração.
Essas regras pesam no TP1. A questão 11 pede quantas sacas inteiras cabem no limite. Usar a divisão normal e depois round() está errado, porque round arredonda (0.5 ou mais para cima) e pode inventar uma saca a mais. Aplicar int() sobre a divisão normal também não é o caminho indicado. A aula apontou a divisão inteira (//) para ficar só com a parte inteira do quociente. A porcentagem de ocupação da mesma questão sai de uma regra de três entre o peso embarcado e a capacidade total. Não use round para ajeitar 94.54%. A divisão inteira e o resto ficam para a aula de sexta; o símbolo % em Python é o operador de resto, não um atalho pronto de porcentagem.
Quando a expressão tem mais de um cálculo, como na questão 13, coloque parênteses. Parênteses deixam a ordem explícita e evitam resultado certo no tipo e errado no valor.
O tipo do resultado muda com / e com float
print(type(9 / 3))
print(type(9 * 3))
print(type(9 * 0.5))
print(type(10 * 0.5))
print(type(2 + 3))
9/3 vira float mesmo sendo conta exata. 93 e 2+3 ficam int porque só há inteiros e não há divisão. 90.5 e 10*0.5 ficam float porque um dos valores já é decimal.
Concatenação, TypeError e str()
Concatenação é juntar textos com +. Só string com string. Uma frase com o nome da banda e o nome do álbum funciona porque os dois pedaços são str.
Se um pedaço é int, o Python levanta TypeError. Ele recusa misturar string com inteiro na concatenação. O motivo é o mesmo das seções anteriores: operação entre tipos diferentes só é aceita em poucos casos aritméticos, não no +.
A correção é str(). A função transforma int, float, bool ou None em string na hora do uso. Converter o ano para string e colar na frase não é gambiarra; é a solução correta e é boa prática. Gambiarra seria forçar um tipo inadequado que quebra outra conta. str() não muda a variável original: str(saldo) produz um texto temporário e saldo continua float.
A vírgula no print não é concatenação. Ela só separa argumentos e o print coloca espaço entre eles. Se o espaço extra atrapalha, não tente consertar a vírgula: use + depois de converter com str().
Frase só com strings
banda = "Banda"
album = "Album"
frase = banda + " gravou " + album
print(frase)
Os três pedaços são str, então o + une tudo em um único texto. Esse é o caso em que a concatenação funciona direto.
Número entra na frase só depois de str()
ano = 2024
print("Lancamento em " + str(ano))
saldo = 99.5
print(str(saldo))
print(type(saldo))
print(saldo)
Sem str(ano) o + com o texto geraria TypeError. str(saldo) só cria um texto temporário: o type e o valor de saldo continuam float.
Como usar isso no TP1
A aula leu o TP1 das questões 8 a 16 e marcou 11 e 12 como as mais difíceis. A recomendação é resolver primeiro as fáceis e deixar essas duas por último. O TP1 foi prorrogado para o dia 18.
Só o TP1 será lido em aula. TP2 e TP3 não terão essa leitura; o AT será lido com a turma. Quem perdeu aula deve assistir à gravação e ler o guia no template. Dúvidas podem ser enviadas pelo Infinite.online. Na sexta-feira a aula será cheia, das 19h às 20h30, e cobre divisão inteira, resto e o restante do conteúdo.
O recorte desta semana é operadores matemáticos, concatenação e a interação entre int e float. Inserir respostas como comentários no código não é proibido, mas sinalize os valores também no print. Lembretes que evitam erro bobo: ponto é o separador decimal no código; 10.000 no enunciado pode ser dez mil escrito em português; a variável não guarda unidade; parênteses protegem a ordem do cálculo; type() confirma o tipo antes de concatenar ou dividir.
Vírgula no print não é concatenação
idade = 20
print("idade", idade)
print("idade" + str(idade))
A vírgula mostra dois argumentos e coloca um espaço entre eles. O + junta um único texto e só funciona depois de converter o inteiro com str().
Avisos administrativos — 7 recados sobre prazos, regras e funcionamento do curso
01:26:26TP1 foi prorrogado para o dia 18 para dar mais tempo.01:30:55Na sexta-feira a aula será cheia, das 19h às 20h30, e vai cobrir divisão inteira e resto, além do restante do conteúdo.00:49:15A leitura em aula será feita apenas do TP1; TP2 e TP3 não serão lidos em aula, mas o AT será lido junto com a turma.00:49:58Quem perdeu aula deve assistir à gravação e ler o guia no template; dúvidas podem ser enviadas pelo Infinite.online.00:48:44Dúvidas enviadas no Infinite.online serão respondidas até amanhã.00:08:59Nesta semana o conteúdo são operadores matemáticos, concatenação e interações entre int e float; na semana que vem entra entrada e saída de dados.00:47:18Recomendação para o TP: resolver primeiro as questões fáceis e deixar as questões 11 e 12 para o final, pois são as mais difíceis.
Perguntas de aluno — 12 perguntas respondidas na gravação
Profª, uma dúvida na declaração das variáveis: como regra, se eu definir uma variável X como 5400.00, o python já irá assumi-la como float independente de que eu diga isso no código, certo? 00:14:27 · chat 00:14:17
Não. O tipo é definido pelo valor: 5400 é int, 5400.0 é float; o que separa é o ponto decimal.
tem algum motivo da divisão sempre dar float? mesmo sendo tipo “3” o resultado? 00:20:33 · chat 00:19:28
Foi uma escolha do Python; em JavaScript é diferente. Toda divisão é tratada como uma fração.
Tá errado se usar divisão normal e round? 00:26:04 · chat 00:25:19
Sim. round arredonda e pode dar resultado errado. Use divisão inteira (//) ou math.floor().
Como tirar o espaço entre uma variável e o texto no print? 00:32:32 · chat 00:31:37
Uma dúvida boba: como tirar o espaço entre uma variável e texto no print? Exemplo
"A ocupação máxima do caminhão é de", ocupação_máxima, "%."
A vírgula no print apenas separa argumentos; para controlar o espaçamento use concatenação com +.
posso usar {porcentagem:.2f}%? pra ficar ajustado o valor da porcentagem? 00:32:17 · chat 00:30:57
Pode, mas f-string ainda não foi ensinada e será vista mais adiante.
Python tem como obrigar o tipo da variável, tipo TypeScript? 01:06:26
Não por padrão; Python é tipagem dinâmica. Existem tipos opcionais e ferramentas, mas não é o convencional.
Pode ser x = 10/2 type x? 01:07:38 · chat 01:03:55
x = 10 /2
type(x)
Professora, pode ser assim? Pois vi que a saída fica diferente.
Não recomendo. No Deep Note a última linha é exibida automaticamente, mas isso é comportamento do notebook, não do Python. Use print(type(x)) ou guarde em uma variável.
Devo usar round para arredondar 94.54% na questão 11? 01:09:49
Não. round não é a ferramenta certa; para limitar casas decimais, use format string.
E str converte qualquer tipo em String? 01:24:49 · chat 01:24:48
Não. Converter para o tipo necessário é boa prática e é a única solução para concatenar. Gambiarra é converter para um tipo inadequado que quebra outra operação.
Quando usei vírgula no print, deu certo. Tem problema? 01:25:45
Sim, funciona, mas a vírgula exibe vários valores; não é concatenação. A diferença será explicada melhor depois.
Resto é porcentagem? 00:58:16
Sim, o símbolo % é o operador de resto em Python; a explicação completa fica para a próxima aula.
Pode dar uns exemplos de aplicações práticas do type em um projeto real? Já entendi o que faz mas não consigo imaginar quando seria útil 01:04:08 · chat 01:01:18
Type é usado com estruturas condicionais para decidir o que fazer conforme o tipo do valor; por exemplo, horas podem chegar como int, float ou string e exigem tratamentos diferentes.
Trechos que valem reouvir — 6 momentos que mais rendem uma segunda escuta
00:16:24— Regras de quando uma operação vira int ou float, com exemplos na tela.00:57:27— Como ler a saída de type() para cada tipo de dado.01:13:22— Concatenação de strings com + montando uma frase completa.01:18:07— Erro de TypeError ao misturar string com inteiro; essencial para entender conversões.01:22:40— Solução com str() e por que é boa prática, não gambiarra.01:27:51— str() não modifica a variável original; útil para entender conversão temporária.