2015-04-30 23 views
5

Przesuń słowo w prawo, a następnie odwróć je.jak przesunąć ciąg na prawo i odwrócić go w pythonie?

Należy wziąć przesunięcie słowo do prawej i do tyłu to następnie powrót następująco:

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

Próbowałem za pomocą tej metody, aby znaleźć powyższą odpowiedź, ale to nie robi wydaje się działać Proszę o pomoc :(

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)) 

ale ja dostać wydruk jest

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

Albo reverse split-Reorder-join lub split-Reorder-reverse-dołączyć.Ty też nie robisz. –

Odpowiedz

1

Ty n Potrzeba, która ma odwrócić każdy z re-uporządkowane listy:

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

ten powinien pracować dla Ciebie

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)) 

wyjściowa:

gnimmargorP noitcudortnI ot retupmoC 
+0

Dlaczego upadek? Ma wyjście, o które prosiło OP o – letsc

0

Oto krok po kroku z funkcjami:

Utwórz funkcję shift, aby przenieść ostatnie słowo na początek:

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

Tworzenie reverse funkcję odwrócenia wszystkich słów w zdaniu (używa list comprehension):

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

Tworzenie shift_reverse odwrócić wszystkie słowa, a następnie shift ostatni na początku:

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

Wynik:

shift_reverse('Introduction to Computer Programming') 

wyjściowa:

'gnimmargorP noitcudortnI ot retupmoC' 
0

W new_str = new_str[::1], jesteś cofania cały ciąg, znak za znakiem.

ghi abc def 
fed cba ihg 

Trzeba odwrócić każde słowo w list słów.

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

Możesz dołączyć wyrażenie generator, który generuje odwrócony słów w obróconym listy dzielone: ​​

>>> 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)) 

odwrócić wszystkie sznurki, pop ostatni z listy odwróconych słowami i dołączyć do reszta.

+1

. Mimo że kod jest uznawany, powinien zawsze mieć towarzyszące wyjaśnienie. To nie musi długo potrwać, ale jest spodziewane. – peterh

0

Można przesunąć łańcuch skończy, odwrócić każdą pozycję:

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