Oto przykład:

x = "Hello"

Chcę, aby y równało się Hleol. Do tej pory próbowałem tego:

x = "Hello"
y = x[::-1]

Ale to tylko cofa y. Jak mogłem to zrobić?

Prawdopodobnie ma zły tytuł, za co bardzo mi przykro.

-2
Retluoc3002 1 kwiecień 2020, 00:17

4 odpowiedzi

Najlepsza odpowiedź

Konwertujesz ciąg na listę. Ciągi znaków są niezmienne, ale listy są dobre dla operacji indeksowania.

Następnie ignorujesz indeks 0 i zmieniasz zawartość indeksów 1 i 2, 3 i 4 itd., Aż do maksymalnej długości twojego ciągu -1, więc na końcu nie pojawia się błąd indeksu:

def wiggle_it(s):
    s = list(s)
    for i in range(1,len(s)-1,2):
        s[i],s[i+1] = s[i+1],s[i]

    return ''.join(s) # return list back joined as string

print(wiggle_it("Hello"))

Wynik:

Hleol
0
Patrick Artner 31 marzec 2020, 21:26

Możesz przechodzić między znakami i używać tylko znaków o nieparzystym indeksie.

x = "Hello"
y = x[0]
for index in range(len(x)):
    if(index % 2 == 0 and index != 0):
        print(x[index])
        y += x[index]
        y += x[index - 1]
0
speckOfDust 31 marzec 2020, 21:27

Zapętlaj z przyrostami co 2 i odwróć znaki w każdej parze.

x = "Hello"
y = x[0]
for i in range(1, len(x), 2):
    chunk = x[i+1:i-1:-1]
    y += chunk
0
Barmar 31 marzec 2020, 21:29

Możesz spakować ciąg podzielony na parzyste i nieparzyste indeksy, ale wypełnij sekwencje pustym ciągiem na różnych końcach, aby uwzględnić warunki brzegowe:

''.join(i for t in zip((*x[::2], ''), ('', *x[1::2])) for i in t)
0
blhsing 31 marzec 2020, 21:46