Listas

E se você quiser guardar uma lista das mesmas coisas, como os seus seriados preferidos? Você poderia criar uma variável pra cada um.

seriado1 = "The Crown"
seriado2 = "Bojack Horseman"
seriado3 = "Explicando"

Conforme a lista for crescendo, vai ser difícil gerenciar todas as variáveis, já que elas estão separadas. Com o Python você pode criar suas próprias listas:

seriados = ["The Crown", "Bojack Horseman", "Explicando"]
print(seriados)
['The Crown', 'Bojack Horseman', 'Explicando']

Você pode também criar listas combinando tipos diferentes:

notas = [10, 8.9, 7.5, 9.2]  # inteiros e decimais

Exercício

Crie listas com:

  • Coisas que você adora fazer em sua cidade
  • Coisas que você não gosta em sua cidade
  • O que você mais curte fazer na internet

PS.: a essa altura do campeonato você já deve ter notado umas hashtags rolando por aí. Elas são chamadas de comentários. O conteúdo delas será ignorado pelo Python e você pode escrever o que você quiser. É importante para documentar o que você está fazendo ou pontos que queira explicar para o seu eu do futuro ou para o seu time.

# eu sou um comentário

Comentários podem ter também múltiplas linhas:

"""
Muitas
Linhas
Aqui
"""

Projeto: Pedra, papel eeee tesoooura!

Quem nunca brincou de pedra, papel e tesoura, não é mesmo? :) Mas e se você jogasse contra o computador. Como seria? Nesse projeto criamos um joguinho para jogar esse jogo contra o computador e no final mostrar quantos pontos ele ou você acumularam.

"""
Regras:

- Pedra ganha de Tesoura
- Tesoura ganha de Papel
- Papel ganha de Pedra
"""
import random


opcoes = ["pedra", "papel", "tesoura"]

pontos_do_computador = 0
pontos_do_humano = 0

print("Pedra, papel e tesoura\n\n")
jogada_do_humano = ""

while jogada_do_humano.lower() != "sair":
    jogada_do_humano = input("Qual a sua jogada?")
    if jogada_do_humano in opcoes:
        jogada_do_computador = random.choice(opcoes)
        print(f"Computador jogou: {jogada_do_computador}\n")

        # pedra ganha de tesoura
        if jogada_do_humano == "pedra" and jogada_do_computador == "tesoura":
            print("\o/ humano ganhou!")
            pontos_do_humano = pontos_do_humano + 1
        elif jogada_do_computador == "pedra" and jogada_do_humano == "tesoura":
            print(":/ computador ganhou!")
            pontos_do_computador = pontos_do_computador + 1
        
        # tesoura ganha de papel
        if jogada_do_humano == "tesoura" and jogada_do_computador == "papel":
            print("\o/ humano ganhou!")
            pontos_do_humano = pontos_do_humano + 1
        elif jogada_do_computador == "tesoura" and jogada_do_humano == "papel":
            print(":/ computador ganhou!")
            pontos_do_computador = pontos_do_computador + 1

        # papel ganha de pedra        
        if jogada_do_humano == "papel" and jogada_do_computador == "pedra":
            print("\o/ humano ganhou!")
            pontos_do_humano = pontos_do_humano + 1
        elif jogada_do_computador == "papel" and jogada_do_humano == "pedra":
            print(":/ computador ganhou!")
            pontos_do_computador = pontos_do_computador + 1

        print(f"\n\nHumano {pontos_do_humano} x {pontos_do_computador} Computador")
    elif jogada_do_humano.lower() != "sair":
        print(f"Escolha uma das opções: {opcoes}")

Pedra, papel e tesoura


Qual a sua jogada?pedra
Computador jogou: pedra



Humano 0 x 0 Computador
Qual a sua jogada?papel
Computador jogou: pedra

\o/ humano ganhou!


Humano 1 x 0 Computador
Qual a sua jogada?tesoura
Computador jogou: tesoura



Humano 1 x 0 Computador
Qual a sua jogada?tesoura
Computador jogou: papel

\o/ humano ganhou!


Humano 2 x 0 Computador
Qual a sua jogada?pedra
Computador jogou: tesoura

\o/ humano ganhou!


Humano 3 x 0 Computador
Qual a sua jogada?pedra
Computador jogou: papel

:/ computador ganhou!


Humano 3 x 1 Computador
Qual a sua jogada?sair

Mais ação com listas

Dá pra fazer bastante coisas com listas. Elas são uma estrutura de dados poderosa!

Vamos ver como:

  • adicionar
  • remover
  • buscar
  • ordenar

Elementos em uma lista!

# primeiro, vamos ver o que tem nessa lista:

print('--- O que tem na lista:')
print(seriados)

# adicionando itens a uma lista que já existe

print('--- Novo item:')
seriados.append('Irmandade')
print(seriados)

# acessando itens em uma lista

print('--- Primeiro item da lista:')
print(seriados[0])  # o primeiro item da lista - isso mesmo, Python começa a contar do zero!

### Encontrando um item em uma lista

print('--- Onde está The Crown?')
onde_esta_esse_seriado = seriados.index('The Crown')  # O Python vai te dizer em que posição o que você busca está
print(onde_esta_esse_seriado)
print(seriados[onde_esta_esse_seriado])

### Ordenando uma lista

print('--- Seriados ordenados:')
seriados = sorted(seriados)  # substituímos a lista desordenada pela ordenada
print(seriados)

### Deletando um item de uma lista

print('--- Deletamos o primeiro e o último da lista')
seriados.pop(0)  # deleta o primeiro da lista
seriados.pop(0)  # deleta o útil da lista
print(seriados)
--- O que tem na lista:
['The Crown', 'Bojack Horseman', 'Explicando']
--- Novo item:
['The Crown', 'Bojack Horseman', 'Explicando', 'Irmandade']
--- Primeiro item da lista:
The Crown
--- Onde está The Crown?
0
The Crown
--- Seriados ordenados:
['Bojack Horseman', 'Explicando', 'Irmandade', 'The Crown']
--- Deletamos o primeiro e o último da lista
['Irmandade', 'The Crown']

Estruturas de repetição (ou laços/loops)

Nós podemos mostrar os itens da lista um por um sem precisar acessar os índices (a posição) de cada um utilizando laços.

O primeiro laço que vamos ver é o for.

canais_do_youtube = ['Meteoro Brasil', 'Nerdologia', 'Se liga nessa história', 'Porta dos Fundos']

# significa para UM canal NA lista de canais do youtube que eu gosto
for canal in canais_do_youtube:
    print(canal)

Meteoro Brasil
Nerdologia
Se liga nessa história
Porta dos Fundos

O for itera sob uma sequência. O que significa isso? Significa que ele vai passar item por item de uma sequência. A sequência que estamos utilizando agora é uma lista.

Uma outra estrutura de laço é o while, que continuará executando até que uma condição seja falsa.

numero_desejado = 10
contador = 0

while contador != numero_desejado:
    contador = contador + 1
    print(contador)

1
2
3
4
5
6
7
8
9
10

ATENÇÃO: cuidado com o while. Sem querer você pode acabar criando um loop infinito, que nada mais é que um loop que não acaba mais.

while True:
    print('Eu vou executar pra sempre')

Veja os códigos dessa lição aqui.