Wpis z mikrobloga

Jak zrobić jednoczesną zamianę znaków w stringu tak żeby na miejsce jednego wskoczył drugi i vice versa? Dla przykładu mam string "wykop" i chcę zamienić litery w i p, tak żeby wynik to był "pykow". Jedyne co udało mi się uzyskać to "wykow" albo "pykop", bo zawsze się jakby nadpisuje to i już nie wiem co robić.

#python #naukaprogramowania
  • 25
@Pally:
"wykop".replace("w", "$p").replace("p", "w").replace("$w", "p")

"wykop" -> "$wykop" -> "$wykow" -> "pykow"

Po prostu placeholder. W miejsce $ możesz wstawić cokolwiek czego nie masz w tekście. Np. "$w", "$w$", "-w-" itp.
@Pally: żebyś się nauczył o co chodzi i jak ważne to w programowaniu.

Jak masz dwie zmienne i chcesz zamienić ich wartości ze sobą, to co zrobisz?

Np. masz:
a = 2
b = 3

A chcesz mieć
a = 3
b = 2
To co zrobisz?

Jak zrobisz:
a = b
b = a
To wynik będzie:
a = 3 (bo obecnie b = 3 i to jest ok)
b
w pythonie robisz a, b = b, a


@maxiuu: no jak widać nie robisz. To działa tylko na zmiennych w Pythonie. Ogólnie jak zamieniasz jakieś dane, to nie mogą się one znaleźć w powietrzu i muszą być gdzieś zapisane. To że możesz tak zrobić w Pythonie ze zmiennymi, to tylko syntax sugar i Python robi ci miejsce w pamięci. Na świeci istnieje nie tylko taki język programowania. Warto mieć ogólną wiedzę
@mk321: pytanie było konkretnie o pythona więc używanie tempa w tej sytuacji jest co najmniej dziwne i przez żadne code review by nie przeszło

mam sobie przejrzeć wszystkie stringi na całym świecie i sprawdzić czego w żadnym z nich nie ma? piszesz funkcję zamieniającą dwa znaki w słowie czy zamieniającą konkretne dwa znaki w konkretnym słowie?

i gdzie masz zabezpieczenie przed podaniem 10 terabajtowego stringa w swoim rozwiązaniu, mordo? ( ͡
via Wykop Mobilny (Android)
  • 0
@maxiuu: nie wiesz, że żeby sprawdzić czy coś jest w stringu to możesz użyć funkcji find() a nie ręczne szukać? xD

Gdzie w moim rozwiązaniu użyłem tempa? Użyłem replace().

O tempie opowiadałem, żeby było wiadomo skąd się to wzięło, bo było otagowane #naukaprogramowania.

Jak bardzo chcesz to napisz rozwiązanie z konstrukcją a = b, b = c.

Twoje rozwiązanie by nie przeszło przez żadne code review, bo jest przekombinowane, nieczytelne
@maxiuu: problem nie mówi, że ma być zamieniona każda litera.

Innymi słowy:

"Nie szukaj problemów tam gdzie ich nie ma"

"Nadgorliwość gorsza od faszyzmu"


xD

Ale można by uświadomić @Pally o takiej możliwości :>
find()


@mk321: widać jak kolega wyżej zastosował i czemu nie działa nie będę drugi raz opowiadał, znałeś translate moje gratulacje, co tam jest nieczytelne? według mnie bardzo krok po kroku obrazuje moje rozumowanie i spokojnie można by tam urwać z 3-4 linijki ale chciałem żeby OP zrozumiał

@patrolez: no tak jak to mówią "strzelał z tego nikt nie będzie"? (σ ͜ʖσ)
widać jak kolega wyżej zastosował i czemu nie działa


@maxiuu: kto i gdzie zastosował find()? Wyraźnie napisałem po co to stosować i nie będę powtarzał.