Exercícios da aula 07
Aula 07: Exercícios¶
Exercício 1¶
Adicione atributos tamanho e marca à classe Televisão
. Crie dois objetos Televisão
e atribua tamanhos e marcas diferentes. Aí imprima os atribuitos para ver a diferença.
class Televisão: # Definição de uma classe
def __init__(self): # Método especial - construtor
self.ligada = False # atributo
self.canal = 2 # outro atributo
self.marca = "Phillips"
self.tamanho = 32
tv1 = Televisão()
tv2 = Televisão()
tv1.marca = "Sony"
tv1.tamanho = 56
def descrever_tv(tv):
"""
Esta função retorna uma string que descreve as características da tv
"""
return f"Televisão {tv.marca} com {tv.tamanho} polegadas"
print(descrever_tv(tv1))
print(descrever_tv(tv2))
Exercício 2¶
Atualmente a classe Televisão
inicializa o canal com 2. Modifique a classe de forma a receber o canal inicial em seu construtor.
class Televisão:
def __init__(self, canal=2, min=2, max=13):
self.ligada = False
self.canal = canal
self.cmin = min
self.cmax = max
def muda_canal_para_baixo(self):
if self.canal -1 >= self.cmin:
self.canal -= 1
def muda_canal_para_cima(self):
if self.canal +1 <= self.cmax:
self.canal += 1
tv = Televisão(7)
tv.canal
Exercício 3¶
Modifique a classe Televisão
de modo que se pedirmos para mudar o canal para baixo, além do mínimo, ele vái para o máximo e vice e versa
class Televisão:
def __init__(self, canal=2, min=2, max=13):
self.ligada = False
self.canal = canal
self.cmin = min
self.cmax = max
def muda_canal_para_baixo(self):
if self.canal - 1 >= self.cmin:
self.canal -= 1
else:
self.canal = self.cmax
def muda_canal_para_cima(self):
if self.canal +1 <= self.cmax:
self.canal += 1
else:
self.canal = self.cmin
tv = Televisão(11)
print(f"Canal: {tv.canal}")
tv.muda_canal_para_cima()
print(f"Canal: {tv.canal}")
tv.muda_canal_para_cima()
print(f"Canal: {tv.canal}")
tv.muda_canal_para_cima()
print(f"Canal: {tv.canal}")
tv.muda_canal_para_cima()
print(f"Canal: {tv.canal}")
tv.muda_canal_para_baixo()
print(f"Canal: {tv.canal}")
tv.muda_canal_para_baixo()
print(f"Canal: {tv.canal}")
tv.muda_canal_para_baixo()
print(f"Canal: {tv.canal}")
Exercício 4¶
Utilizando o que aprendemos com funções modifique o construtor de classe Telefisão
de forma que min
e max
sejam parâmetros opcionais em que min
vale 2 e max
vale 13 caso outros valores não sejam passados
Já fiz isso nos exercícios acima!
Exercício 5¶
Utilizando a classe modificada no exercício anterior (4), crie duas instâncias (objetos) especificando min
e max
por nome.
tv1 = Televisão(min=2, max=69)
print(f"Min: {tv1.cmin}, Max: {tv1.cmax}")
tv2 = Televisão(min=14, max=50)
print(f"Min: {tv2.cmin}, Max: {tv2.cmax}")
Exercício 6¶
Altere o programa de forma que a mensagem saldo insuficiente seja exibida caso haja tentativa de sacar mais dinheiro que o saldo disponível
class Cliente:
def __init__(self, nome, telefone):
self.nome = nome
self.telefone = telefone
class Conta:
def __init__(self, clientes, número, saldo=0):
self.saldo = saldo
self.clientes = clientes
self.número = número
def resumo(self):
print(f"CC Número: {self.número}. Saldo: {self.saldo:10.2f}")
def saque(self, valor):
if self.saldo >= valor:
self.saldo -= valor
else:
print(f"Conta com saldo {self.saldo:10.2f}. Insuficiente para sque de {valor:10.2f}")
def deposito(self, valor):
self.saldo += valor
joão = Cliente("João de Barros", "555-2604")
conta = Conta([joão], "01.00011", saldo=100)
conta.saque(40)
conta.resumo()
conta.saque(70)
conta.resumo()
Exercício 7¶
Modifique o método resumo
da class Conta
para exibir o nome e o telefone de cada cliente
class Conta:
def __init__(self, clientes, número, saldo=0):
self.saldo = saldo
self.clientes = clientes
self.número = número
def resumo(self):
print(f"CC Número: {self.número}. Saldo: {self.saldo:10.2f}")
for cliente in self.clientes:
print(f" Cliente: {cliente.nome}, tel. {cliente.telefone}")
def saque(self, valor):
if self.saldo >= valor:
self.saldo -= valor
else:
print(f"Conta com saldo {self.saldo:10.2f}. Insuficiente para sque de {valor:10.2f}")
def deposito(self, valor):
self.saldo += valor
joão = Cliente("João de Barros", "555-2604")
maria = Cliente("Maria de Barros", "555-2604")
conta = Conta([joão,maria], "01.00011", saldo=100)
conta.saque(40)
conta.resumo()
conta.saque(70)
conta.resumo()
Exercício 8¶
Modofique as classes Conta
e ContaEspecial
para que a operação de saque retorne verdadeiro se o saque foi realizado e false caso contrário
class Conta:
def __init__(self, clientes, número, saldo=0):
self.saldo = 0
self.clientes = clientes
self.número = número
self.operações = []
self.deposito(saldo)
def resumo(self):
print(f"CC Número: {self.número}. Saldo: {self.saldo:10.2f}")
def saque(self, valor):
if self.saldo >= valor:
self.saldo -= valor
self.operações.append(["SAQUE", valor])
return True
else:
return False
def deposito(self, valor):
self.saldo += valor
self.operações.append(["DEPÓSITO", valor])
def extrato(self):
print(f"Extrato CC No {self.número}\n")
for o in self.operações:
print(f"{o[0]:10s} {o[1]:10.2f}")
print(f"\n Saldo: {self.saldo:10.2f}\n")
class ContaEspecial(Conta):
def __init__(self, clientes, número, saldo=0, limite=0):
Conta.__init__(self, clientes, número, saldo)
self.limite = limite
def saque(self, valor):
if self.saldo + self.limite >= valor:
self.saldo -= valor
self.operações.append(["SAQUE", valor])
return True
else:
return False
bozo = Cliente("Bozo Palhaço", "236-0873")
vovó = Cliente("Vovó Mafalda", "236-0873")
conta1 = Conta(["bozo"], 1, 1000)
conta2 = ContaEspecial([vovó, bozo], 2, 500, 1000)
conta1.saque(23)
conta1.saque(100000)
conta2.saque(23)
conta2.saque(23000)
super(ContaEspecial)
Exercício 9¶
Modifique a classe ContaEspecial
de forma que seu extrato exiba o limite e o total disponível para saque.
class ContaEspecial(Conta):
def __init__(self, clientes, número, saldo=0, limite=0):
Conta.__init__(self, clientes, número, saldo)
self.limite = limite
def saque(self, valor):
if self.saldo + self.limite >= valor:
self.saldo -= valor
self.operações.append(["SAQUE", valor])
return True
else:
return False
def extrato(self):
# Vamos aproveitar O que já foi implementado
# na classe rConta
Conta.extrato(self)
# Vamos colocar a informação adicional:
print(f"Limite: {self.limite:10.2f}")
print(f"Total disponível: {self.limite+self.saldo:10.2f}")
conta2 = ContaEspecial([vovó, bozo], 2, 500, 1000)
conta2.extrato()
Comentários
Comments powered by Disqus