No Python, existem inúmeras formas de fazer a mesma coisa, no caso de cores, existe a possibilidade de usar módulos, mas isso não será usado no exemplo.
O padrão ANSI tem as chamadas sequências de escape (como o \n
pra pular linha), e isso é intepretado pelo terminal, muito usado em várias linguagens além do Python, como o Java e o C.
Para usar as sequências para cores, usaremos algo tipo \033[0;33;44m
(o 033 é a faixa de código, o 0 é o estilo de fonte, o 33 é a cor da letra e o 44 a cor do fundo, mas não precisa seguir essa ordem por cada coisa ter sua faixa de letras). Nesse exemplo, trabalhemos com poucas cores, mas já é o suficiente por enquanto. Esse exemplo tem poucas cores, e não é utilizado valores como RGB ou hexadecimal nesse exemplo.
Esses são as formatações que podemos utilizar nesse caso:
Código | Significado |
---|---|
0 | None |
1 | Negrito |
4 | Sublinhado |
7 | Negativo |
Código | Significado |
---|---|
30 | Branco |
31 | Vermelho |
32 | Verde |
33 | Amarelo |
34 | Azul |
35 | Magenta |
36 | Ciano |
37 | Cinza |
Código | Significado |
---|---|
40 | Branco |
41 | Vermelho |
42 | Verde |
43 | Amarelo |
44 | Azul |
45 | Magenta |
46 | Ciano |
47 | Cinza |
Alguns exemplos:
Exemplo | Código |
---|---|
Teste | \033[0;30;41m |
Teste | \033[4;33;44m |
Teste | \033[1;35;43m |
Teste | \033[30;42m |
Teste | \033[m |
Teste | \033[7;30m |
PS: Nas duas últimas, o branco com fundo preto retorna pro padrão do terminal, e no preto com fundo branco, invertemos as cores e mostramos letras brancas (geralmente essa forma de inversão é usada quando precisamos usar letras pretas).
Nesse exemplo ele retorna uma letra em vermelho:
print("\033[31mOlá, Mundo")
PS: Para funcionar também no prompt do Windows, coloque essas linhas antes de tudo:
from colorama import init
init()
E nesse caso, tem também o fundo amarelo:
print("\033[31;43mOlá, Mundo")
Exemplo com negrito, e no qual o fundo não vai até o final da linha (por resetar as configurações após a mensagem):
print("\033[1;31;43mOlá, Mundo\033[m")
Outro exemplo, com letra branca e fundo rosa:
print("\033[4;30;45mOlá, Mundo\033[m")
Com inversões de cores:
print("\033[7;30mOlá, Mundo\033[m")
E podemos inverter outras cores, nesse caso, invertemos a cor amarela e azul :
print("\033[7;33;44mOlá, Mundo\033[m")
Outro exemplo com operadores e máscaras:
a = 3
b = 5
print("Os valores são \033[32m{}\033[m e \033[31m{}\033[m.".format(a, b))
Podemos utilizar as formatações nas máscaras também:
nome = "Teste"
print("Olá! Muito prazer em te conhecer, {}{}{}!".format("\033[4;34m", nome, "\033[m"))
Ou usando uma variável composta (dicionário):
nome = "Teste"
cores = {"limpa": "\033[m", "azul": "\033[34m", "amarelo": "\033[33m", "negativo": "\033[7;30m"}
print("Olá! Muito prazer em te conhecer, {}{}{}!".format(cores["negativo"], nome, cores["limpa"]))
Quando algo é aninhado, é como se tivesse uma dentro da outra (como as matrioskas, aquelas bonecas russas que uma fica dentro da outra), no caso, isso é com as condições, que uma é dentro da outra. Isso é útil para criar mais de duas opções.
Muitas vezes na programação, é necessário escolher entre mais de dois caminhos, nem sempre o mais "fácil".
Também dá pra usar, além do if
e do else
, o elif
(igual ao else if em outras linguagens).
PS: Quando usa o if, o elif e mesmo o else são opcionais, apenas o if é obrigatório nesse caso. Podemos ter quantos elif quisermos.
Veja um exemplo de uso prático:
nome = str(input("Qual é o seu nome? "))
if nome == "Bruce":
print("Você é o Batman!")
elif nome == "Clark" or nome == "Kal":
print("Você é o Superman!")
else:
print("Você não é o Batman nem o Superman!")
print("Bom dia, {}.".format(nome))
Podemos criar mais de um elif:
nome = str(input("Qual é o seu nome? "))
if nome == "Bruce":
print("Você é o Batman!")
elif nome == "Clark" or nome == "Kal":
print("Você é o Superman!")
elif nome in "Diana Barry Hal":
print("Você pertence à Liga da Justiça!")
else:
print("Você não é da Liga!")
print("Bom dia, {}.".format(nome))
PS: O in
procura uma palavra qualquer dentro das aspas.
Vamos supor um personagem de videogame que precise passar por várias plataformas até pegar um objeto (uma maçã, por exemplo), enquanto ele não conseguir pegar a maçã, ele vai continuar andando, quando conseguir ele para. Mas e se forem muitos passos até chegar ao local, ficaria complicado postar várias vezes o mesmo comando, pra isso usamos os laços de repetição. Para isso, ele terá um delimitador para parar o laço num determinado ponto (que no caso, seria no momento que ele pegaria a maçã), que será a variável de controle. Na mesma situação, teríamos que pegar moedas em alguns trechos, no qual nós colocamos um condicional if dentro do laço.
Vamos supor que nesse mesmo "chão" tenha buracos no lugar de algumas plataformas, nesse caso, teria o passo e o pulo 3 vezes, ao encerrar o laço, teria o anda e o pega.
No caso, usaremos a estrutura for (para), que usa um range (intervalo) para funcionar. É usada para construir estruturas de loop nos casos que se conhecem de antemão o número de repetições que devem ser realizadas.
Veja um exemplo simples de uso:
for c in range(1, 6):
print("Oi")
Como visto no caso acima, a contagem vai de 1 até 5, no 6 ele para (seria o equivalente à c = 1; c < 6; c++
em outras linguagens). Mas no caso acima, pra entendermos melhor, começamos a contagem do 0 até o limite:
for c in range(0, 5):
print("Oi")
PS: Não esqueça da tabulação, ela é necessária pro comando entrar no laço.
Se for necessário fazer uma contagem de outro limite (por exemplo, de 3 até 9), colocamos um número a mais porque o último é ignorado:
for c in range(3, 10):
print(c)
Ou podemos fazer assim:
for c in range(3, 9 + 1):
print(c)
Se quiser fazer a contagem de trás pra frente, colocamos o decremento assim, da mesma forma (no caso, de 6 à 1):
for c in range(6, 0, -1):
print(c)
Da mesma forma, podemos criar outros passos como incremento e decremento no terceiro número.
for c in range(0, 7, 2):
print(c)
print("\nFIM")
Veja um exemplo de uso, o qual escolheremos o limite da contagem:
n = int(input("Digite um número: "))
for c in range(0, n + 1):
print(c)
print("\nFIM")
Veja um exemplo mais complexo:
i = int(input("Início: "))
f = int(input("Fim: "))
p = int(input("Passo: "))
for c in range(i, f + 1, p):
print(c)
print("\nFIM")
Outro exemplo:
s = 0
for c in range(0, 3):
n = int(input("Digite o valor: "))
s += n
print("O somatório de todos os valores é {}.".format(s))