Guia de estudo
1. Relembrando input, conversão e tipagem rígida
Tudo começa com a entrada do usuário. O comando input() sempre entrega uma string, mesmo que o usuário digite 18 ou 1.75. Por isso, se você precisa fazer conta ou comparar como número, deve converter explicitamente.
altura = input("Digite sua altura: ")
print(type(altura)) # sempre <class 'str'>
altura_num = float(altura)
print("Sua altura é " + str(altura_num))
Se tentar print("Sua altura é " + altura_num) sem converter, o Python dá erro. Isso mostra a rigidez de tipos: ele não converte automaticamente como JavaScript faz. Para inteiro use int(), para decimal float(), para voltar a texto str(). bool() existe, mas não serve para converter entrada do usuário. Essa conversão é a ponte entre o que o usuário digita e o que o programa consegue processar numericamente.
Conversão correta para concatenação
altura = input("Digite sua altura: ")
altura_num = float(altura)
print("Sua altura é " + str(altura_num))
Converte string do input para float e depois para string novamente para concatenar.
Comparação entre tipos diferentes
print("10" == 10)
print("10" == "10")
String ‘10’ é de tipo diferente de inteiro 10, por isso a primeira comparação dá False.
2. Por que sair do programa linear
Até aqui o programa era linear: executa de cima para baixo, sem desvios. Isso serve para ler, converter e mostrar, mas não para decidir. Se queremos liberar acesso apenas para maiores de idade ou só para quem acerta uma senha, precisamos de um desvio.
É para isso que serve a estrutura condicional. Ela faz uma pergunta cuja resposta é sempre um booleano (True ou False) e escolhe qual bloco executar. Outras formas existem (switch case, match case, ternário), mas nesta aula o foco foi if/else. Entender o programa linear ajuda a perceber o motivo do if: sem ele, não há escolha, só sequência.
3. Operadores de comparação e o tipo booleano
Operadores de comparação transformam dois valores em True ou False:
>maior que<menor que>=maior ou igual<=menor ou igual==igualdade (não confundir com=que é atribuição)!=diferente
A aula demonstrou com duas variáveis A e B:
A = 10
B = 5
print(A > B) # True
print(A < B) # False
print(A >= 10) # True
print(A == B) # False
print(A != B) # True
Para strings, a aula destacou que apenas == e != são usados diretamente. Um ponto importante: comparar "10" == 10 devolve False porque são tipos diferentes. A comparação não valida se o valor faz sentido (por exemplo, idade 200 ainda é >= 18), ela só responde à pergunta que você fez. Essa resposta booleana é o que alimenta o if.
Operadores com A e B
A = 10
B = 5
print(A > B)
print(A == B)
print(A != B)
Demonstração dos operadores com variáveis A e B, todos devolvem booleano.
4. Sintaxe do if/else: dois pontos e indentação
A sintaxe do if/else em Python tem duas marcas obrigatórias: dois pontos : no final da condição, que funcionam como um “então”, e indentação para indicar o bloco.
idade = int(input("Digite sua idade: "))
if idade >= 18:
print("Acesso liberado")
else:
print("Acesso negado")
Se a condição for True, entra no primeiro bloco; se False, vai para o else. A indentação geralmente é de 4 espaços, mas pode ser tab, desde que seja consistente no arquivo. No ambiente DeepNote, tabs são convertidos para espaços.
Repare que o if não valida nada sozinho. idade >= 18 só pergunta se é maior ou igual a 18. Cabe a você escrever a pergunta certa. Essa ideia de “pergunta vs validação” aparece em todos os exemplos seguintes.
Validação de idade
idade = int(input("Digite sua idade: "))
if idade >= 18:
print("Acesso liberado")
else:
print("Acesso negado")
Primeiro exemplo da aula: desvia o fluxo dependendo da comparação da idade.
5. Strings na prática: len() e count()
Quando o dado é texto, precisamos de outras ferramentas. A aula usou len() e count().
len() devolve a quantidade de caracteres, contando espaços:
print(len("teste")) # 5
print(len("")) # 0 - string vazia
print(len(" ")) # 3 - três espaços contam
Com isso dá para validar nome:
nome = input("Digite seu nome: ")
if len(nome) == 0:
print("Nome vazio, invalido")
else:
print("Ola, " + nome)
count() conta quantas vezes uma sequência aparece:
senha = "aaa@@@bbb"
print(senha.count("@")) # 3
print(senha.count("ab")) # 0 ou mais, depende da sequência
Dois exemplos com strings mostraram a conexão com if/else. Primeiro, acesso a fórum anônimo com senha exata:
segredo = input("Digite a senha: ")
if segredo == "the_game":
print("Acesso liberado")
else:
print("Senha incorreta")
Segundo, validação de senha que exige pelo menos três arrobas:
senha = input("Digite sua senha: ")
if senha.count("@") >= 3:
print("Senha valida")
else:
print("Precisa de pelo menos 3 arrobas")
Note como len e count transformam características do texto em números, que então podem ser comparados e usados no if.
Senha do fórum
segredo = input("Digite a senha: ")
if segredo == "the_game":
print("Acesso liberado")
else:
print("Senha incorreta")
Comparação de strings com == para liberar acesso.
Validação com count
senha = input("Digite sua senha: ")
if senha.count("@") >= 3:
print("Senha valida")
else:
print("Precisa de pelo menos 3 arrobas")
Usa count para exigir mínimo de caracteres especiais.
6. Combinando condições com and, or e parênteses
Perguntas simples resolvem um caso, mas e se a regra for “precisa ter 3 arrobas E 2 hashtags”? Ou “aceita 1 OU 2 caracteres especiais”? Para isso usamos operadores lógicos.
andexige que todas as condições sejam Trueorexige que pelo menos uma seja True- parênteses agrupam e definem prioridade
A aula combinou count() com and e or:
senha = input("Digite sua senha: ")
if senha.count("@") >= 3 and senha.count("#") >= 2:
print("Senha valida: tem arrobas e hashtags suficientes")
else:
print("Senha invalida")
Se a regra fosse “um ou dois” de um tipo, usamos or:
senha = input("Digite sua senha: ")
if senha.count("@") == 1 or senha.count("@") == 2:
print("Quantidade aceita")
else:
print("Quantidade nao aceita")
Com parênteses, a leitura fica clara quando há várias condições:
senha = input("Digite sua senha: ")
if (senha.count("@") >= 3) and (senha.count("#") >= 2):
print("Valida")
Um erro comum destacado foi tentar usar vírgula no lugar de and — a vírgula não é operador lógico e não funciona. O if/else sempre decide sobre True/False, mesmo quando a pergunta é composta; o resultado final da expressão com and/or ainda é um único booleano. Esses combinadores são os que mais geram erro e serão base para a continuação com elif na próxima aula.
Condição com and
senha = input("Digite sua senha: ")
if senha.count("@") >= 3 and senha.count("#") >= 2:
print("Senha valida")
else:
print("Senha invalida")
Combina duas exigências com and; ambas precisam ser verdadeiras.
Condição com or
senha = input("Digite sua senha: ")
if senha.count("@") == 1 or senha.count("@") == 2:
print("Quantidade aceita")
else:
print("Quantidade nao aceita")
Usa or para aceitar uma entre duas possibilidades.
Avisos administrativos — 5 recados sobre prazos, regras e funcionamento do curso
01:31:38TP2 já está disponível; semana que vem a aula vai falar sobre ele.00:06:24Conteúdo de estruturas condicionais começou hoje (antecipado) e continua na semana que vem.01:34:27Dever de casa: instalar Linux (brincadeira) — ‘vou cobrar na semana que vem’.01:20:05Elif será visto na semana que vem.01:10:08Webinar do INFNET sobre fóruns anônimos (link compartilhado).
Perguntas de aluno — 10 perguntas respondidas na gravação
Francisco: e se a gente perguntar se a string ‘10’ é igual ao número 10? 00:33:35
Devolve False, pois o Python compara tipos diferentes e eles não são iguais.
São quatro espaços ou você usou o tab? 00:49:01 · chat 00:48:55
Tanto faz, desde que a indentação seja consistente; no DeepNote, tabs são convertidos para espaços.
Francisco: como acessar a Dark Web? 01:09:35
Se você precisa perguntar como acessar, você não deveria acessar.
o if/else só compara true e false? 01:17:28 · chat 01:17:24
Sim, if else toma decisões baseadas em true ou false; a pergunta pode ser complexa, mas a resposta é sempre booleana.
Vinícius: como ficaria o código com mais de uma condição (ex.: três arrobas e dois hashtags)? 01:25:16
Usa o operador lógico and para combinar as condições.
E no caso de por exemplo ‘sua senha precisa ter ao menos 1 ou 2 caracteres especiais ’ ? Seria com and também ? 01:28:32 · chat 01:28:21
Se for ‘um ou dois’, usa o operador lógico or.
em vez do ‘and’ podia coloca a virgula? 01:30:01 · chat 01:28:40
Não, a vírgula não é operador lógico; tem que usar and.
Python tem ponteiros? 01:19:55 · chat 01:19:45
Não da forma que o C tem; mas teoricamente toda linguagem tem, de alguma forma.
Ruby on Rails 00:41:02 · chat 00:40:23
Vale, é uma linguagem consolidada.
Mas não conseguimos usar Python para a área de investimento? 00:42:37 · chat 00:42:12
Sim, Python e R são linguagens para análise econômica.
Trechos que valem reouvir — 5 momentos que mais rendem uma segunda escuta
00:24:39— Base dos operadores de comparação; essencial para entender o comportamento de true/false.00:46:28— Estrutura if/else com indentação; é o núcleo da aula.01:28:54— Combinação de and/or com parênteses; trecho mais fácil de errar e importante para a próxima aula.00:13:10— Erro de concatenação de string com número; mostra a rigidez de tipos do Python.00:33:40— Comparação entre string ‘10’ e inteiro 10; reforça a diferença entre tipos e como o Python responde.