< Return to Video

Zabawa ze Stringami

  • 0:02 - 0:04
    Celem tego filmu jest oswojenie was trochę ze stringami
  • 0:05 - 0:07
    jak również pokazanie wam ich mocy, oraz rzeczy których można z nimi robić.
  • 0:08 - 0:10
    Albo robić za ich pomocą.
  • 0:11 - 0:12
    Więc teraz zamierzam napisać prosty program,
  • 0:12 - 0:15
    który zasadniczo zdefiniuje mi kilka stringów.
  • 0:17 - 0:18
    i potem użyję Python interpretera by trochę się z nimi pobawić
  • 0:18 - 0:19
    i zobaczyć co można z nimi robić.
  • 0:19 - 0:21
    Więc zdefiniujmy string, nazwijmy go "a"
  • 0:23 - 0:25
    i a to powiedzmy "My first test string."
    *mój pierwszy testowy string.
  • 0:33 - 0:36
    Jak wiemy, string to sekwencja znaków
  • 0:38 - 0:40
    i możesz je rozpoznać, bo mogą być zamknięte zarówno w pojedynczych jak i podwójnych "uszach"( ' ' lub " " ).
  • 0:42 - 0:46
    I żeby udowodnić że wcale nie musi to być cudzysłów, pozwólcie mi zdefiniować b jako
  • 0:46 - 0:54
    'Another test string that I have defined'
    *Kolejny testowy string, który zdefiniowałem
  • 0:54 - 0:57
    I żeby pokazać jak można definiować stringi,
  • 0:59 - 1:01
    w zasadzie możesz używać uszu wewnątrz uszu dopóki jasne jest
  • 1:01 - 1:04
    gdzie string się zaczyna i kończy.
  • 1:04 - 1:06
    Więc powiedzmy ze mamy coś takiego
  • 1:06 - 1:14
    "This is Sal's string"
    *to jest string Sala
  • 1:18 - 1:20
    Więc w tym przypadku, apostrof jest ok
  • 1:20 - 1:23
    ponieważ interpreter "pomyśli":
  • 1:26 - 1:27
    "O, string zaczyna się od cudzysłowia (")więc muszę szukać kolejnego cudzysłowia(")
  • 1:29 - 1:30
    żeby go zamknąć" Więc nie powie. "O, kończy się na apostrofie('),"
  • 1:32 - 1:34
    zamiast tego powie "Potrzebuję cudzysłowia("). " By wiedział, że to z czym ma do czynienia to string.
  • 1:34 - 1:37
    wie również, że ten apostrof to tylko znak.
  • 1:37 - 1:40
    Jedna rzecz której nie mogę zrobić:
  • 1:40 - 1:42
    Spróbujmy zdefiniować string "d".
  • 1:42 - 1:45
    Więc powiedzmy, zdefiniuję go tak.
  • 1:45 - 1:46
    Zatem, nie mogę zrobić tak:
  • 1:46 - 1:50
    'This is Sal's string'
  • 1:50 - 1:52
    To nie ma żadnego sensu,
  • 1:52 - 1:55
    Ze względu na to że tutaj, otwieramy string apostrofem
  • 1:57 - 1:59
    zamknie się on dokładnie wtedy, gdy natrafi na kolejny apostrof.
  • 1:59 - 2:00
    i wszystko to [s string] będzie tylko tekstem
  • 2:02 - 2:04
    który interpreter weźmie za jakąś część programu,
  • 2:04 - 2:05
    i zawiesi się na nim.
  • 2:06 - 2:07
    Więc jeżeli chcecie żeby to działało, nie możecie tego tak zostawić.
  • 2:07 - 2:14
    Możecie zrobić coś takiego:
  • 2:16 - 2:18
    'Sal's-- nie, tak nie możecie
  • 2:20 - 2:21
    są sposoby żeby to zrobić, ale nie będziemy wchodzić w znaki wyjścia
  • 2:21 - 2:25
    to tyle co do nich, ale, 'My favourite word is....'
    *moje ulubione słowo to...
  • 2:27 - 2:29
    I w zasadzie nie wiem jakie jest moje ulubione słowo, trochę się wkopałem.
  • 2:29 - 2:34
    Ale powiedzmy ze moim ulubionym słowem jest asparagus (szparag)
  • 2:36 - 2:38
    Asparagus. Nie wiem nawet jak to zapisać As,asparagus.
  • 2:38 - 2:44
    Więc 'My favourite word is "aspraraus", what is yours?'
    *Moje ulubione słowo to "szparag", Jakie jest twoje?
  • 2:46 - 2:48
    i znowu to jest poprawne, ponieważ zacząłem string apostrofem i program myśli:
  • 2:50 - 2:52
    "Nie skończę stringu dopóki nie dostaniemy kolejnego apostrofu."
  • 2:55 - 2:57
    Więc to nie jest tak że interpreter zgubi się gdy zobaczy pierwszy cudzysłów
  • 2:58 - 3:00
    ponieważ wie, że string został zaczęty od apostrofu.
  • 3:02 - 3:04
    Pozwólcie, że pokażę inne przykłady stringów,
    które będą ciekawym wyzwaniem.
  • 3:06 - 3:10
    nie zawsze muszą być nazwane szablonowo, więc nazwijmy go "math_string" .
    *string_matematyczny
  • 3:10 - 3:19
    I tu wpiszemy, powiedzmy "3+4*2"
  • 3:21 - 3:22
    Więc to jest "math_string", zwykły ciąg znaków.
  • 3:25 - 3:28
    Interpreter nie będzie brał pod uwagę ich wartości, pokaże natomiast tylko ciąg znaków.
  • 3:31 - 3:34
    Myślę, że to całkiem dobry-- pozwólcie że zrobię kolejny pseudo-matematyczny string
  • 3:35 - 3:37
    albo zróbmy jakieś wyrażenie, niech nazywa się "expression string"
    *string wyrażeniowy
  • 3:39 - 3:44
    to jest tylko nazwa zmiennej, i powiedzmy że mój "expression string" ma wartość
  • 3:52 - 4:01
    "a+' 'b+' tiger' "
    * tygrys
  • 4:04 - 4:06
    Wszystko co pomiędzy podwójnymi uszami
  • 4:08 - 4:10
    interpreter pokaże jako ciąg znaków.
  • 4:12 - 4:14
    Jest kilka interesujących rzeczy które możemy teraz w końcu zrobić.
  • 4:16 - 4:20
    Starczy definiowania stringów, wiec zapiszmy plik i odpalmy go.
  • 4:21 - 4:23
    Mamy tutaj zdefiniowane stringi
  • 4:24 - 4:26
    i możemy je zweryfikować, wpisując na przykład "a", "My first test string"
  • 4:26 - 4:28
    "b", 'Another test string that i have defined,'
  • 4:28 - 4:31
    "c","This is Sal's string"
  • 4:31 - 4:33
    "d", 'My favourite word is...
  • 4:33 - 4:34
    aspara-...
  • 4:34 - 4:34
    asparaus'
    (odkrył literówkę)
  • 4:36 - 4:37
    Nawet nie umiem tego poprawnie zapisać "asparagus", będzie trzeba to poprawić.
  • 4:37 - 4:39
    'asparaus, what is yours?'
  • 4:39 - 4:41
    Potrzeba "g" asparaGus!
    *szparag
  • 4:41 - 4:43
    'What is yours?'
  • 4:44 - 4:46
    I dalej mamy ...
  • 4:46 - 4:48
    Możemy sprawdzić jak wygląda "math_string"
  • 4:48 - 4:50
    math_string jest jedynie ciągiem znaków.
  • 4:50 - 4:52
    Następnie mamy "expression_string"
  • 4:52 - 4:57
    "expression_string" też jest tylko ciągiem znaków.
  • 5:00 - 5:01
    Teraz zacznijmy zabawę z tymi stringami i sprawdźmy co można z nimi zrobić.
  • 5:03 - 5:04
    Jest parę rzeczy o które możemy spytać, na przykład "Jak długi jest ten string? "
  • 5:08 - 5:10
    I możemy użyc wbudowanej funkcji Pythona len(),
    [skrót od lenght]
    *długość
  • 5:10 - 5:14
    Więc len() od a [len(a)],
  • 5:14 - 5:17
    mówi nam - "W a jest 20 znaków!"
  • 5:17 - 5:18
    Sprawdźmy to, policzmy je.
  • 5:18 - 5:20
    1,2,spacja jest znakiem!
  • 5:20 - 5:29
    {liczy do dwudziestu}
  • 5:29 - 5:30
    Tak, dwadzieścia znaków!
  • 5:30 - 5:35
    Jaka jest len(math_string)?
  • 5:35 - 5:37
    len- length w skrócie.
    *długość
  • 5:38 - 5:39
    "math_string" składa się z pięciu znaków, policzmy je.
  • 5:42 - 5:44
    1,2,3,4,5 znaków. To ma sens.
  • 5:44 - 5:46
    Możemy zrobić to dla każdego z nich i zachęcam was do zrobienia tego samemu.
  • 5:46 - 5:48
    Naprawdę, eksperymentujcie, oswajajcie się z tym.
  • 5:50 - 5:52
    Kolejną rzeczą, jaką chciałbym wam pokazać jest to jak zespolić dwa stringi.
  • 5:53 - 5:55
    Brzmi wymyślnie, ale tak naprawdę znaczy tyle co połączyć dwa ciągi, jeden z drugim.
  • 5:58 - 6:01
    Więc dla przykładu stwórzmy nowy string, nazwiemy go,
  • 6:01 - 6:08
    "awithb", i zdefiniujmy go jako a+b
    *azb
  • 6:08 - 6:10
    Robię właśnie bardzo ciekawą rzecz.
  • 6:10 - 6:12
    Przywykłeś do używania znaku dodawania (+) z liczbami,
  • 6:12 - 6:16
    ale, ja zaraz dodam do siebie dwa stringi.
  • 6:16 - 6:18
    Spójrzmy jak to wygląda
  • 6:18 - 6:21
    Także, spójrzmy jak wygląda awithb.
  • 6:21 - 6:23
    awithb jes tylko zmienną.
  • 6:23 - 6:25
    Co sie stało?
  • 6:28 - 6:30
    Miałem a, czyli "My first string," i b, czyli 'Another test string that i have defined'
  • 6:32 - 6:34
    Gdy wpisałem a+b, program wziął a, "My first test string,"
  • 6:34 - 6:36
    i dodał b do jego końca!
  • 6:38 - 6:41
    i zespolił b z a -- zespolić to tylko mądre słowo znaczące
    "złożyć je do kupy"
  • 6:41 - 6:43
    'Another test string that I have defined,'
    *kolejny testowy string który zdefiniowałem
  • 6:45 - 6:47
    także, program scalił a-- myślę że mógłbym to wyświetlić, przyłączył b do końca a.
  • 6:48 - 6:51
    Możesz to zrobić inaczej, mógłbyś to wywołać,
  • 6:51 - 6:54
    bwitha, powiedzmy że to będzie b+a.
  • 6:56 - 6:58
    i teraz zobaczmy jak wyglada bwitha..
  • 6:58 - 6:59
    teraz jest odwrócony w drugą stronę.
  • 6:59 - 7:01
    a jest przyłączone do końca b.
  • 7:01 - 7:03
    Możesz robić ze stringami bardzo ciekawe rzeczy:
  • 7:03 - 7:07
    jeżeli zrobiliśmy... masthstring+expressionstring
  • 7:09 - 7:10
    nie będę tworzył dla tego zmiennej, zobaczę tylko co się stanie jak spróbuję znaleźć wartość...
  • 7:10 - 7:16
    mathstring+expressionstring
  • 7:16 - 7:20
    teraz, zasadniczo mam te dwa stringi dodane do siebie
  • 7:20 - 7:23
    i ten string znalazł się na końcu tego,
  • 7:24 - 7:25
    widzicie to tutaj, efekt wygląda trochę dziwacznie
  • 7:27 - 7:29
    ale to string! Wszystko pomiędzy tymi znakami, wszystko pomiędzy podwójnymi uszami
  • 7:31 - 7:33
    jest pokazywane jako znaki. To są tylko znaki.
  • 7:33 - 7:35
    Jest ...
  • 7:36 - 7:39
    innych rzeczy które możemy robić ze stringami, nie zamierzam wam ich wszystkich przedstawiać.
  • 7:39 - 7:41
    Ale jeśli mowa o stringach to to mamy do nich cały arsenał funkcji
  • 7:43 - 7:44
    i jeżeli pracujesz w zintegrowanym środowisku programistycznym (IDE), często podpowie ci ono,
  • 7:44 - 7:45
    jakie funkcje możesz wykorzystać.
  • 7:45 - 7:46
    Na przykład,
  • 7:48 - 7:51
    możesz chcieć rozdzielić -split(), gdybyś chciał liste wszystkich słów w tym stringu.
  • 7:53 - 7:56
    Więc napisze program, w którym wezmę string który mam w "b"
  • 7:58 - 7:59
    i pokaże każde ze słów jako oddzielny element listy.
  • 8:02 - 8:05
    Więc, mogę teraz wpisać b kropka (b.) i wywołać jedną z metod dla b
  • 8:06 - 8:09
    będziemy przerabiali dużo więcej metod i elementów programowania obiektowego (OOP),
  • 8:12 - 8:14
    ale możemy pojmować b jako obiekt tekstowy, i ma on wtedy swoje własne metody i można wykonywać na nim operacje.
  • 8:14 - 8:15
    Jak na dziś możemy tylko powiedzieć,
  • 8:20 - 8:22
    "O, jeżeli chce podzielić b na kawałki, mogę użyć metody split()."
  • 8:30 - 8:32
    Więc gdy mówię podzielić, mam na myśli odseparować od siebie części danego string'a.
  • 8:36 - 8:37
    zrobić z niego listę przecinając go gdziekolwiek widzimy spację.
  • 8:37 - 8:40
    Więc, zobaczmy co otrzymamy gdy to wykonamy.
  • 8:41 - 8:43
    Zauważ : wziąłem ten string, "Another test string that i have defined"
  • 8:45 - 8:48
    pociął string na każdej spacji
  • 8:48 - 8:50
    i pokazał jego części w formie listy.
  • 8:51 - 8:53
    Może to być przydatne przy przetwarzaniu stringów.
  • 8:54 - 8:59
    Ale musicie wiedzieć, że znakiem który przedziela ciąg nie musi być spacja,
  • 9:02 - 9:05
    możesz powiedzieć "b.split() i powiedzmy przedziel, gdziekolwiek będzie 't' "
  • 9:07 - 9:09
    możesz dzielić na "t" i to da jakieś dziwnie wyglądające efekty...
  • 9:11 - 9:13
    Zauważ: za każdym razem gdy pojawiała się w tekście litera 't', program rozdzielał go,
  • 9:15 - 9:19
    i to co było po obu stronach ' t' zostało umieszczone jako oddzielne elementy na liście.
  • 9:22 - 9:25
    Bardzo interesującą rzeczą jest to, że możesz wyszukiwać gdzie dany znak jest wewnątrz ciągu.
  • 9:33 - 9:35
    Więc przykładowo przywołajmy math_string, i
  • 9:37 - 9:39
    chce znaleźć gwiazdkę. (kolejne słowo z wymówieniem którego mam problem.)
  • 9:42 - 9:45
    Więc find() -funkcja oznaczająca "znajdź" - gwiazdkę. Powiedz mi który znak jest gwiazdką (o ile którykolwiek nią jest).
  • 9:45 - 9:47
    Mówi on nam, że trzeci znak jest gwiazdką.
  • 9:47 - 9:49
    Sprawdźmy to.
  • 9:53 - 9:55
    Więc to jest zerowy znak- początek - tak jest przyjęte w większości
  • 9:56 - 9:58
    programów. Zerowy znak, pierwszy znak, drugi znak, trzeci znak...
  • 9:58 - 10:00
    ...to gwiazdka.
  • 10:02 - 10:05
    Jeżeli chciałbyś znaleźć '3' i gorąco zachęcam do takiego eksperymentowania,
  • 10:07 - 10:09
    find() 3 ! To tutaj zerowy znak.
  • 10:11 - 10:13
    Teraz, są jeszcze inne funkcje. Możesz zamienić znaki za pomocą replace() . Możesz powiedzieć,
  • 10:22 - 10:25
    "O, zamieńmy wszystkie 'c' ," i możesz sprawdzić w książkach,
  • 10:26 - 10:29
    albo po prostu poszukać w sieci i normalnie znaleźć wszystkie biblioteki dotyczące Python'owskich stringów.
  • 10:31 - 10:34
    Jeżeli masz I.D.E. , zasugeruje ci ono co możesz zrobić ze stringami
    *I.D.E. - zintegrowane środowisko programistyczne
  • 10:34 - 10:35
    i jak to zrobić.
  • 10:38 - 10:43
    Ale powiedzmy że w miejsce każdego 'i' w stringu c,chcemy wstawić 'o'.
  • 10:43 - 10:45
    Zobaczmy co otrzymamy.
  • 10:45 - 10:50
    Jak widzicie, to był "This is Sal's string",
  • 10:52 - 10:53
    i zastąpiliśmy każde ''i' , za pomocą 'o'. Chce żeby to było jasne; nie zmieniliśmy stringu c!
  • 10:53 - 10:57
    Program stworzył kopię c, z 'i' zastąpionymi, 'o'.
  • 10:57 - 11:00
    Efektem jest "Thos os Sal's strong."
  • 11:00 - 11:04
    (brzmi jak jakiś nordycki język.)
  • 11:04 - 11:07
    I żeby było jasne, c się nie zmieniło.
  • 11:07 - 11:17
    Ale gdybym powiedział c = c.replace('i','o')
  • 11:17 - 11:22
    to c by się zmieniło na "Thos os Sal's strong"
  • 11:24 - 11:26
    Teraz ostatnią już rzeczą którą chciałbym wam pokazać jest bardzo magiczna funkcja (przynajmniej z mojego punktu widzenia).
  • 11:27 - 11:28
    I jest to funkcja eval() .
  • 11:32 - 11:34
    I istnieje ona w językach interpretowanych takich jak Python (występuje również w JavaScripcie)
  • 11:37 - 11:39
    I co jest naprawdę fajne, to to że ta funkcja potrafi policzyć wartość stringu. Może pokazywać string,
  • 11:42 - 11:44
    możesz to traktować jako string przez chwile, i możesz go zbudować, żebyś mógł, na przykład,
  • 11:46 - 11:49
    mieć program który pisze kolejny program wewnątrz stringu i potem oblicza jego wartość.
  • 11:49 - 11:52
    To powinno cię trochę, skłonić do filozoficznych myśli.
  • 11:55 - 11:57
    Więc powiedzmy math_string to tylko ciąg znaków.
  • 12:02 - 12:07
    Ale jeśli powiem eval(math_sting) interpreter obliczy wartość tego co jest w środku.
  • 12:07 - 12:09
    Więc zasadniczo traktuje to jako wyrażenie.
  • 12:10 - 12:11
    I dostaje 11, wiec program wziął math_string i mówi,
  • 12:11 - 12:13
    "Okej, teraz potraktuje to jako program,"
  • 12:16 - 12:18
    więc mamy "3+42 ", kolejność działań, robi 42 jako pierwsze i to jest 8
  • 12:18 - 12:21
    3+8 to 11.
  • 12:21 - 12:23
    I możesz robić jeszcze fajniejsze rzeczy!
  • 12:24 - 12:26
    Możesz wpisać "eval()" ,pomyślmy...,
    "math_string ".
  • 12:31 - 12:33
    i dodajmy do math_string znak, znak '1'.
  • 12:33 - 12:34
    I zobaczmy co otrzymamy.
  • 12:34 - 12:37
    Otrzymaliśmy 87, co on zrobił?
  • 12:37 - 12:39
    Więc, to co zrobił to,
  • 12:39 - 12:42
    math_string to jest to, ale jeśli dodamy do niego 1,
  • 12:43 - 12:45
    wyglądałby tak [3+4*21], 2. stałaby sie 21.,
  • 12:51 - 12:53
    doczepiamy 1 na końcu stringu. Więc otrzymujemy 4*21 to się równa 84, a po zsumowaniu z 3. otrzymujemy 87.
  • 12:54 - 12:56
    Możemy robić różne rzeczy, obliczmy teraz wartość expression_string ,
  • 12:56 - 12:57
    dlatego go takim ustanowiłem.
  • 12:57 - 13:02
    eval(expression_string)
  • 13:03 - 13:04
    Bardzo fajna zabawa, mógłbym to robić całymi dniami!
  • 13:04 - 13:06
    eval(expression_string)
  • 13:07 - 13:08
    Pamiętaj, expression_string to tylko string, ale gdy obliczasz jego wartość,
  • 13:08 - 13:10
    Możesz chcieć zatrzymać i pomyśleć o tym co otrzymasz.
  • 13:10 - 13:12
    Więc sprawdźmy jego wartość.
  • 13:12 - 13:14
    Dostałem całe to szaleństwo! Skąd to się wzięło?
  • 13:14 - 13:17
    Odpowiedź jest prosta : w stringu były dwa znaki 'a' i 'b'
  • 13:20 - 13:22
    ale gdy obliczamy jego wartość, w tym kontekście 'a' i 'b' reprezentują zmienne typu string.
  • 13:26 - 13:27
    Więc jeśli badasz wartość c, to program odpowie ci
    "Okej, a to string 'My first text string', "
  • 13:27 - 13:30
    dołącza tę spację na końcu, więc,
  • 13:31 - 13:32
    "My first test string" i potem mamy spację,
  • 13:34 - 13:38
    a potem dodaje b na samym końcu a więc "Another test string I have defined,"
  • 13:38 - 13:39
    dalej dołącza...
  • 13:39 - 13:41
    dołącza...
  • 13:41 - 13:42
    SPACJA TYGRYS
  • 13:42 - 13:44
    i potem mamy spację i tygrysa
  • 13:44 - 13:46
    Więc zostawiam was z tyn...
  • 13:46 - 13:47
    Jak możecie sobie wyobrazić stringi są,
  • 13:47 - 13:50
    super super duper
  • 13:50 - 13:51
    potężnym narzędziem podczas robienia przeróżnych aplikacji.
  • 13:54 - 13:56
    To co wam pokazałem to tylko malutka część, tego co można z nimi robić.
  • 13:56 - 13:58
    Zachęcam was zatem do eksperymentów.
  • Not Synced
    Mogę więc wywołać metodę split(), ale tu pojawia się pytanie na czym chciałbym je podzielić.
  • Not Synced
    dużo, dużo, dużo, dużo
  • Not Synced
    super
  • Not Synced
    super super
Title:
Zabawa ze Stringami
Description:

Experimenting and seeing what we can do with strings

more » « less
Video Language:
English
Duration:
13:58
jasiekspirifer edited Polish subtitles for Fun with Strings
jasiekspirifer edited Polish subtitles for Fun with Strings
jasiekspirifer edited Polish subtitles for Fun with Strings
jasiekspirifer edited Polish subtitles for Fun with Strings
jasiekspirifer edited Polish subtitles for Fun with Strings
jasiekspirifer edited Polish subtitles for Fun with Strings
jasiekspirifer edited Polish subtitles for Fun with Strings
jasiekspirifer edited Polish subtitles for Fun with Strings
Show all

Polish subtitles

Incomplete

Revisions Compare revisions