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
00:11:50forpercorre lista e string item a itemUm iterável é qualquer coisa da qual dá para pegar um item por vez. Por isso
for nome in ["Ana", "Bia"]passa por cada elemento efor letra in "oi"passa por cada caractere. Não precisa de contador nem índice para isso.for letra in "duo": print(letra)Saída
d u o
String imutável trava, lista mutável troca
00:14:12Dá para ler
texto[0]eidades[0], a posição 0 é o primeiro item. Tentartexto[0] = "X"dá erro porque string não muda depois de criada, tem que criar outra nova. Jáidades[0] = 11funciona porque lista deixa trocar o conteúdo por índice.idades = [10, 20] idades[0] = 11 print(idades)Saída
[11, 20]
00:19:09import randomcomrandint()erandom()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.
import random print(random.randint(1, 10)) print(random.random())DudaBet com
00:53:20while True,breake validaçãoO jogo usa
while Truepara ficar pedindo palpite até sair combreakquando acerta. Sepalpite_str.isdigit()éFalsemostra aviso e dácontinuepara nem tentar converter paraint(). 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.while True: print("tenta") breakSaída
tenta
Lembrar palpites com lista,
01:07:50.append()einAposta inicial vale
ganhosde 10 vezes, a cada erro fazganhos = ganhos - descontotirando 25% do valor inicial e podendo ficar negativo. Para não repetir erro, guarda tudo emtentativas = [].tentativas.append(palpite)adiciona no final eif palpite in tentativasdevolveTrueouFalsepara barrar repetido antes de descontar.tentativas = [] tentativas.append(3) print(3 in tentativas)Saída
True
01:27:01range()comforpara 5 tentativasrange(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.
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
- Laços `for` e `while` com `range`, `break` e `continue`Python · trilha, etapa 7
- Primeiros programas em Python: Hello World, strings e printPython · trilha, etapa 1
- Listas: criação, operações e repetiçãoPython · trilha, etapa 8