Python - Codigo cesar

   
Vista:

Codigo cesar

Publicado por sergi (9 intervenciones) el 04/10/2014 18:55:52
Hola estoy intentando hacer una funcion que me haga el codigo cesar , cambiando las letras las posiciones que le indico en el abecedario, he logrado hacer esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def cesar():
    import string
    frase = raw_input ("Introduce una frase: ")
    n = input ("Introduce la clave del cifrado: ")
 
    ALFABETO = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','Ñ','O','P','Q','R','S','T','U','V','W','X','Y','Z']
    alfabeto = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z']
    space = (' ')
 
 
    for letra in frase:
 
        for i in range(len(ALFABETO)):
            if letra == ALFABETO[i]:
                print (ALFABETO [i+n]),
 
        for i in range(len(space)):
            if letra == space:
                print space,
 
        for i in range(len(alfabeto)):
            if letra == alfabeto[i]:
                print (alfabeto [i+n]),


pero cuando pongo por ejemplo una z y desplazamiento 1 me da error porque no hay mas elementos en la lista, como puedo hacer que vuelva a empezar la lista cuando ponga eso y que z = a / n=1
muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Codigo cesar

Publicado por xve (1235 intervenciones) el 05/10/2014 09:46:04
Hola Sergio, lo que tienes que hacer una vez se pasa de la longitud de la lista, es volver a empezar desde el inicio... aquí te lo he modificado para que si se pasa de la lista, vuelve a empezar desde el inicio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-
 
def cesar():
	import string
	frase = raw_input ("Introduce una frase: ")
	n = input ("Introduce la clave del cifrado: ")
 
	ALFABETO = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','Ñ','O','P','Q','R','S','T','U','V','W','X','Y','Z']
	alfabeto = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z']
	space = (' ')
 
	for letra in frase:
 
		for i in range(len(ALFABETO)):
			if letra == ALFABETO[i]:
				if i+n>=len(ALFABETO):
					print (ALFABETO [i+n-len(ALFABETO)]),
				else:
					print (ALFABETO [i+n]),
 
		for i in range(len(space)):
			if letra == space:
				print space,
 
		for i in range(len(alfabeto)):
			if letra == alfabeto[i]:
				if i+n>=len(alfabeto):
					print (alfabeto [i+n-len(alfabeto)]),
				else:
					print (alfabeto [i+n]),
 
cesar()

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar