Explique o que vai aparecer no lugar dos pontos de interrogação (linhas 7 e 11).
>>> def toto(n): ... res = n.append(4) ... return res ... >>> n = (5,6,7) >>> print(toto(n)) Traceback (most recent call last): # Explicação: Erro porque append não é método de tuplos! ... builtins.AttributeError: 'tuple' object has no attribute 'append' >>> n (5, 6, 7) # Explicação: n é imutável não sendo afectado pela chamada de toto(n).Pergunta 2
Admita que tem guardado no dicionário informação relativa ao desempenho das equipas envolvidas num campeonato desportivo. A cada jornada pares de equipas jogam entre si. O dicionário está organizado de modo que as chaves são os nomes dos clubes, e os valores uma lista com o número de vitórias, de empates e de derrotas, por esta ordem, obtidos nos diferentes jogos em que a equipa esteve envolvida. Escreva um programa que dado o dicionário com a informação referida me devolva uma lista das equipas que obtiveram o maior número de vitórias.
Solução
Existem várias alternativas. Aqui optou-se por ir buscar toda a informação ao dicionário e passá-la para uma lista. De seguida os pares (clube, vitórias) é inspeccionado na procura do(s) de maior vitórias. Dentro do ciclo for fazemos o teste. Se encontramos algum clube com um novo máximo recomeçamos o processo com uma lista com esse clube apenas. Cada vez que encontramos um clube com o um valor igual ao máximo, acrescentamos o clube à lista dos clubes com número máximo de vitórias.
def mais_vict(campeonato): res = list(campeonato.items()) max_v = 0 clubes = [] for c,r in res: if r[0] > max_v: max_v = r[0] clubes = [c] elif r[0] == max_v: clubes.append(c) return (clubes, max_v)Pergunta 3 Suponha que tem guardado em disco um ficheiro de texto. Pretende analisar o conteúdo do texto para determinar a lista das palavras que nele ocorrem com uma frequência superior a um dado valor. Escreva um programa que dado um ficheiro e o valor de referência determina a lista das palavras que ocorrem um número de vezes superior a esse valor.
Solução
O que vamos fazer é começar por construir um dicionário de frequências para as palavras do ficheiro. Depois percorremos o dicionário identificando as palavras que ocorrem um número de vezes superior ao valor de referência (limiar).
def lista_freq(ficheiro,limiar): f_ent = open(ficheiro, 'r', enconding='utf8') palavras = f_ent.read().replace('\n',' ').split() dicio = {} for pal in palavras: dicio[pal] = dicio.get(pal,0) + 1 lista = [] for pal,num_ocor in dicio.items(): if num_ocor > limiar: lista.append(pal) return lista
Sem comentários:
Enviar um comentário