Explicar o que aparece nos pontos de interrogação (linhas 6 e 8).
1.
>>>
def
titi(n):
2.
... n.append([
4
])
3.
...
4.
>>> x
=
[
1
,
2
,
3
]
5.
>>>
print
(titi(x))
6.
None
# Explicação: Porque a definição titi não tem return! Todavia n é alterado
7.
>>> x
8.
[
1
,
2
,
3
, [
4
]]
#Explicação: x é um objecto mutável pelo que a operação append sobre n também afecta x
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 e sua pontuação, ordenada de modo que as mais pontuadas apareçam primeiro. Admita que uma vitória vale 3 pontos, um empate 1 ponto e uma derrota 0 pontos.
Solução
Vamos resolver este problema por decomposição em três sub-problemas. Num criamos uma estrutura, uma lista, onde colocamos pares (pontuação, nome_clube). Depois ordenamos a lista de modo decrescente pela pontuação. Finalmente, reconstruímos a lista no formato desejado. Esta última tarefa resulta do facto de termos construído os pares com a ordem “trocada” para nos facilitar o ordenamento.
1.
def
classif(campeonato):
2.
final
=
[]
3.
for
clube, result
in
campeonato.items():
4.
pontos
=
3
*
result[
0
]
+
result[
1
]
5.
final.append([pontos,clube])
6.
final.sort(reverse
=
True
)
7.
lista
=
[[elem[
1
], elem[
0
]]
for
elem
in
final]
8.
return
lista
01.
import
operator
02.
03.
def
classif(campeonato):
04.
final
=
[]
05.
for
clube, result
in
campeonato.items():
06.
pontos
=
3
*
result[
0
]
+
result[
1
]
07.
final.append((clube, pontos))
08.
final.sort(key
=
operator.itemgetter(
1
), reverse
=
True
)
09.
return
final
Suponha que tem guardado em disco um ficheiro de texto. Pretende analisar o conteúdo do texto para determinar se ele é suspeito ou não. Um texto é suspeito se nele constarem pelo menos metade das palavras de uma lista de palavras proibidas. Escreva um programa que dado um ficheiro e uma lista de palavras proibidas determina se ele é ou não suspeito.
Solução
A solução mais simples consiste em extrair a informação do ficheiro na forma de uma lista das suas palavras, fazer a contagem do número de palavras proibidas que ocorrem no texto, e depois fazer a comparação.
01.
def
suspeito(ficheiro,palavras):
02.
f_ent
=
open(ficheiro,
'r'
, enconding
=
'utf8'
)
03.
pal_ficheiro
=
f_ent.read().replace(
'\n'
,
' '
).split()
04.
f_ent.close()
05.
conta
=
0
06.
for
pal
in
palavras:
07.
if
pal
in
pal_ficheiro:
08.
conta
+
=
1
09.
if
conta >
=
len(palavras)
/
/
2
:
10.
return
True
11.
else
:
12.
return
False
Sem comentários:
Enviar um comentário