Stack Overflow en español Asked by Donato77 on October 12, 2020
Lo siguiente es una función que realiza el cifrado cesar:
def caesar(s, k, decode = False):
trans = dict(zip(abc,abc[(k,26-k)[decode]:] + abc[:(k,26-k)[decode]]))
return ''.join(trans[L] for L in s.upper() if L in abc)
La parte que se me complica es abc[(k,26-k)[decode]:] segun entiendo se trataria de un diccionario corrijanme si no es asi; a lo que voy es (k,26-k) que tipo de declaracion o lo que sea es esta?. Tambien quisiera saber cual es la diferencia entre por poner un ejemplo entre [k:] y [:k].
Y perdon es que estoy empezando a aprender python.
Respecto a la parte de la sintaxis [k:]
y [:k]
se refiere a un tema llamado "slicing" el cual te sirve para obtener secuencias o subarreglos de otro arreglo donde la notación es la siguiente:
arreglo[inicio:final:saltos]
Si tu no especificas el inicio, Python lo tomará desde la entrada 0, es decir
arreglo[:final:saltos] = arreglo[0:final:saltos]
Análogamente si no especificas el final, se interpretará que se hará el slicing hasta la última entrada, así como si no especificas los saltos, te recorrerá el arreglo de uno por uno, pero pondré un ejemplo para que se entienda. Recuerda nada más que para el inicio, la entrada que quieres, supongamos k
, Python la toma como k-1
, mientras que el final lo toma como k
.
>>> l1 = [1,2,3,4,5,6]
>>> l1[:]
[1,2,3,4,5,6]
>>> l1[2:]
[3,4,5,6]
>>> l1[:3]
[1,2,3]
>>> l1[2:5]
[3,4,5]
Answered by AntonioHM on October 12, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP