Exercícios da aula 04
Solução dos exercícios da aula 04¶
Exercício 1¶
Altere o programa anterior de modo que o produto e a quantidade vendida seja solicitada ao usuário. Verifique se o produto digitado existe e só então efetue a baixa no estoque. Também verifique se o estoque é o suficiente para atender ao pedido.
estoque = {"tomate": [1000, 2.30],
"alface": [500, 0.45],
"batata": [2001, 1.20],
"feijão": [100, 1.5]}
venda = []
total = 0
while True:
produto = input("Entre com o produto (fim para terminar): ").strip().lower()
if produto == 'fim':
break
elif produto in estoque:
quantidade = int(input("Entre com a quantidade de produto desejada: "))
prod_est = estoque[produto]
quant_disp = prod_est[0]
if quantidade > quant_disp:
print(f"Existe {produto} disponível para a tua demanda.")
else:
preço = prod_est[1]
custo = preço * quantidade
prod_est[0] -= quantidade
print(f"{produto:12s}: {quantidade:3d} x {preço:6.2f} = {custo:6.2f}")
total += custo
else:
print("Produto não disponível")
print(f" Custo total: {total:21.2f}\n")
print("Estoque:\n")
for chave, dados in estoque.items():
print("Descrição: ", chave)
print("Quantidade: ", dados[0])
print(f"Preço: {dados[1]:6.2f}\n")
Exercício 2¶
Escreva um programa que que gere um dicionário a partir de uma string onde a chave seja um caracter e o valor o número de vezes que este caracter aparece no dicionário
o rolo -> {'o': 3, ' ': 1, 'l': 1}
s = "uma ratazana enorme"
caracteres = {}
for c in s:
if c in caracteres:
caracteres[c] += 1
else:
caracteres[c] = 1
caracteres
Exercício 3¶
Explore os métodos disponíveis aos dicionários. Brinque com eles
Aí é com vocês mesmo. Não tem solução
Exercício 3¶
Explore os métodos disponíveis aos dicionários. Brinque com eles
Aí é com vocês mesmo. Não tem solução
Exercício 5¶
Escreva um programa que compare duas listas. Utilizando operações com conjuntos, imprima:
- Os valores comuns às duas listas
- Os valores que só existem na primeira
- Os valores que existem apenas na segunda
- Uma lista com os elementos não repetidos das duas listas
- A primeira lista sem os elementos repetidos na segunda
L1 = list(range(10))
L2 = [4,7,8, 15]
# Valores comuns às dias listas:
S1 = set(L1)
S2 = set(L2)
S1 & S2
# Valores que só existem na primeira lista
S1 - S2
# Valores que existem apenas na segunda lista:
S2 - S1
# Uma lista com os elementos não repetidos das duas listas
(S1 | S2) - (S1 & S2)
# A primeira lista sem os elementos repetidos na segunda
S1 - (S1 & S2)
Exercício 6¶
Teste a diferença entre os métodos .find
e .rfind
com .index
e .rindex
"uma string com uma string qualquer".find("string")
"uma string com uma string qualquer".rfind("string")
"uma string com uma string qualquer".index("string")
"uma string com uma string qualquer".rindex("string")
"uma string com uma string qualquer".find("IPT")
"uma string com uma string qualquer".rfind("IPT")
"uma string com uma string qualquer".index("IPT")
"uma string com uma string qualquer".rindex("IPT")
Os métodos find
e index
retornam o índice da posição de uma substring começando pela esquerda. Já os métodos rfind
e rindex
realizam a busca pela direita (right em inglês).
A diferença entre find
e index
(e as versões com r
no começo) é que se a substring não ocorre, find
e rfind
retornam -1. Já index
e rindex
resultam em um erro.
Exercício 7¶
Escreva um programa que leia duas strings. Verifique se a segunda ocorre dentro da primeira e imprima sua posição de início
s1 = "Esta mensagem é comprida. Vamos ver o que acontece"
s2 = "Vamos"
idx = s1.find(s2)
if idx < 0:
print(f"'{s2}' não ocorre na string '{s1}'")
else:
print(f"'{s2}' ocorre no índice {idx} da string '{s1}'")
Exercício 8¶
Escreva um programa que leia duas strings e gere uma terceira string com todos os caracteres que aparecem nas duas strings. A ordem não interessa.
# Solução usando strings apenas:
s1 = "na rua tem ratazana"
s2 = "a ratazana é enorme"
s3 = ''
for c in s1:
if c not in s3:
s3 += c
for c in s2:
if c not in s3:
s3 += c
s3
# Solução usando conjuntos
"".join(set(s1) | set(s2))
Exercício 9¶
Escreva um programa que leia uma string e imprima quantas vezes cada caracter aparece nessa string
s = "A ratazana é enorme"
C = set(s)
for c in C:
n = s.count(c)
print(f"O caracter '{c}' ocorre {n} vezes")
Exercício 10¶
Modifique o jogo da forca de forma que a palavra secreta seja escrita caso o jogador perca
palavra = input("Digite a plavra secreta: ").strip().lower()
for x in range(100):
print()
digitadas = []
acertos = []
erros = 0
while True:
senha = ""
for letra in palavra:
senha += letra if letra in acertos else "."
print(senha)
if senha == palavra:
print("Você acertou!")
break
tentativa = input("\nDigite uma letra: ").strip().lower()
if tentativa in digitadas:
print("Você já tentou esta letra!")
continue
else:
digitadas += tentativa
if tentativa in palavra:
acertos += tentativa
else:
erros += 1
print("Você errou!")
print("||==:==\n|| : ")
print("|| O " if erros >= 1 else "||")
linha2 = ""
if erros == 2:
linha2 = " | "
elif erros == 3:
linha2 = " \| "
elif erros >= 4:
linha2 = " \|/ "
print(f"||{linha2}")
linha3 = ""
if erros == 5:
linha3 += " / "
elif erros >= 6:
linha3 += " / \ "
print(f"||{linha3}")
print("||\n==========")
if erros == 6:
print("Enforcado!")
print(f"A palavra secreta era '{palavra}'")
break
Exercício 11¶
Modifique o jogo da forca de forma a utilizar uma lista de palavras. No início pergunte um número e calcule o índice da palavra a utilizar pela fórmula:
índice = (número * 776) % len(lista_de_palavras)
lista_de_palavras = ['rato', 'bola', 'cachorro', 'gato', 'fogo', 'lixo', 'rosa', 'telefone', 'comida', 'carne',
'bala', 'figura', 'fauna', 'escola', 'faculdade', 'museu']
número = int(input("Entre com um número inteiro: "))
índice = (número * 776) % len(lista_de_palavras)
palavra = lista_de_palavras[índice]
digitadas = []
acertos = []
erros = 0
while True:
senha = ""
for letra in palavra:
senha += letra if letra in acertos else "."
print(senha)
if senha == palavra:
print("Você acertou!")
break
tentativa = input("\nDigite uma letra: ").strip().lower()
if tentativa in digitadas:
print("Você já tentou esta letra!")
continue
else:
digitadas += tentativa
if tentativa in palavra:
acertos += tentativa
else:
erros += 1
print("Você errou!")
print("||==:==\n|| : ")
print("|| O " if erros >= 1 else "||")
linha2 = ""
if erros == 2:
linha2 = " | "
elif erros == 3:
linha2 = " \| "
elif erros >= 4:
linha2 = " \|/ "
print(f"||{linha2}")
linha3 = ""
if erros == 5:
linha3 += " / "
elif erros >= 6:
linha3 += " / \ "
print(f"||{linha3}")
print("||\n==========")
if erros == 6:
print("Enforcado!")
break
Qual a idéia aqui? Isso é um gerador de números pseudo-aleatórios. Parecem aleatórios mas não são. Se bem escolhidos e pode ter um bom comportamento!
Comentários
Comments powered by Disqus