-
Celem tego filmu jest oswojenie was trochę ze stringami
-
jak również pokazanie wam ich mocy, oraz rzeczy których można z nimi robić.
-
Albo robić za ich pomocą.
-
Więc teraz zamierzam napisać prosty program,
-
który zasadniczo zdefiniuje mi kilka stringów.
-
i potem użyję Python interpretera by trochę się z nimi pobawić
-
i zobaczyć co można z nimi robić.
-
Więc zdefiniujmy string, nazwijmy go "a"
-
i a to powiedzmy "mój pierwszy testowy string."
-
Jak wiemy, string to sekwencja znaków
-
i możesz je rozpoznać, bo mogą być zamknięte zarówno w apostrofach jak i w cudzysłowie( ' ' lub " " ).
-
I żeby udowodnić że wcale nie musi to być cudzysłów, pozwólcie mi zdefiniować b jako
-
'Kolejny testowy string, który zdefiniowałem'
-
w zasadzie możesz używać cudzysłowi wewnątrz cudzysłowi dopóki jasne jest
-
gdzie string się zaczyna i kończy.
-
Więc powiedzmy ze mamy coś takiego
-
"This is Sal's string"
-
Więc w tym przypadku, apostrof jest ok
-
ponieważ interpreter "pomyśli":
-
"O, string zaczyna się od cudzysłowia (")więc muszę szukać kolejnego cudzysłowa(")
-
żeby go zamknąć" Więc nie powie. "O, kończy się na apostrofie('),"
-
zamiast tego powie "Potrzebuję cudzysłowia("). " By wiedział, że to z czym ma do czynienia to string.
-
wie również, że ten apostrof to tylko znak.
-
Jedna rzecz której nie mogę zrobić:
-
Spróbujmy zdefiniować string "d".
-
Więc powiedzmy, zdefiniuję go tak.
-
Więc nie mogę zrobić tak:
-
'This is Sal's string'
-
To nie ma żadnego sensu,
-
Ze względu na to że tutaj, otwieramy string apostrofem
-
zamknie się on dokładnie wtedy, gdy natrafi na kolejny apostrof.
-
i wszystko to [s string] będzie tylko tekstem
-
który interpreter weźmie za jakąś część programu,
-
i zawiesi się na nim.
-
Więc jeżeli chcecie żeby to działało, nie możecie tego tak zostawić.
-
Możecie zrobić coś takiego:
-
'Sal's-- nie, tak nie możecie
-
............'My favourite word is....'(moje ulubione słowo to...)
-
I w zasadzie nie wiem jakie jest moje ulubione słowo, trochę się wkopałem.
-
Ale powiedzmy ze moim ulubionym słowem jest asparagus (szparag)
-
Asparagus. Nie wiem nawet jak to zapisać As,asparagus.
-
Więc 'My favourite word is "aspraraus", what is yours?'
(Moje ulubione słowo to "szparag", Jakie jest twoje?)
-
i znowu to jest prawidłowe, ponieważ zacząłem string apostrofem i to myśli:
-
"Nie kończmy stringu dopóki nie dostaniemy kolejnego apostrofu."
-
Więc to nie jest tak że interpreter zgubi się gdy zobaczy pierwszy cudzysłów
-
ponieważ wie, że string został zaczęty od apostrofu.
-
Pozwólcie, że pokażę inne przykłady stringów,
które będą ciekawym wyzwaniem.
-
nie zawsze muszą być nazwane szablonowo, więc nazwijmy go "math_string" (string matematyczny).
-
I tu wpiszemy, powiedzmy " 3+4*2"
-
Więc to jest "math_string", zwykły ciąg znaków.
-
Interpreter nie będzie brał pod uwagę ich wartości, pokaże natomiast tylko ciag znaków.
-
Myślę, że to całkiem dobry-- pozwólcie że zrobię kolejny pseudo-matematyczny string
-
albo zróbmy jakieś wyrażenie, niech nazywa się "expression string"
-
to jest tylko nazwa zmiennej, i powiedzmy że mój "expression string" ma wartość
-
"a+' 'b+'tiger' "
("a+''b+'tygrys'" )
-
Wszystko co pomiędzy podwójnymi apostrofami
-
interpreter pokaże jako ciąg znaków.
-
Jest kilka interesujących rzeczy które możemy teraz w końcu zrobić zrobić.
-
Starczy definiowania stringów, wiec zapiszmy plik i odpalmy go.
-
Mamy tutaj zdefiniowane stringi
-
i możemy je zweryfikować, wpisując na przykład "a", "My first test string"
-
"b", 'Another test string that i have defined,'
-
"c","This is Sal's string"
-
"d", 'My favourite word is...
-
aspara-...
-
asparaus'
(odkrył literówkę)
-
Nawet nie umiem poprawnie zapisac "asparagus", będzie trzeba to poprawić.
-
'asparaus, what is yours?'
-
Potrzeba "g" asparaGus! (szparag)
-
'What is yours?'
-
I dalej mamy ...
-
Możemy sprawdzić jak wygląda "math_string"
-
math_string jest dosłownie ciągiem znaków.
-
Następnie mamy "expression_string"
-
"expression_string" też jest dosłownie ciągiem znaków.
-
Teraz zacznijmy zabawę z tymi stringami i sprawdzmy co można z nimi zrobić.
-
Jest parę rzeczy o które możemy spytać, na przykład "Jak długi jest ten string? "
-
I możemy uzyc wbudowanej funkcji Pythona len(), [skrót od lenght] (lenght-długość)
-
Więc len() od a [len(a)],
-
mówi nam - W a jest 20 znaków!
-
Sprawdźmy to, policzmy je.
-
1,2,spacja jest znakiem!
-
{liczy do dwudziestu}
-
Tak, dwadzieścia znaków!
-
Jaka jest len(math_string)?
-
len- length w skrócie.
-
"math_string" składa się z pięciu znaków, policzmy je.
-
1,2,3,4,5 znaków. To ma sens.
-
Możemy zrobić to dla każdego z nich i zachęcam was do zrobienia tego samemu.
-
Naprawdę, eksperymentujcie, oswajajcie się z tym.
-
Kolejną rzeczą, jaką chciałbym wam pokazać jest to jak zespolić dwa stringi.
-
Brzmi wymyślnie, ale tak naprawdę znaczy tyle co połączyć dwa stringi.
-
Więc dla przykładu stwórzmy nowy string, nazwiemy go,
-
"awithb", i zdefiniujmy go jako a+b
-
'Another test string that I have defined,'
-
a jest przyłączone do końca b.
-
Możesz robić ze stringami bardzo ciekawe rzeczy:
-
jeżeli zrobiliśmy... masthstring+expressionstring
-
nie będę tworzył dla tego zmiennej, zobaczę tylko co się stanie jak spróbuję znaleźć wartość...
-
mathstring+expressionstring
-
teraz, zasadniczo mam te dwa stringi dodane do siebie
-
i ten string znalazł się na końcu tego,
-
widzicie to tutaj, efekt wygląda trochę dziwacznie
-
ale to string! Wszystko pomiędzy tymi znakami, wszystko pomiędzy podwójnymi uszami
-
jest pokazywane jako znaki. To są tylko znaki.
-
Jest ...
-
innych rzeczy które możemy robić ze stringami, nie zamierzam wam ich wszystkich przedstawiać.
-
Ale jeśli mowa o stringach to to mamy do nich cały arsenał funkcji
-
i jeżeli pracujesz w zintegrowanym środowisku programistycznym (IDE), często podpowie ci ono,
-
jakie funkcje możesz wykorzystać.
-
Na przykład,
-
możesz chcieć rozdzielić -split(), gdybyś chciał liste wszystkich słów w tym stringu.
-
Więc napisze program, w którym wezmę string który mam w "b"
-
i pokaże każde ze słów jako oddzielny element listy.
-
Więc, mogę teraz wpisać b kropka (b.) i wywołać jedną z metod dla b
-
będziemy przerabiali dużo więcej metod i elementów programowania obiektowego (OOP),
-
ale możemy pojmować b jako obiekt tekstowy, i ma on wtedy swoje własne metody i można wykonywać na nim operacje.
-
Jak na dziś możemy tylko powiedzieć,
-
"O jeżeli chce podzielić b na kawałki, mogę użyć metody split()."
-
Więc gdy mówię podzielić, mam na myśli odseparować od siebie części danego string'a.
-
zrobić z niego listę przecinając go gdziekolwiek widzimy spację.
-
Więc, zobaczmy co otrzmamy gdy to wykonamy.
-
Zauważ : wziąłem ten string, "Another test string that i have defined"
-
podzielił string na każdej spacji
-
i pokazał jego części w formie listy.
-
Może to być przydatne gdy będziecie przetwarzali stringi.
-
Ale musicie wiedzieć, że znakiem który przedziela ciąg nie musi być spacja,
-
możesz powiedzieć "b.split() i powiedzmy przedziel, gdziekolwiek będzie 't' "
-
możesz dzielić na "t" i to da jakieś dziwnie wyglądające efekty...
-
Zauważ: za kazdym razem gdy pojawiała się w tekście litera 't', program rozdzielał go,
-
i to co było po obu stronach ' t' zostało umieszczone jako oddzielne elementy na liście.
-
Bardzo interesującą rzeczą jest to, że możesz wyszukiwać gdzie dany znak jest wewnątrz ciągu.
-
Więc przykładowo przywołajmy math_string, i
-
chce znaleźć gwiazdkę. (kolejne słowo z wymówieniem którego mam problem.)
-
Więc find() -funkcja oznaczająca "znajdź" - gwiazdkę. Powiedz mi który znak jest gwiazdką (o ile którykolwiek nią jest).
-
Mówi on nam, że trzeci znak jest gwiazdką.
-
Sprawdźmy to.
-
Więc to jest zerowy znak- początek - tak jest przyjęte w większości
-
programów. Zerowy znak, pierwszy znak, drugi znak, trzeci znak...
-
...to gwiazdka.
-
Jeżeli chciałbyś znaleźć '3' i gorąco zachęcam do takiego eksperymentowania,
-
find() 3 ! To tutaj zerowy znak.
-
Teraz, są jeszcze inne funkcje. Możesz zamienić znaki za pomocą replace() . Możesz powiedzieć,
-
"O, weźmy zamieńmy wszystkie 'c' ," i możesz sprawdzić w książkach,
-
albo po prostu poszukać w sieci i normalnie znaleźć wszystkie biblioteki dotyczące Python'owskich stringów.
-
Jeżeli masz I.D.E. , zasugeruje ci ono co możesz zrobić ze stringami
*I.D.E. - zintegrowane środowisko programistyczne
-
i jak to zrobić.
-
Ale powiedzmy że w miejsce każdego 'i' w stringu c,chcemy wstawić 'o'.
-
Zobaczmy co otrzymamy.
-
Jak widzicie, to był "This is Sal's string",
-
i zastąpiliśmy każde ''i' , za pomocą 'o'. Chce żeby to było jasne; nie zmieniliśmy stringu c!
-
Program stworzył kopię c, z 'i' zastąpionymi, 'o'.
-
Efektem jest "Thos os Sal's strong."
-
(brzmi jak jakiś nordycki język.)
-
I żeby było jasne, c się nie zmieniło.
-
Ale gdybym powiedział c = c.replace('i','o')
-
to c by sie zmieniło na "Thos os Sal's strong"
-
Teraz ostatnią już rzeczą którą chciałbym wam pokazać jest bardzo magiczna funkcja (przynajmniej z mojego punktu widzenia).
-
I jest to funkcja eval() .
-
I istnieje ona w językach interpretowanych takich jak Python (występuje również w JavaScripcie)
-
Not Synced
Mógłbym wywołać metodę split(), i tu pojawia się pytanie na czym chciałbym je podzielić.
-
Not Synced
dużo, dużo, dużo, dużo