Aulas do bloco

← Aulas

PythonAula 1611/09/20261h41

For, range e DudaBet: jogo de adivinhação

Retoma for sobre lista e string, while com break e continue e validação com .isdigit() das aulas de repetição e listas. Destrava range() para repetir N vezes, random com randint() e random() e o jogo DudaBet com ganhos, desconto e memória com lista. TP3 foi prorrogado para o dia 16 de setembro e AT para o dia 27 de setembro.

O que foi falado

  1. for percorre lista e string item a item

    00:11:50

    Um iterável é qualquer coisa da qual dá para pegar um item por vez. Por isso for nome in ["Ana", "Bia"] passa por cada elemento e for letra in "oi" passa por cada caractere. Não precisa de contador nem índice para isso.

    Python
    for letra in "duo":
        print(letra)

    Saída

    d
    u
    o
  2. String imutável trava, lista mutável troca

    00:14:12

    Dá para ler texto[0] e idades[0], a posição 0 é o primeiro item. Tentar texto[0] = "X" dá erro porque string não muda depois de criada, tem que criar outra nova. Já idades[0] = 11 funciona porque lista deixa trocar o conteúdo por índice.

    Python
    idades = [10, 20]
    idades[0] = 11
    print(idades)

    Saída

    [11, 20]
  3. import random com randint() e random()

    00:19:09

    Funções embutidas, como print() e input(), ficam disponíveis sem importação. Para acessar o módulo random pelo nome, a aula usa import random. random.randint(1, 10) sorteia um inteiro incluindo os extremos; random.random() devolve um float maior ou igual a 0 e menor que 1.

    Python
    import random
    print(random.randint(1, 10))
    print(random.random())
  4. DudaBet com while True, break e validação

    00:53:20

    O jogo usa while True para ficar pedindo palpite até sair com break quando acerta. Se palpite_str.isdigit() é False mostra aviso e dá continue para nem tentar converter para int(). Se o número está fora de 1 a 10 também mostra aviso e dá continue, só número válido entra na conta.

    Python
    while True:
        print("tenta")
        break

    Saída

    tenta
  5. Lembrar palpites com lista, .append() e in

    01:07:50

    Aposta inicial vale ganhos de 10 vezes, a cada erro faz ganhos = ganhos - desconto tirando 25% do valor inicial e podendo ficar negativo. Para não repetir erro, guarda tudo em tentativas = []. tentativas.append(palpite) adiciona no final e if palpite in tentativas devolve True ou False para barrar repetido antes de descontar.

    Python
    tentativas = []
    tentativas.append(3)
    print(3 in tentativas)

    Saída

    True
  6. range() com for para 5 tentativas

    01:27:01

    range(1, 6) fornece os inteiros de 1 a 5: inclui o início e exclui o limite final. Por isso for i in range(1, 6) permite numerar cinco tentativas. O terceiro argumento é o passo: range(10, 21, 3) fornece 10, 13, 16 e 19; o próximo valor seria 22, que ultrapassa o limite. range() usa argumentos inteiros, não float. Uma flag ganhou = False vira True no acerto para decidir a mensagem depois do laço.

    Python
    for i in range(1, 6):
        print(i)

    Saída

    1
    2
    3
    4
    5

Perguntas que valem a pena

Por que random precisa de import?00:24:04

random é um módulo da biblioteca padrão e precisa ser importado para ser acessado por esse nome. print() e input() são funções embutidas, disponíveis sem essa importação.

Existe range() com número decimal?01:06:19

range() não aceita float como argumento. A aula também mostra random.random() * 10 para sortear um decimal de 0, inclusive, até 10, exclusivo; isso é um sorteio, não uma sequência de passos decimais.

if palpite in tentativas percorre a lista sozinho?01:12:05

Sim, Python itera nos bastidores e devolve True ou False se o número já está lá.

Por que randint() inclui o 10 e range() exclui?01:25:46

Foi escolha de implementação, na opinião da aula range() deveria incluir o fim, mas foi feito assim.

O que significa o 3 em range(10, 21, 3)?01:27:20

É o passo: soma 3 a cada valor, produzindo 10, 13, 16 e 19. O próximo seria 22, que ultrapassa o limite final 21.

Conceitos da aula

  • for
  • iterável
  • while
  • break
  • continue
  • lista
  • in
  • range()
  • random.randint()
  • append()
  • flag
  • validação de entrada

Reforce este assunto

10 exercíciosComeçar →