...La prima parte la riesco a fare senza problemi ma non riesco proprio a capire come traslare di n posizioni tutti i valori della lista presa da input. AIUTATEMI!!
beh ... una piccola perplessità mi viene ed avrei voluto vedere il Tuo codice, dato che le Tue liste non sono nemmeno composte da stringhe

Va bene, dai, anche se non è una buona cosa, dato che Ti serve a ben poco (bisogna leggere la documentazione e sforzarsi di capire come operare perché un "esercizio" sia utile), ti do la soluzione "semplice"
>>> lessico = 'abcdefghijklmnopqrstuvxyz'
>>> def traslate(i_l):
w = []
for lett in i_l:
if lett in lessico:
pos = lessico.index(lett) + 7
if pos >= len(lessico):
pos -= len(lessico)
w.append(lessico[pos])
else:
w.append('Errore')
return w
>>> parola = ['t', 'e', 'l', 'f', 'o', 'n', 'o']
>>> traslate(parola)
['b', 'l', 's', 'm', 'v', 'u', 'v']
:
non devi far altro aggiungere 7 all'indice in lessico di un carattere ed estrarre il carattere di lessico con indice incrementato, ricominciando da zero se l'indice incrementato raggiunge la lunghezza di lessico.
Forse, Ti chiederai del perché utilizzi una stringa, invece di una lista, quale riferimento lessicale ... le stringhe hanno proprietà interessanti e, tra l'altro, sono iterabili, cioè possono anche essere lette un carattere alla volta tramite indice, la funzione non cambierebbe se si trattasse di valutare una stringa invece di una lista :
>>> parola = 'telefono'
>>> traslate(parola)
['b', 'l', 's', 'l', 'm', 'v', 'u', 'v']
>>> parola = 'westpoint'
>>> traslate(parola)
['Errore', 'l', 'a', 'b', 'x', 'v', 'p', 'u', 'b']
>>>
il secondo esempio Ti mostra il perché della verifica che le singole lettere appartengano effettivamente a lessico, "w" non c'è ed avresti un errore.
Dopo averTi dato la risposta, Ti sollecito a leggere la documentazione ed a provarci, a volte "il codice" sembra ubriacante ma sono sicuro che ci riesci, basta mettercisi.
[Ops[ mi era sfuggito che anche il numero doveva essere un parametro della funzione, cambia leggermente, ma il principio è sempre quello, basta aggiungere un parametro alla funzione ed alla chiamata :
>>> lessico = 'abcdefghijklmnopqrstuvxyz'
>>> def traslate(i_l, offset):
w = []
for lett in i_l:
if lett in lessico:
pos = lessico.index(lett) + offset
if pos >= len(lessico):
pos -= len(lessico)
w.append(lessico[pos])
else:
w.append('Errore')
return w
>>> parola = 'telefono'
>>> traslate(parola, 7)
['b', 'l', 's', 'l', 'm', 'v', 'u', 'v']
>>>