Guia de estudo
Hardcoded versus entrada de dados
Um programa que usa nome, idade e peso pode nascer com esses valores escritos direto no editor. Isso se chama hardcoded: os dados ficam fixos no código. Hardcoded é ruim porque polui a lógica e dificulta mudanças; cada alteração obriga a editar o próprio programa. Em aplicações reais, esses dados ficam em arquivos ou em banco de dados separados do código. A aula citou jogos como Need for Speed, em que configurações ficam em arquivos (por exemplo .in), o que permite mudar opções sem recompilar. Textos, imagens e músicas são assets e também ficam fora do código. A alternativa é a entrada de dados: o usuário informa os valores em tempo de execução. Assim o mesmo programa atende pessoas diferentes, sem reescrever constantes. O destino da aula é um formulário com nome, idade, peso e uma pergunta sobre uso de Linux, todos obtidos na execução, não gravados no código.
Dados fixos no código
nome = "Raito"
peso = 70
usa_linux = True
print(nome)
print(peso)
print(usa_linux)
Nome, peso e uso de Linux estão escritos no programa. Qualquer outra pessoa exigiria alterar essas linhas. A aula parte daqui para pedir os dados na execução.
A função input() e o armazenamento em variáveis
A função input() solicita uma entrada no console e devolve o que a pessoa digitou. Sem parâmetro, só abre o campo de digitação. Com um parâmetro, recebe uma string de enunciado que orienta o usuário, como Digite seu nome. O valor devolvido deve ir para uma variável; sem isso, o texto se perde e não dá para usar depois. O único lugar de digitação é a barra do console; a caixa da barra de ferramentas do editor não serve. Não existe timeout no input: o tempo exibido apenas conta desde que o campo apareceu. Para o programa continuar, é preciso digitar e pressionar Enter; sem Enter o print seguinte não aparece. Esse input do Python é para ferramentas de desenvolvimento e testes. Página de cadastro no navegador usa HTML, CSS e JavaScript, ou bibliotecas de interface gráfica, não o input do Python. A aula leu nome e sobrenome com dois inputs, concatenou as strings e imprimiu uma saudação.
input com enunciado
nome = input("Digite seu nome")
print(nome)
O parâmetro é o enunciado. O retorno vai para a variável nome e o print mostra exatamente o que foi digitado.
Nome, sobrenome e concatenação
nome = input("Digite seu nome")
sobrenome = input("Digite seu sobrenome")
print("Olá, " + nome + " " + sobrenome)
Dois inputs guardam textos. A concatenação junta as strings e forma a saudação, no estilo Olá, Raito Yagami.
O input sempre devolve string: conversão com int()
Pergunta essencial da aula: o input sempre devolve string? Sim. Não importa se a pessoa digitou número ou booleano; o retorno é texto. A função type() deixa isso visível ao mostrar que a idade chegou como str. Python não converte sozinho. A conversão é explícita: você chama int(), float() ou bool(). Sem converter, subtrair a idade de um ano para obter o ano de nascimento falha, porque não se mistura string com int. Em int(input()), há aninhamento de funções: a interna (input) resolve primeiro e o resultado vai para a externa (int). Dá para fazer on the fly em uma linha ou na versão didática, com variável intermediária como idade_texto e depois int(); a didática é mais clara para quem está começando. Python não tem tipagem estática como C#, Java ou Rust: não adianta colocar int antes do input para declarar o tipo da variável. Se não houver conta numérica, deixar o dado como string é funcional.
type() mostra que a idade é string
idade = input("Digite sua idade")
print(type(idade))
Mesmo digitando 20, type() revela str. Por isso ainda não dá para fazer conta com esse valor.
Versão didática com int() e ano de nascimento
idade_texto = input("Digite sua idade")
idade = int(idade_texto)
print(2026 - idade)
idade_texto guarda a string; int() gera o inteiro. Só então a subtração funciona. A forma oneliner equivalente seria idade = int(input(“Digite sua idade”)).
float(), replace() e erro de conversão
Peso pede casas decimais, então a conversão adequada é float(). Se a pessoa digitar só 67, o resultado vira 67.0, porque o float inclui a parte decimal. Nem sempre é melhor usar float no lugar de int: use o tipo que faz sentido para o dado. O Python usa ponto como separador decimal. Para aceitar vírgula digitada pelo usuário, o método replace() troca a vírgula por ponto na string antes de converter. int() é rígido: a string 67 funciona, mas 67.7 gera erro, assim como um texto qualquer, por exemplo uma frase sem número. Esse erro acontece em runtime, durante a execução. Sem estrutura condicional ou tratamento de erros, não há como exibir uma mensagem amigável no lugar da falha. Diferente do HTML, em que o campo pode ter tipo number, text ou password, no Python a validação de tipo é manual. O input padrão não restringe a números.
Peso com vírgula convertido para float
peso_texto = input("Digite seu peso")
peso = float(peso_texto.replace(",", "."))
print(peso)
replace() troca vírgula por ponto, que é o separador do Python. Depois float() obtém o número. Digitar 67 resulta em 67.0.
Truthy, falsy e conversão com bool()
A função bool() converte um valor para True ou False seguindo a regra de truthy e falsy, os verdadeirinhos e mentirinhos. São considerados falsos: string vazia, 0, 0.0, None e False. Todo valor que não está nessa lista é verdadeiro. Por isso a string false vira True, e um número negativo como -2 também é True. None representa ausência de valor e conta como falso. bool() não calcula maioridade sozinho: não basta converter a idade; seria necessária uma expressão de comparação. O ponto prático é gravar a lista curta de casos falsos, porque qualquer outro valor, inclusive textos não vazios, vira True. Experimentar bool() com vários valores no console ajuda a ver o comportamento, que às vezes contraria a intuição.
Experimentos de bool() com valores falsos e verdadeiros
print(bool(""))
print(bool(0))
print(bool(0.0))
print(bool(None))
print(bool(False))
print(bool("false"))
print(bool(-2))
Os cinco primeiros imprimem False. A string false e o número -2 imprimem True, porque não estão na lista de valores falsos.
Comparar textos e fechar o formulário
Quando a pergunta é de sim ou não, converter a string direto com bool() não funciona como a pessoa espera: qualquer texto não vazio é True. O caminho mostrado na aula é comparar textos com o operador ==, que verifica igualdade e devolve True ou False. Python é case sensitive: test e Test não são iguais. O método lower() transforma todos os caracteres em minúsculas, então Sim vira sim e a comparação fica estável. No fechamento, o formulário pergunta Você usa GNU/Linux?, aplica lower() e compara com sim. Qualquer entrada diferente, como batata, resulta em False; Sim vira sim e resulta em True. Nome permanece string, idade passa por int(), peso por float() e o uso de Linux vira booleano. Os quatro conceitos da aula — input, conversão numérica, truthy/falsy e comparação de texto — aparecem juntos no mesmo programa.
Formulário com nome, idade, peso e Linux
nome = input("Digite seu nome")
idade = int(input("Digite sua idade"))
peso = float(input("Digite seu peso").replace(",", "."))
usa_linux = input("Você usa GNU/Linux?").lower() == "sim"
print(nome)
print(idade)
print(peso)
print(usa_linux)
Nome fica string, idade vira int, peso vira float (aceitando vírgula) e a pergunta vira True só se, após lower(), o texto for exatamente sim.
Avisos administrativos — 1 recados sobre prazos, regras e funcionamento do curso
01:31:01A próxima aula será na sexta-feira, com mais exemplos de input. Na sequência entram operadores lógicos e estruturas condicionais.
Perguntas de aluno — 15 perguntas respondidas na gravação
O input sempre devolve uma string? (Gabriela) 00:38:15
Sim, o input sempre devolve string, não importa o que o usuário digite.
Dá para usar a caixa de input presente na barra? (Victor) 00:30:21
Não; o único lugar de digitação é a barra do console. Em navegadores antigos isso era possível, mas hoje não.
No desenvolvimento de uma página de cadastro, utilizamos esse input? (Jonathan) 00:31:14
Não; front-end é feito com HTML, CSS e JavaScript ou bibliotecas GUI. O input do Python é para ferramentas de desenvolvimento e testes.
Dá para configurar timeout no input? 00:32:50
Não há como colocar timeout no input; o tempo exibido é apenas o tempo decorrido desde que o input apareceu.
Por que sites não deixam cadastrar nome com apóstrofo? 00:33:35
Sistemas de validação normalmente consideram caracteres como apóstrofo especiais, no mesmo grupo de arroba e exclamação, e bloqueiam.
O meu fica executando e não aparece o print 00:34:36 · chat 00:29:43
Para enviar, é preciso digitar o valor e pressionar Enter.
Posso colocar int antes do input para dizer que a variável é int? (Natália) 00:51:43
Não; Python não tem tipagem estática. É preciso converter explicitamente o valor com int().
É funcional sem o uso do int? (Antônio) 00:53:30 · chat 00:50:34
é funcional sem o uso de "int"?
nome_completo = input("nome:")
cidade_atual = input("cidade:")
data_nascimento = input("data de nascimento:")
print(
"...",
nome_completo,
"...",
cidade_atual,
"...",
data_nascimento,
"..." + "."
)
Sim, se você não precisa fazer operações numéricas com esses dados, pode tratá-los como strings.
No bool, se colocar se ele é maior ou menor de idade, ele faz as contas? 00:59:31
Não; você precisa de uma expressão de comparação (ex.: >= 18). Isso será visto com operadores lógicos na semana que vem.
Dá para mostrar mensagem de erro sem estrutura condicional? (Felipe) 01:00:25
Não; sem condicional ou tratamento de erros não é possível exibir uma mensagem adequada.
semana q vem ent já tem IF? 01:04:16 · chat 01:02:02
Sim, o plano prevê estruturas condicionais na semana que vem.
E se o usuário digitar só 67? 01:07:20 · chat 01:07:06
Sim, vira 67.0, pois float considera a parte decimal.
Seguindo a pergunta do Guilherme, não é melhor sempre usar float? 01:07:56 · chat 01:07:49
Não necessariamente; use o tipo que faz sentido para o dado. Float faz o que int faz, mas nem sempre é adequado.
Só consigo usar input int/input num com biblioteca externa? (Antônio) 01:09:51
Sim, o Python padrão não tem input restrito a números; é preciso biblioteca externa ou conversão manual.
Como você só declarou o lower como sim, qualquer coisa diferente de sim vai dar falso? (Dani) 01:28:42
Exatamente; qualquer entrada que, após lower(), não for igual a ‘sim’ resulta em False.
Trechos que valem reouvir — 5 momentos que mais rendem uma segunda escuta
00:45:02— Explicação passo a passo do aninhamento int(input()), mostrando como o Python resolve de dentro para fora — essencial para entender conversões.00:43:48— Erro ao subtrair string de int; mostra na prática por que é preciso converter.01:11:41— Experimentos de bool() com diversos valores; comportamento contra-intuitivo de truthy/falsy.01:05:57— Uso de replace() para aceitar vírgula como separador decimal em float.01:24:27— Montagem da pergunta ‘usa Linux’ combinando input, lower() e ==; exemplo completo de conversão para booleano.