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ć.
@mk321: w pythonie robisz a, b = b, a rozwiązanie z placeholderem też do dupy bo co jak w stringu już będzie $p? co to jest sortowanie "bombelkowe"? bombelki to masz na profilach karyn na fejsie
@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ę z programowania, bo przydaje się i wtedy wiesz, że nie możesz tak zrobić z literami w stringu.
@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? (
@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"? (╭☞σ͜ʖσ)╭
@mk321: @Pally: I dokładnie o to rozwiązanie z str.maketrans i str.stranslate mi chodziło, tylko już go nie pamiętałem za dobrze, jest ono bezkonkurencyjnie najszybsze.
#python #naukaprogramowania
"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.
Jak masz dwie zmienne i chcesz zamienić ich wartości ze sobą, to co zrobisz?
Np. masz:
a
rozwiązanie z placeholderem też do dupy bo co jak w stringu już będzie $p?
co to jest sortowanie "bombelkowe"? bombelki to masz na profilach karyn na fejsie
@Pally:
https://pastebin.com/RdDK3Y9s
@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ę z programowania, bo przydaje się i wtedy wiesz, że nie możesz tak zrobić z literami w stringu.
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? (
In [22]: def swap(a, c1, c2):
...: a=list(a)
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
Innymi słowy:
@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"? (╭☞σ ͜ʖσ)╭
@maxiuu: @patrolez: w jednej :P
print('wykop'.translate(str.maketrans({'w': 'p', 'p': 'w'})))
@maxiuu: kto i gdzie zastosował find()? Wyraźnie napisałem po co to stosować i nie będę powtarzał.
4 ( łopatologicznie bo uczę sie od 2 tygodni)
a=str("wykop")
b,c=a[0],a[-1]
x,y=b,c
print(y+a[1:-1]+x)