# 01
class Veiculo:
    def __init__(self, marca, ano):
        self.marca = marca
        self.ano = ano

    def detalhes(self):
        return f"Marca: {self.marca}, Ano: {self.ano}"

class Carro(Veiculo):
    def __init__(self, marca, ano, portas):
        super().__init__(marca, ano)
        self.portas = portas

    def detalhes(self):
        return f"{super().detalhes()}, Portas: {self.portas}"

carro = Carro("Ford", 2020, 4)
print(carro.detalhes())  # Saída: Marca: Ford, Ano: 2020, Portas: 4

# 02
class Animal:
    def comer(self):
        return "Está comendo."

class Voador:
    def voar(self):
        return "Está voando."

class Morcego(Animal, Voador):
    def detalhes(self):
        return f"{self.comer()} {self.voar()}"

morcego = Morcego()
print(morcego.detalhes())  # Saída: Está comendo. Está voando.


# 03
class Contador:
    def __init__(self, limite):
        self.limite = limite
        self.atual = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.atual < self.limite:
            valor = self.atual
            self.atual += 1
            return valor
        else:
            raise StopIteration

contador = Contador(5)
for num in contador:
    print(num)  # Saída: 0, 1, 2, 3, 4

# 04
class Forma:
    def area(self):
        return 0

class Quadrado(Forma):
    def __init__(self, lado):
        self.lado = lado

    def area(self):
        return self.lado ** 2

class Circulo(Forma):
    def __init__(self, raio):
        self.raio = raio

    def area(self):
        return 3.14 * (self.raio ** 2)

formas = [Quadrado(4), Circulo(3)]
for forma in formas:
    print(forma.area())  # Saída: 16, 28.26

# 05
def imprimir_area(forma):
    print(f"A área é: {forma.area()}")

imprimir_area(Quadrado(4))  # Saída: A área é: 16
imprimir_area(Circulo(3))   # Saída: A área é: 28.26

# 06
class Pessoa:
    contador = 0  # Atributo de classe

    def __init__(self, nome):
        self.nome = nome  # Atributo de instância
        Pessoa.contador += 1

p1 = Pessoa("Alice")
p2 = Pessoa("Bob")
print(Pessoa.contador)  # Saída: 2 (escopo de classe)
print(p1.nome)          # Saída: Alice (escopo de instância)

# 07
class Calculadora:
    historico_somas = []  # Atributo de classe

    def soma(self, a, b):
        resultado = a + b  # Variável local
        self.historico_somas.append(resultado)
        return resultado

calc = Calculadora()
print(calc.soma(2, 3))       # Saída: 5
print(calc.historico_somas)  # Saída: [5]

# 08
class Pares:
    def __init__(self, limite):
        self.limite = limite
        self.atual = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.atual <= self.limite:
            valor = self.atual
            self.atual += 2
            return valor
        else:
            raise StopIteration

for num in Pares(6):
    print(num)  # Saída: 0, 2, 4, 6

# 09
class Cachorro:
    def falar(self):
        return "Oi, eu sou o Rex!"

class Gato:
    def falar(self):
        return "Oi, eu sou a Mili"

def animal_fala(animal):
    print(animal.falar())

animal_fala(Cachorro())  # Saída: Au Au
animal_fala(Gato())      # Saída: Miau


# 10
class Pai:
    valor = 10

class Filho(Pai):
    valor = 20

print(Pai.valor)  # Saída: 10 (atributo da classe Pai)
print(Filho.valor)  # Saída: 20 (atributo da classe Filho)



Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: