Autor
		 | 
		
			Tema: Invertir una función en Python.  (Leído 4,040 veces)
		 | 
	 
 
	
		
			
				
					
						
							jam man
							
								
								  Desconectado
								Mensajes: 32
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Hola!!!, estoy haciendo un programa en Python de cifrado Polybios, la cuestión es de que ya tengo la primera parte del código que es cifrar una palabra o frase, este es el código: texto = raw_input ("Palabra a cifrar: ").lower()                                  diccionario = {'a':'aa', 'b':'ab', 'c':'ac', 'd':'ad', 'e':'ae',                'f':'ba', 'g':'bb', 'h':'bc', 'i':'bd', 'j':'bd',                'k':'be', 'l':'ca', 'm':'cb', 'n':'cc', 'ñ':'cc',                'o':'cd', 'p':'ce', 'q':'da', 'r':'db', 's':'dc', 't':'dd',                'u':'de', 'v':'ea', 'w':'eb', 'x':'ec', 'y':'ed', 'z':'ee'} textoleet = '' for v in texto:         if v in diccionario.keys():                 textoleet += diccionario[v]         else:                 textoleet += v print(textoleet) 
 
 pero el detalle es hacer lo contrario, que al momento de ingresar una palabra o frase ya cifrada, ahora que lo descifre, ejemplo: si ingreso "PYTHON", la palabra cifrada seria "ceedddbccdcc" y ahora quiero que haga lo contrario que al ingresar cualquier texto, lo descifre. 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							tincopasan
							
								       
								
								  Desconectado
								Mensajes: 1.286
								 
								No es lo mismo conocer el camino que recorrerlo.
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
este tema es un dejavú. ¿es un ejercicio de alguna clase? bueno, ahora es lo mismo pero lees el valor en lugar de la clave y la cadena cada 2 caracteres: algo asi: mientras cadena < que largo de cifrada              tomar primeros 2 caracteres y buscar valor en diccionario              limpia = limpia + clave              sumar 2 caracteres a cifrada mostrar limpia 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							jam man
							
								
								  Desconectado
								Mensajes: 32
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
si es para una materia de Seguridad Informática. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							tincopasan
							
								       
								
								  Desconectado
								Mensajes: 1.286
								 
								No es lo mismo conocer el camino que recorrerlo.
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
ok, en base a tu código hice basicamente lo mismo , con una pequeña modificación para descifrar #-*- coding:utf 8 -*-   diccionario = {'a':'aa', 'b':'ab', 'c':'ac', 'd':'ad', 'e':'ae',                'f':'ba', 'g':'bb', 'h':'bc', 'i':'bd', 'j':'bd',                'k':'be', 'l':'ca', 'm':'cb', 'n':'cc',                 'o':'cd', 'p':'ce', 'q':'da', 'r':'db', 's':'dc', 't':'dd',                'u':'de', 'v':'ea', 'w':'eb', 'x':'ec', 'y':'ed', 'z':'ee'}   def cifrar():     texto = input ("Palabra a cifrar: ").lower()                                        textoleet = ''     for v in texto:         if v in diccionario.keys():             textoleet += diccionario[v]         else:             textoleet += v     print(textoleet)   def descifrar():     texto = input ("Palabra a descifrar: ").lower()                                      textoleet = ''     inicio= 0     final = 2     while inicio < len(texto) :         v=texto[inicio:final]         inicio+=2         final+=2         for g,w in diccionario.items():             if w == v:                 textoleet+= g     print(textoleet)         cifrar() descifrar() 
 
 seguramente hay formas mejores pero es la que se me ocurrió primero. otra cosa, revisa tu diccionario porque la n y la ñ tienen el mismo valor, por eso para simplificar saqué la ñ del mio.   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 14 Octubre 2015, 09:39 am por tincopasan »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							jam man
							
								
								  Desconectado
								Mensajes: 32
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Bueno la cuestión con la "Ñ" es de que tiene la misma coordenada que la "N", lo mismo pasa con la "J" y con la "I", esto de acuerdo a la tabla del cifrado polybios: https://infow.wordpress.com/2008/11/13/criptografia-clasica-ii-polybios/y al momento de descifrar ya es cuestión del usuario interpretarlo.  Y muchas gracias!!! Supongo que es lo mismo pero con coordenadas números.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Por que ésta pequeña función de invertir una lista enlazda funciona?
							 
							Programación C/C++
						 | 
						
							ShadowA7X
						 | 
						
							1
						 | 
						
							2,378
						 | 
						
							 
							
								25 Noviembre 2014, 01:01 am 
								por avesudra
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							 Invertir claves de un diccionario por comprensión en python.
							 
							Python
						 | 
						
							jam man
						 | 
						
							5
						 | 
						
							6,394
						 | 
						
							 
							
								10 Octubre 2015, 23:09 pm 
								por jam man
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							MOVIDO:  Invertir claves de un diccionario por comprensión en python.
							 
							Programación General
						 | 
						
							Eleкtro
						 | 
						
							0
						 | 
						
							2,201
						 | 
						
							 
							
								22 Septiembre 2015, 10:30 am 
								por Eleкtro
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							MOVIDO: Invertir una función en Python.
							 
							Programación General
						 | 
						
							Eleкtro
						 | 
						
							0
						 | 
						
							2,068
						 | 
						
							 
							
								13 Octubre 2015, 18:14 pm 
								por Eleкtro
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Invertir una Lista en C - La funcion Pop no me da el ultimo elemento.?
							 
							Programación C/C++
						 | 
						
							palacio29
						 | 
						
							3
						 | 
						
							4,888
						 | 
						
							 
							
								27 Octubre 2016, 01:01 am 
								por MAFUS
							
						 | 
					 
				 
			    |