Os objetivos desta aula são os seguintes: ter um primeiro contacto com os tipos estruturados de informação. Após a realização da prática, deverá ter sido adquirida uma noção dos seguintes conceitos:
media( (1, 4, 8 ,12) ) --> 6.25
media( [1, 2, 3, 4] ) --> 2.5
def media(v):
if len(v) == 0:
return
soma = 0
for i in v:
soma += i
return soma/len(v)
x=(1, 4, 8 ,12)
media(x)
media([1, 2, 3, 4])
maior((1, 4, 18 ,12)) --> 18
def maior(v):
if len(v) == 0:
return
maior = v[0]
for i in range(1,len(v)):
if maior < v[i]:
maior = v[i]
return maior
maior((1, 4, 18 ,12))
def freq_vogais(texto):
vogais = ["a", "e", "i", "o", "u"]
freq = {}
for c in texto:
if c in vogais:
if c in freq:
freq[c] += 1
else:
freq[c] = 1
return freq
frase="o tempo pergunta ao tempo quanto tempo o tempo tem"
freq_vogais(frase)
Uma agenda é composta por contactos telefónicos, em que cada contacto telefónico tem os atributos nome, telefone, email principal (opcional).
Deverá definir a classe de objetos Agenda
deve permitir todas as operações seguintes.
Escreva um programa que apresenta o menu anterior ao utilizador e, consoante a sua escolha faz a operação correspondente. O programa termina quando o utilizador introduzir a opção 0.
class Contact:
def __init__(self, name, number, email = ""):
self.__name = name
self.number = number
self.email = email
@property
def name(self):
return self.__name
def __str__(self):
return "{},{},{}".format(self.name, self.number, self.email)
def __eq__(self, other):
if not isinstance(other, self.__class__):
return False
return self.name == other.name and self.number == other.number
class Agenda:
def __init__(self):
self.__contacts = []
def add(self, c):
self.__contacts.append(c)
def listar(self):
for c in self.__contacts:
print(c)
def details(self, name):
for i in self.__contacts:
if i.name == name:
return i.number
return None
def remove(self, name):
i = 0
while i != len(self.__contacts) and self.__contacts[i].name != name:
i += 1
if i != len(self.__contacts):
del self.__contacts[i]
def modify(self, name, number):
i = 0
while i != len(self.__contacts) and self.__contacts[i].name != name:
i += 1
if i != len(self.__contacts):
self.__contacts[i].number = number
c1 = Contact("Maria Joana", 9999999, "joana@me.com")
c2 = Contact("Jararé Titó", 5555555, "jacare@lago.br")
# teste da classe agenda
a = Agenda()
a.add(c1)
a.add(c2)
print("=== Contactos na agenda ===")
a.listar()
O funcionamento que se pretende para a repartição é o seguinte:
Desenvolva a classe fila de espera de modo a que o funcionamento acima seja possível. Na construção de um objeto deste tipo deve ser fornecido ao construtor o número máximo de pessoas admitido.
IntSet
para representar conjuntos de inteiros.¶Esta classe deve ter operações que permitam:
def union(self, other):
...
isinstance(a, class)
permite testar se um dado elemento pertence a uma dada classe.¶def count_types(v):
contagem = {"inteiros":0, "floats": 0, "tuplos": 0, "listas": 0, "outros":0}
for x in v:
if isinstance(x, int):
contagem["inteiros"] += 1
elif isinstance(x, float):
contagem["floats"] += 1
elif isinstance(x, tuple):
contagem["tuplos"] += 1
elif isinstance(x, list):
contagem["listas"] += 1
else:
contagem["outros"] += 1
return contagem
v = [2, 1.0, 4.2, "Iscte", ["a", "b"], (1,2)]
count_types(v)