01.
import
random
02.
03.
def
cria_chave():
04.
"""Devolve uma chave para encriptar mensagens. Constrói uma permutação."""
05.
alfabeto
=
'abcdefghijklmnopqrstuvwxyz '
06.
chave
=
''
07.
while
alfabeto:
08.
# escolhe próximo caracter
09.
indice
=
random.randint(
0
,len(alfabeto)
-
1
)
10.
car
=
alfabeto[indice]
11.
# actualiza chave
12.
chave
=
chave
+
car
13.
# actualiza alfabeto
14.
alfabeto
=
alfabeto.replace(car,'')
15.
return
chave
Consegue perceber a ideia? É fácil. Escolhemos ao acaso uma letra do alfabeto e adicionamos à nossa permutação. Retiramos de seguida a letra do alfabeto. Repetimos o processo até esgotarmos as letras. Notar que usamos um espaço em branco!
Outra forma de fazer, agora com um ciclo for.
01.
def
cria_chave_2():
02.
"""Devolve uma chave para encriptar mensagens. Constrói uma permutação."""
03.
alfabeto
=
'abcdefghijklmnopqrstuvwxyz '
04.
chave
=
''
05.
for
i
in
range(len(alfabeto)):
06.
indice
=
random.randint(
0
,
26
-
i)
07.
chave
=
chave
+
alfabeto[indice]
08.
alfabeto
=
alfabeto[:indice]
+
alfabeto[indice
+
1
:]
09.
return
chave
Analise as diferenças. Qual das duas versões é a sua preferida, e porquê?
Senhor professor, desde já peço desculpa por estar a dar esta entrada neste tópico mas como este é um meio também usado pelos meus colegas para consulta penso que pode ser apropriada a minha duvida. Ao realizar os exercicios da ficha 9 deparei me com os exercicios relativos à implementacao de TDA, mais precisamente pilhas. O professor faz lá referencia a determinadas funcoes desse tipo de dados que eu no entanto não consigo aceder no meu interpretador de python. Resolvi os exercicios tendo em conta que pilhas são listas com a propriedade de o primeiro a entrar é o ultimo a sair e como tal, retirava sempre o elemento que se encontrava na posicao mais recente. Existe alguma biblioteca que seja necessária instalar que contenha as classes de TDA?
ResponderEliminarA ideia é precisamente ser você a implementar essas funções. Para tal tem que escolher uma representação para objectos do "tipo" pilha.Listas são naturalmente um forte candidato.
ResponderEliminar