SENAI Goiás — Análise e Desenvolvimento de Sistemas
2ª Verificação de Aprendizagem (VA) — Parte Teórica
O que este programa imprime?
def processar(a, b):
try:
print(a / b)
except ZeroDivisionError:
print("divisão por zero")
else:
print("deu certo")
finally:
print("fim")
processar(10, 0) O que acontece ao rodar este programa?
class Produto:
def __init__(self, nome, preco):
self.nome = nome
self.preco = preco
@property
def preco(self):
return self._preco
@preco.setter
def preco(self, valor):
if valor < 0:
raise ValueError("Preço não pode ser negativo")
self._preco = valor
p = Produto("Ração", 50.0)
p.preco = 45.0
print(p.preco)
p.preco = -10
print(p.preco) O que este programa imprime, nesta ordem?
class Veiculo:
def __init__(self, marca):
self.marca = marca
def descrever(self):
return f"Veículo {self.marca}"
def __str__(self):
return f"Veiculo({self.marca})"
class Carro(Veiculo):
def __init__(self, marca, portas):
super().__init__(marca)
self.portas = portas
def descrever(self):
return f"{super().descrever()} com {self.portas} portas"
c = Carro("Fiat", 4)
print(c.descrever())
print(c) O que este programa imprime?
class EstoqueInsuficienteError(Exception):
def __init__(self, pedido, disponivel):
self.faltam = pedido - disponivel
super().__init__(f"Faltam {self.faltam} unidades")
class Estoque:
def __init__(self, disponivel):
self.disponivel = disponivel
def retirar(self, pedido):
if pedido > self.disponivel:
raise EstoqueInsuficienteError(pedido, self.disponivel)
self.disponivel -= pedido
estoque = Estoque(5)
try:
estoque.retirar(8)
except EstoqueInsuficienteError as erro:
print("Erro:", erro)
print("Faltam:", erro.faltam) O que este programa imprime?
from abc import ABC, abstractmethod
class Animal(ABC):
def __init__(self, nome):
self.nome = nome
@abstractmethod
def falar(self):
pass
class Cachorro(Animal):
def falar(self):
return "Au au"
class Gato(Animal):
def falar(self):
return "Miau"
animais = [Cachorro("Rex"), Gato("Mimi")]
for a in animais:
print(f"{a.nome}: {a.falar()}") O que é impresso?
produtos = [("cafe", 18), ("leite", 5), ("pao", 8)]
ordenados = sorted(produtos, key=lambda p: p[1])
print(ordenados) Rodando num banco loja.db recém-criado, o que este programa imprime?
import sqlite3
class Produto:
def __init__(self, nome, preco, id=None):
self.id = id
self.nome = nome
self.preco = preco
@classmethod
def from_row(cls, linha):
id, nome, preco = linha
return cls(nome, preco, id)
def to_params(self):
return (self.nome, self.preco)
def __str__(self):
return f"#{self.id} {self.nome} — R$ {self.preco:.2f}"
con = sqlite3.connect("loja.db")
con.execute("CREATE TABLE produtos (id INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT, preco REAL)")
cafe = Produto("Café", 18.0)
con.execute("INSERT INTO produtos (nome, preco) VALUES (?, ?)", cafe.to_params())
linha = con.execute("SELECT id, nome, preco FROM produtos").fetchone()
p = Produto.from_row(linha)
print(p) O que este programa imprime?
class Carrinho:
def __init__(self, desconto):
self.desconto = desconto
self.itens = []
def adicionar(self, preco):
self.itens.append(preco)
def total(self):
subtotal = sum(self.itens)
return self.desconto(subtotal)
def sem_desconto(v):
return v
def black_friday(v):
return v * 0.5
c = Carrinho(black_friday)
c.adicionar(100)
c.adicionar(60)
print(c.total()) O que este programa imprime?
import tkinter as tk
class App(tk.Tk):
def __init__(self):
super().__init__()
self.clientes = ["Ana", "Beto", "Carla"]
self.lista = tk.Listbox(self)
self.lista.pack()
self.atualizar()
def atualizar(self):
self.lista.delete(0, tk.END)
for c in self.clientes:
self.lista.insert(tk.END, c)
def remover(self, nome):
self.clientes.remove(nome)
self.atualizar()
app = App()
app.remover("Beto")
print(app.lista.get(1)) Rodando num banco loja.db recém-criado, o que este programa imprime?
import sqlite3
con = sqlite3.connect("loja.db")
con.execute("CREATE TABLE itens (id INTEGER PRIMARY KEY, nome TEXT NOT NULL)")
try:
con.execute("INSERT INTO itens (nome) VALUES (?)", (None,))
print("inserido")
except sqlite3.IntegrityError:
print("recusado pelo NOT NULL")