Aulas do bloco

← Aulas

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

  1. Etiqueta com input(), float() e moldura com *

    00:06:59

    input() lê nome e preco como string, então float() converte o preço para calcular desconto. .title() deixa o nome com inicial maiúscula para apresentar. = repetido com * e len() faz a moldura do tamanho da linha, e vale alinhar com a primeira ou com a segunda linha, com preferência pela do nome.

    Python
    nome = "camisa polo".title()
    linha = "camisa polo - 49.9"
    print("=" * len(linha))
    print(linha)

    Saída

    ==================
    camisa polo - 49.9
  2. Cor com # e pares R, G e B em hexadecimal

    00:35:21

    Hexadecimal 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.

    Python
    preto = "#000000"
    branco = "#FFFFFF"
    vermelho = "#FF0000"
    print(preto, branco, vermelho)

    Saída

    #000000 #FFFFFF #FF0000
  3. Trocar + por f-string com {}

    00:52:31

    # mais R, G e B com + funciona, mas enche de + e aspas e fica difícil de ler. f-string começa com f e coloca a variável direto entre {}, como em f"#{R}{G}{B}". A aula pede para priorizar sempre f-string e usar + só com motivo.

    Python
    R = "1A"
    G = "2B"
    B = "3C"
    cor1 = "#" + R + G + B
    cor2 = f"#{R}{G}{B}"
    print(cor1)
    print(cor2)

    Saída

    #1A2B3C
    #1A2B3C
  4. Validar canais com len() e if/elif/else

    00:56:31

    len() verifica se R, G e B têm exatamente 2 caracteres. if/elif/else testa um canal por vez para dizer qual falhou, enquanto and testa 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.

    Python
    R = "A"
    if len(R) != 2:
        print("canal R invalido")
    else:
        print("canal R ok")

    Saída

    canal R invalido
  5. Identificar empresa com match/case e |

    01:05:12

    match compara a cor pronta com várias possibilidades para decidir a empresa, e case _ cobre a cor desconhecida. | funciona como or dentro do case para 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 como FG ainda teria o tamanho aceito, apesar do G fora dos símbolos hexadecimais.

    Python
    cor = "#FF0000"
    match cor:
        case "#FF0000" | "#ff0000":
            print("vermelha")
        case _:
            print("desconhecida")

    Saída

    vermelha
  6. Contar vogais com .count() e .lower()

    01:26:28

    .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 de for, resolve só com .count(), .lower() e regra de três para porcentagem. Pode usar nos TPs recurso ainda não visto sem penalidade.

    Python
    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

9 exercíciosComeçar →