PythonAula 1301/09/20261h31
Cores hexadecimais, f-strings, if-else e match-case
Retoma if/elif/else e match/case com input(), len(), .lower() e .count() para decidir e validar texto. Destrava cor hexadecimal com # mais pares R, G e B e f-string com {} no lugar de + para montar texto, além de validação que diz qual canal falhou e identificação da empresa com | no case. TP2 ficou para o dia 9 de setembro e TP3 para o dia 13 de setembro, e as próximas três aulas começam repetição com while e for.
O que foi falado
Etiqueta com
00:06:59input(),float()e moldura com*input()lênomeeprecocomostring, entãofloat()converte o preço para calcular desconto..title()deixa o nome com inicial maiúscula para apresentar.=repetido com*elen()faz a moldura do tamanho da linha, e vale alinhar com a primeira ou com a segunda linha, com preferência pela do nome.nome = "camisa polo".title() linha = "camisa polo - 49.9" print("=" * len(linha)) print(linha)Saída
================== camisa polo - 49.9
Cor com
00:35:21#e paresR,GeBem hexadecimalHexadecimal usa 16 símbolos, de 0 a 9 e de A a F. A vale 10 e F vale 15. No formato RGB hexadecimal usado nesta aula, a cor começa com # e contém três pares na ordem R, G e B: #000000 é preto, #FFFFFF é branco e #FF0000 usa o vermelho no máximo. Cada par fornece dois dígitos para o canal.
preto = "#000000" branco = "#FFFFFF" vermelho = "#FF0000" print(preto, branco, vermelho)Saída
#000000 #FFFFFF #FF0000
Trocar
00:52:31+porf-stringcom{}#maisR,GeBcom+funciona, mas enche de+e aspas e fica difícil de ler.f-stringcomeça comfe coloca a variável direto entre{}, como emf"#{R}{G}{B}". A aula pede para priorizar sempref-stringe usar+só com motivo.R = "1A" G = "2B" B = "3C" cor1 = "#" + R + G + B cor2 = f"#{R}{G}{B}" print(cor1) print(cor2)Saída
#1A2B3C #1A2B3C
Validar canais com
00:56:31len()eif/elif/elselen()verifica seR,GeBtêm exatamente 2 caracteres.if/elif/elsetesta um canal por vez para dizer qual falhou, enquantoandtesta tudo de uma vez com menos código mas sem dizer onde errou. Perguntar com==é mais fácil de ler que com!=, e.lower()aceita maiúscula e minúscula.R = "A" if len(R) != 2: print("canal R invalido") else: print("canal R ok")Saída
canal R invalido
Identificar empresa com
01:05:12match/casee|matchcompara a cor pronta com várias possibilidades para decidir a empresa, ecase _cobre a cor desconhecida.|funciona comoordentro docasepara aceitar maiúscula e minúscula, como em"#FF0000" | "#ff0000". O código ainda não valida letra fora do hexadecimal, então um canal comoFGainda teria o tamanho aceito, apesar doGfora dos símbolos hexadecimais.cor = "#FF0000" match cor: case "#FF0000" | "#ff0000": print("vermelha") case _: print("desconhecida")Saída
vermelha
Contar vogais com
01:26:28.count()e.lower().count()conta quantas vezes uma letra aparece, e com.lower()antes a contagem ignora maiúscula e minúscula. A questão 15 não precisa defor, resolve só com.count(),.lower()e regra de três para porcentagem. Pode usar nos TPs recurso ainda não visto sem penalidade.texto = "Ola Mundo" total_a = texto.lower().count("a") print(total_a)Saída
1
Perguntas que valem a pena
No exercício 14, segue o enunciado ou o exemplo da moldura?00:05:50
Pode fazer das duas formas pela ambiguidade, com preferência por alinhar com o nome, que tende a ser maior.
Por que cada cor usa dois dígitos?00:37:17
Para ter mais controle, o primeiro dígito é ajuste grosso e o segundo é fino.
Quando usar f-string e quando usar +?00:55:21
Priorize sempre f-string. Use + só com motivo, pois é mais simples e convencional.
Não daria para validar tudo com and?00:59:34
Sim, valida tudo de vez com menos código e pergunta positiva, mas perde qual canal falhou.
Dá para usar or no case?01:11:16
Sim, com | para aceitar, por exemplo, versão maiúscula ou minúscula.
A questão 15 precisa de for para contar vogais?01:25:17
Não, resolve com .count() mais .lower() para ignorar caixa e regra de três para porcentagem.
Conceitos da aula
- input()
- f-strings
- concatenação
- if/else
- elif
- match-case
- case _
- len()
- lower()
- count()
- cor hexadecimal
- canais RGB
Reforce este assunto
- Strings, input e conversõesPython · trilha, etapa 4
- Strings: representação e operaçõesPython · trilha, etapa 3
- Seleção com `if`, `else` e operadores lógicosPython · trilha, etapa 5