Explique o que vai aparecer no lugar dos pontos de interrogação (linhas 7 e 11).
01.
>>>
def
toto(n):
02.
... res
=
n.append(
4
)
03.
...
return
res
04.
...
05.
>>> n
=
(
5
,
6
,
7
)
06.
>>>
print
(toto(n))
07.
Traceback (most recent call last):
# Explicação: Erro porque append não é método de tuplos!
08.
...
09.
builtins.AttributeError:
'tuple'
object has no attribute
'append'
10.
>>> n
11.
(
5
,
6
,
7
)
# Explicação: n é imutável não sendo afectado pela chamada de toto(n).
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.
01.
def
mais_vict(campeonato):
02.
res
=
list(campeonato.items())
03.
max_v
=
0
04.
clubes
=
[]
05.
for
c,r
in
res:
06.
if
r[
0
] > max_v:
07.
max_v
=
r[
0
]
08.
clubes
=
[c]
09.
elif
r[
0
]
=
=
max_v:
10.
clubes.append(c)
11.
return
(clubes, max_v)
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).
01.
def
lista_freq(ficheiro,limiar):
02.
f_ent
=
open(ficheiro,
'r'
, enconding
=
'utf8'
)
03.
palavras
=
f_ent.read().replace(
'\n'
,
' '
).split()
04.
dicio
=
{}
05.
for
pal
in
palavras:
06.
dicio[pal]
=
dicio.get(pal,
0
)
+
1
07.
lista
=
[]
08.
for
pal,num_ocor
in
dicio.items():
09.
if
num_ocor > limiar:
10.
lista.append(pal)
11.
return
lista
Sem comentários:
Enviar um comentário