2015-04-30 31 views
5

Spostare la parola a destra e quindi invertirla.come spostare una stringa a destra e invertire in python?

Si dovrebbe prendere un canale di scorrimento a destra e invertire poi tornare come segue:

>>> shift_reverse('Introduction to Computer Programming') 
gnimmargorP noitcudortnI ot retupmoC 

Ho provato ad utilizzare questo metodo per trovare la risposta di cui sopra ma doesnt sembra funzionare Aiutateci :(

s= "I Me You" 
def shift_reverse(s): 
    l= s.split() 
    new_str= ' '.join(l[-1:] + l[:-1]) 
    new_str = new_str[::-1] 
    return (new_str) 

print (shift_reverse(s)) 

ma la stampa che ottengo è

[evaluate untitled-3.py] 
eM I uoY 
+0

In entrambi i reverse-split-riordino-join, o split-riordino-reverse-join.Non stai facendo nessuno dei due –

risposta

1

è n eed per invertire ciascuno dei riordinata lista:

reordered = l[-1:] + l[:-1] 
new_str = ' '.join(word[::-1] for word in reordered) 
-2

Questo dovrebbe funzionare per voi

s= "Introduction to Computer Programming" 
def shift_reverse(s): 
    l= s.split() 
    l = [l.pop()]+ l 
    return ' '.join(i[::-1] for i in l) 

print (shift_reverse(s)) 

uscita:

gnimmargorP noitcudortnI ot retupmoC 
+0

Perché il downvote? Ha l'output richiesto dall'OP – letsc

0

Ecco un passo per passo con le funzioni:

Creare la funzione shift per spostare l'ultima parola all'inizio:

def shift(sentence): 
    words = sentence.split() 
    return ' '.join([words[-1]] + words[:-1]) 

Creare reverse funzione di invertire tutte le parole in una frase (usa list comprehension):

def reverse(sentence): 
    return ' '.join([word[::-1] for word in sentence.split()]) 

Crea shift_reverse per invertire tutte le parole e poi shift l'ultima al di partenza:

def shift_reverse(sentence): 
    return shift(reverse(sentence)) 

Risultato:

shift_reverse('Introduction to Computer Programming') 

uscita:

'gnimmargorP noitcudortnI ot retupmoC' 
0

In new_str = new_str[::1], si sta invertendo la stringa intera, carattere per carattere.

ghi abc def 
fed cba ihg 

si deve invertire ogni parola nella list di parole.

def shift_reverse(string): 
    words = string.split() 
    shifted_words = [words[-1]] + words[:-1] 
    return ' '.join([word[::-1] for word in shifted_words]) 
0

È possibile partecipare a un generatore di espressione che genera le parole rovesce nella lista divisa ruotato:

>>> s = 'Introduction to Computer Programming' 
>>> ' '.join(w[::-1] for w in (lambda l: l[-1:] + l[:-1])(s.split())) 
'gnimmargorP noitcudortnI ot retupmoC' 
0
def shift_reverse(s): 
    rev = ["".join(reversed(word)) for word in s.split(" ")] 
    return "{} {}".format(rev.pop(), " ".join(rev)) 

invertire tutte le corde, pop l'ultimo fuori dalla lista delle parole rovesciate e partecipare alla resto.

+1

Sebbene il codice sia apprezzato, dovrebbe sempre avere una spiegazione di accompagnamento. Questo non deve essere lungo ma è previsto. – peterh

0

È possibile spostare la stringa sopra, il ogni elemento contrario:

>>> phrase = 'Introduction to Computer Programming' 
>>> new = ' '.join([word[::-1] for word in [phrase.split()[-1]]+phrase.split()[:-1]]) 
>>> print new 
gnimmargorP noitcudortnI ot retupmoC 
>>> 
Problemi correlati