W poprzednim wpisie omówiliśmy typy i zmienne, w tym typ String. Jeszcze chwilę uwagi poświęcimy tekstom i ich modyfikowaniu – jest to temat łatwy i przyjemny, obiecuję 😉
Napisy jako typ sekwencyjnym
Typ sekwencyjny (złożony) oznacza, że w jednej zmiennej możemy przechować wiele wartości (w przeciwieństwie do typów prostych, które mogą przechowywać tylko jedną wartość np. int).
Jeden napis (łańcuch znaków) może zawierać wiele znaków.
napis1="ciasto czekoladowe"
>>>
napis2="babeczki truskawkowe"
Aby sprawdzić ile znaków zawiera łańcuch możemy „zmierzyć” jego długość funkcją len().
len(napis1)
18
>>>
len(napis2)
20
>>>
len(napis1+napis2)
38
>>>
len(napis1)+len(napis2)
38
Jaka różnica jest między przedostatnim i ostatnim sprawdzeniem.
Typ sekwencyjny pozwala na dostęp do każdego swojego elementu z osobna – analogicznie jak w poznanych do tej pory listach i krotkach.
Kolejne elementy – znaki numerowane są od 0.
txt="hello"
>>>
txt[0]
h
>>>
txt[1]
e
>>>
txt[2]+txt[3]
ll
Jednocześnie możemy cofać się po elementach napisu. Elementem o indeksie [-1] będzie ostatni znak w łańcuchu.
txt[-1]
o
>>>
txt[-2]
l
>>>
txt[-3]
l
Co się stanie jeśli spróbujemy dostać się do elementu, który nie istnieje np. txt[5]
czy txt[-6]
?
IndexError: string index out of range
Python wyrzuca nam prosty komunikat o wyjściu poza zakres.
Załóżmy, że w wyrazie hello, chcemy zamienić e
na literę a
.
Może wystarczy zapisać txt[1] = 'a'
? Nie, to nie zadziała.
Stringi w Pythonie są niemutowalne (niezmienne)! (Skojarzenie z krotkami z poprzedniego wpisu, jest jak najbardziej na miejscu).
Rozwiązać, można to np. txt = txt[0] + 'a' + txt[2:]
.
To nie koniec rzeczy, które możemy zrobić dzięki temu, że napis jest sekwencją znaków. String slicing pozwala na wycięcie części napisu i zwrócenie jako nowy napis. Do tej pory każda pojedynczo wyciągnięta litera stawała się nowym 1 elementowym napisem, teraz możemy wyciąć kawałek dowolnej wielkości.
txt[1:4]
ell
>>>
napis1[4:10]
to cze
Przyjrzyj się uważnie jak zostały wycięte znaki. Od pozycji [1] do pozycji 4, ale bez uwzględnienia znaku na miejscu [4]. Tak samo dla napisu drugiego, zostały wycięte znaki od [4] (czyli znaku piątego, gdyż liczymy od zera) do znaku 10, ale bez znaku na miejscu [10].
txt[1:]
#zwraca od pos 1 do końcaello
>>>
napis1[:10]
#zwraca od początku do pos 10ciasto cze
Metody klasy String
Python posiada zbiór metod, za pomocą, których możecie łatwo modyfikować napisy. Podzieliłam je dla was na tabele wg tego co zwracają, dzięki czemu nauka powinna być łatwiejsza, a w razie potrzeby szybko znajdziecie potrzebną wam metodę (a gwarantuję jeszcze nie raz się przydadzą 😉 ).
Metod używamy na stringu (napisie) według wzoru string.metoda()
, z wyjątkiem metod – len, max, min, które string przymują wewnątrz metody.
Metody zwracające nowy napis (string):
Metoda | Znaczenie |
---|---|
lower() |
Zmienia wszystkie duże litery na małe w stringu |
upper() |
Zmienia wszystkie małe litery na duże w stringu |
swapcase() |
Odwraca rodzaj każdej litery – małe na duże, duże na małe |
capitalize() |
Zmienia pierwszą literę w ciągu na dużą |
title() |
Zwraca string – tytuł, w którym wszystkie wyrazy zaczynają się dużą literą, a reszta jest małymi lub są to znaki nieliterowe |
join(seq) |
Łączenie (konkatenacja) wyrazów w napisie seq w jeden napis, według separatora/stringu na jakim wywołujemy metodę |
lstrip() |
Usuwa białe znaki z początku napisu – zwraca kopię pozbawioną białych znaków od lewej strony |
rstrip() |
Usuwa białe znaki z końca napisu – zwraca kopię pozbawioną białych znaków od prawej strony |
strip([chars]) |
Usuwa białe znaki lub znak podanny jako char z początku i końca napisu – wykonuje lstrip() i rstrip() na napisie. |
max(string) |
Zwraca literę znajdującą się najdalej w alfabecie od A |
min(string) |
Zwraca literę znajdującą się najbliżej w alfabecie od A |
split(str="", num=string.count(str)) |
Dzieli łańcuch według separatora str (spacja jeśli nie podano) i zwraca podciągi jako listę lub podzieli na co najwyżej liczbę podciągów, jeśli podano num |
splitlines( num=string.count('n')) |
Dzieli cały łańcuch (lub wg zadanej liczby num ) na osobne linie wg znaku nowej linii’\n’ i zwraca je jako tablicę |
replace(old, new [, max]) |
Zamienia wszystkie wystąpienia ciagu old na ciąg new lub jeśli jest podane max – podmiana zostanie wykonana o wskazaną liczbę wystąpień |
Przykłady użycia:
text = "ala ma morsa"
ala ma morsa
>>>
text.upper()
ALA MA MORSA
>>>
"*".join("abrakadabra")
a*b*r*a*k*a*d*a*b*r*a
>>>
"abrakadabra".strip("a")
brakadabr
>>>
text.replace(" ","-")
ala-ma-morsa
Metody zwracające wartość liczbową:
Metoda | Znaczenie |
---|---|
len(string) |
Zwraca długość ciągu znaków |
count(str, beg=0,end=len(string)) |
Zlicza ile razy zadany ciąg znaków(str) wystąpił w ciągu znaków lub wewnątrz podciągu, który zaczyna się od indeksu beg i kończy indeksem end |
find(str, beg=0 end=len(string)) |
Sprawdza gdzie ciąg str występuje w napisie lub podciągu tego napisu jeśli podamy indexbeg i indeks końcowy end . Zwraca indeks początkowy lub -1 jeśli ciąg str nie znajduje się w napisie |
rfind(str, beg=0,end=len(string)) |
Działa jak find(), ale wyszukiwanie od końca ciągu znaków |
index(str, beg=0, end=len(string)) |
Działa jak find(), ale zwraca wyjątek jeśli ciąg str nie zostanie znaleziony |
rindex( str, beg=0, end=len(string)) |
Działa jak index(), ale wyszukiwanie od końca ciągu znaków |
Przykłady użycia:
text = "ala ma morsa"
ala ma morsa
>>>
text.count('a')
4
>>>
text.count('a', 3)
2
>>>
text.count('a', 3,10)
1
>>>
text.find("a ")
2
>>>
text.rfind("a ")
5
Metody zwracające true
/false:
Metoda | Znaczenie |
---|---|
isalnum() |
Zwraca true jeśli wszystkie znaki w ciągu są alfanumeryczne (litery lub cyfry) |
isalpha() |
Zwraca true jeśli wszystkie znaki w ciągu są literami |
isdigit() |
Zwraca true jeśli wszystkie znaki w ciągu są cyframi |
islower() |
Zwraca true jeśli wszystkie znaki w ciągu są małymi literami. |
isspace() |
Zwraca true jeśli wszystkie znaki w ciągu są białymi znakami (spacja, tabulacja, przejście do nowej linii itp) |
istitle() |
Zwraca true jeśli ciąg spełnia warunek tytułu (każdy wyraz napisu musi zaczynać się dużą literą i składać wyłącznie z małych liter lub znaków nieliterowych) |
isupper() |
Zwraca true jeśli wszystkie znaki w ciągu są dużymi literami. |
startswith(str, beg=0,end=len(string)) |
Zwraca wynik sprawdzenia, czy napis jest rozpoczęty ciągiem str. Przy podaniu indeksu beg , sprawdzenie rozpoczyna się od tego znaku. Przy wystąpieniu argumentu end sprawdzenie zakończy się na tym znaku |
endswith(str, beg=0, end=len(string)) |
Zwraca wynik sprawdzenia, czy napis jest zakończony ciągiem str. Przy podaniu indeksu beg , sprawdzenie rozpoczyna się od tego znaku. Przy wystąpieniu argumentu end sprawdzenie zakończy się na tym znaku |
Przykład użycia:
text = "ala ma morsa"
>>>
text.isalnum()
True
>>>
text.isupper()
False
>>>
"Python Jest Fajny".istitle()
True
>>>
url = 'www.flynerd.pl'
>>>
url.startswith("www")
True
>>>
url.startswith("http")
False
>>>
url.endswith("pl")
True
Polecam przetestować każdą z metod w konsoli, aby przekonać się, że opisy ich działania są zrozumiałe!
Zadanie 1 – rozgrzewka
Podpunktów nie trzeba wykonywać pokolei, jeśli czegoś nie pamietasz – idź dalej. Możesz przeczytać wpis ponownie i wrócić do pozostawionego zadania
Do zmiennej sentence
przypisz zdanie: „Kurs Pythona jest prosty i przyjemny.”, a następnie:
- Policz wszystkie znaki w napisie
- Nie modyfikując zmiennej
sentence
wyświetl słowo „prosty” - Wyświetl znak o indeksie (czy za każdym razem rozumiesz co się dzieje?):
- 7
- 12
- -4
- 37
- Wprowadź do zdania 2 błędy ortograficzne 😉
Zadanie 2
Utwórz skrypt, który zapyta użytkownika o imię, nazwisko i numer telefonu, a następnie:
- Sprawdź czy imię i nazwisko składają się tylko z liter, a nr tel składa się wyłącznie z cyfr (wyświetl tę informację jako true/false)
- Użytkownicy bywają leniwi. Nie zawsze zapisują imię czy nazwisko z dużej litery – popraw ich
- Niektórzy podają numer telefonu z myślnikami lub z spacjami, usuń zbędne znaki z numeru
- Zakładając, że twoi użytkownicy noszą polskie imiona, sprawdź czy użytkownik jest kobietą
- Połącz dane w jeden ciąg
personal
za pomocą spacji - Policz liczbę wszystkich znaków w napisie
personal
- Podaj liczbę tylko liter w napisie
personal
Podpowiedź – weź pod uwagę, że numery telefonów w Polsce są 9-cyfrowe
Zadanie 3*
Łatwiejsze niż się wydaje;
Wyobraź sobie, że jesteś bioinformatykiem i otrzymujesz kod genetyczny do analizy.
Kod DNA składa się z 4 zasad azotowych: adeniny(A), cytozyny(D), guaniny(G), tyminy(T).
Idealny kod DNA wygląda następująco: TGCACGATCATGTCTACTATCCTCTCTATGGTGGGGTT.
Zdarza się, jednak, że kod zawiera małe jak i duże litery. Kolejny problem to maszyny sekwencjonujące nie są wolne od błędów. W zależności od maszyny błędy sekwencjonowania mogą zostać zamienione na znak – czy literę N.
- W jaki sposób łatwo rozpoznasz, że otrzymany kod DNA zawiera błędy?
Dotarł do ciebie następujący kod genetyczny:
ACTGTGCTGACTCCCGGTGCTGCCGCTGCCATAGCTAAAGCCCGGGTCCTGGTAGGCAGGCGGGAAGCAG
GGTGGGGGTCCCGGGTACTGGTAGGGGTAGCCCTGACCCAGAGGCGGGGGGGCAGCCGGGTGGGGCAGCG
GGGCCAGCGTGTCCTGAA-CGAAGTCCCACTGGAGCCACTGTTGAGGTTCAGGGTGGCGAGATCTGGCGG
NNNAGGGTAGGTGAGGGCCGCGGAGGGGCCTCCGGCGTTCCCCTCCCCCCCGCCCTGAAACCCGAAGCCC
CCACTCACTGCTGCAGAGATCCCCTGAAAACGTAGTAGCACTGCTCgagacAGGTGATCTGTTGACCTGA
AACCGCAGGAAGCCGTGCTTCAGCAAGCTGCTGGCGTACTTCCGGGCCT---GCCGCTCCTTGAAGCCCT
CCACGTGTGTGTACAGCCAGTCCACCACGTCCGCCCCTGGCCGGCACCAGCGGTCAGCCCGCAGCCTCGA
GGCAAGCAGCCCTGCCNNTGGCACTATCCGC-CGCGGGGACGGCCACTCACCGATGACGGCATNNGCGAT
GGTGATCTTGAGCCACATGCGGTCGCGGATCTCCAGTCCCGAG---GGCAGCTGCATGACCCGGACGACG
GCGCTCATGTCACtcaccgtcagcggcgcctcttccagCCAGCTCTGCAAAGCACAGACAGCCCCGCTTC
GCCCCAGCATCTGAAAGCGGGGGACTCggcAcgCTGCACCCCCAGGGGAGCCTCTGGGCAGAGCCTGCGC
CAGGGCGCAAGCTGGACGGTGCGTGACAGCAGGGCCCCGGCCCACTGCAGGATGCACCCCCGTGAGGCTG
GGGCGTGAGCAGGGGGGTTGGACAtttAGTCTCCCACTTCTACAGACACTTTTCATCAGGATCCTAGGCA
CAAACTGGGCTGAAACCCCACCCTGCAGACCAGGAAGTAATGAGAACAGGGCAGGCCCCTTCCCCTCNNC
GCATGCC-CACCCGAGAGCGCAGGCTGTTAGTCGTGTTAATGGCAGGAAGCAGAATGGAGACCTGGCCCC
TGCCTCTGAA-CCGTGGGTGCTCaactggctaGCCCTACGTACATCCCCTGTTCcggCCAACACACAGAC
ATGAGCAGGATGGGCTGCACAAGGTGGGCACGGGTGCCTGTGCACACGTCTGTGCAGGGAGTTGGGGACA
GGCAACACACACGTGTCACAGCCCCATGACGGggcaattgcGCCATGCTGGCTGAATGGCAGAGACGCCC
CTCCAAGCCTCGGTTTCTGCTGGGGCCCTCAGGAGCTGCCACTTACGTGGAGCACCAGGCACGGAGCTGG
TTAGTGAGGAGGAGCTGGTGCGCGTGACGGCGCTGGAGCAGGGACTCGTACCGTAGCGGGGCAGGGCNNN
TGTCAGTGCCGCCGTGTGGtcagcggcgatCGGCG-GGTCGATGGGCCGCACCGGGTCAGCTGGGTGNAG
ACACGTGGCGATGACAGGCGGACAGATGGACAGGGTGGGAGGGCAGGGTGCAGGGCACAGAGGAGAGAGG
CCTTCAGGCTAGGTAGGCGCCCCCTCCCCATCCCGccccGTGTGCCCCGAGGGCCACTCACCCCGTGGGA
CGGTGAAGTAGCTTCG-GGCGTTGGGTCCAGCACTTGGCCACAGTGAGGCTGNAAATGGCTGCAGGAACG
GTGGTCCCCCCGCAAGGCCCCCATGGTCCCACCTCCCTGCCTGGCCCCTCCCGCTCCAGCGCCNCCAGCC
- Skopiuj kod genetyczny do swojego skryptu i zapisz jako
DNA = ACTG...
- Policz ile razy występuje w kodzie każda zasada azotowa – adenina, cytozyna, guanina, tymina.
Na pewno zauważysz błędy sekwencjonowania – znaki, które nie są żadną z 4 zasad.
W panice szukasz pliku z dokumentacją.
Ufff… znalazł się!
Co więcej, w dokumentacji pojawił się następujący zapis:
gdy jakość sekwencji nie pozwala dokładnie odczytać rodzaju zasady azotowej wstawiany jest znak „-” Natomiast, gdy laser sczytujący ześlizgnie się, wstawiane są litery „N”, jednocześnie ostatnia wartość zasady jest ponownie odczytywana bez ubytku zasady w tym miejscu.
Co za przydatna informacja!
- Policz wystąpienia sekwencji GAGA i zamień je na AGAG
- Znajdź miejsce (indeks) w łańcuchu, gdzie występuje 7 guanin z rzędu
- Znajdź miejsce (indeks) , gdzie od końca łańcucha występuje 6 cytozyn
- Policz ile razy w kodzie pojawiła się sekwencja CTGAAA
- W sekwencji CTGAAA czasem mutuje ostania litera A, wówczas jakość ostatniej litery może być wątplia. Ile sekwencji znajdziesz, jeśli weźmiesz pod uwagę wątpliwą, ostatnią adeninę?
- Oczyść DNA z wszystkich błędów. Na podstawie czystej nici utwórz odpowiadającą jej nić RNA (nić RNA w miejscu tyminy będzie mieć uracyl (U))
Rozwiązanie zadań znajdziecie na Githubie: Python 5 modyfikujemy napisy.
Ten wpis należy do cyklu: Python kurs od podstaw
Moze troszke szybciej :)?a zreszta…jak nie dzisiaj dam rade to za pare dni 😉 – poprosze o kolejna czesc jak najszybciej – b.ciekawy kurs…ps: moze zrobilabys lekcje jak odczytac np. dane z pliku *.txt z ktorego program odczytywalby jakies dane i wyswietlal je w tabeli?
Świetny kurs, wszystko przejrzyste 🙂 Poproszę o kolejną część, bo nauka tu to przyjemność.
Czytam sobie powyższy wpis o metodach na stringach i myślę sobie… jakie to zapewne bardzo rzadko przydatne. I… nagle podajesz takie ciekawe zadanka, gdzie widać praktyczne zastosowanie tego wszystkiego! Bardzo Ci dziękuję za tą serię. 🙂
cieszę się, że zadanie się sprawdziło jako ciekawy przykład 😀
Print(„Jesteś najlepsza flynerd”/n”wiedz o tym! „) :****
Coraz bardziej się wkręcam w tego pythona 🙂 Jednak zawsze myślę trochę inaczej od Ciebie pisząc kod.
Cześć, bardzo fajny tutorial dla początkujących, od wczoraj sobie przerabiam powolutku Twoje wpisy 🙂
Mam uwagę do rozwiązania zadania 2, gdzie zakładamy, że numer telefonu ma 9 liczb i w Twoim kodzie na githubie jest:
letters = len(personal) – personal.count(” „) – 9
Czy nie lepiej zamiast tego policzyć ile znaków ma numer po usunięciu z niego spacji i myślników?
Rozpisałem to u siebie tak:
print(„Liczba samych liter”, len(personal)-len(phone) – personal.count(” „))
Przed sprawdzeniem Twojego rozwiązania nie potrafiłem sam zastosować endswith żeby działało, ale udało mi się samodzielnie rozpisać sprawdzanie płci w ten sposób:
print(„Czy to kobieta?n”,(„a”==(name[len(name)-1])))
Jutro podejdę do zadania nr 3
Witam,
kolejne literowki
Żeby to zrozumieć zmień %6.3f na %06.3f, a w drugim wypadku {:6.3f} na {:6.3f}.
oraz
>>> text = „ala ma morsa”
ala ma kota x3
W starej metodzie pokazalas jak wyrownac i do prawej i dolewej, doradzisz jak w nowej rownac do prawej, ma to duze znaczenie przy wyswietlaniu tablicy liczb ( lepiej sie prezetuja gdy kropki sa w jednej lini), tak bede tego uzywal na potege, gdyz ucze sie pythona by w wlasnym zakresie katalogowac swoje zbiory ksiazek, dokumentow, muzyki itp, hej!
Kurs (jak i pozostałe wpisy poświęcone programowaniu!) bardzo fajny, szczególne podziękowanie za ciekawe zadania.
Testuję wszystkie metody i wychodzi mi, że są 2 błędy – czy też są to easter eggs i sprawdzasz pilność kursantów:D?
isalnum() – string z Alą ma spację, więc w takim wypadku metoda zwraca false
isupper() – metoda zwraca true tylko jeśli wszystkie litery są duże.
Niektórych metod dalej nie rozumiem, np. odwracające kolejność; dlaczego wyszło Ci tak jak wyszło? 😉 albo splitlines(). Może jakieś dodatkowe przykłady, choćby w komentarzu.
W zadaniu 3 dla cytozyny przyporządkowana jest litera D.
Zacznę od najważniejszego: Fajny kurs!
Mam Python 3.7 i próbuję sił z Zadaniem 1.2
Nie znalazłem rozwiązania tego punktu, ale sobie troszkę pokombinowałem. Nie znając dokładnej pozycji „prosty” trzeba by ją jakoś wyszukać. Wyszło mi, że literka „p” z „prosty” pierwszą z „p” w tym zdaniu (a zarazem jedyną) tak, więc od niej można zacząć wyświetlać napis.
print(„Pkt2 Szukany napis brzmi:”,sentence[sentence.find(’p’):(sentence.find(’ ’,18))])
Problem w tym, że nie bardzo wiem jak ten wpis ładnie zakończyć. Wcześniej pomogłem sobie wyszukując pozycje liter startu/końca i dzięki temu wiem, gdzie są.
print(sentence.find(’p’))
Stąd też wiem, że mam szukać spacji po „prosty” po pozycji 18.
print(sentence.find(’y’,18))
Tak w ogóle to można było policzyć na paluszkach w po prostu wpisać:
print(„Pkt2 Szukany napis brzmi:”,sentence[18:24])
ale na to nie tędy droga.
Ktoś ma jakieś podpowiedź dla początkującego?
Korzystając z info w artykule, że metoda „split” zachowuje się jak lista wyrazów, najprościej tak:
sentence.split()[3]
Czyli dzielisz napis wg (domyślnej) spacji i wybierasz czwarty wyraz (bo liczysz od zera, stąd trójka).
Ja miałem inny problem – przegapiłem info o używaniu metod i musiałem sięgnąć do dokumentacji Pythona, jak użyć metody split 🙂 Bo w pierwszej chwili próbowałem tak: split(sentence) 🙂 Ale przy okazji czegoś nowego się nauczyłem…
Bardzo ciekawie prowadzony kurs, prosto i konkretnie, z rzeczywistymi przykładami 🙂 A Python rzeczywiście wygląda na prosty, w porównaniu z Javą czy C#, którymi też się trochę pobawiłem.
Dopiero zaczynam zabawę z programowaniem, nie wiem, czy to dla mnie, czy nie – ale spróbuję, może będę kolejnym 40-latkiem programistą, a może uznam, że jednak nie tędy droga 🙂
W każdym razie autorce kursu dziękuję i gratuluję pomysłu 🙂
Hej! no powiem że przez zadanie 3 pół dnia kombinowałam.
na Twoim Githubie nie ma rozwiązanie w 3 zadaniu do (Znajdź miejsce (indeks) w łańcuchu, gdzie występuje 7 guanin pod rząd oraz Znajdź miejsce (indeks) , gdzie od końca łańcucha występuje 6 cytozyn), dlatego wstawiam tu tą swoją brakującą część i mam nadzieje, że jest poprawna. Czekam na feedback! 🙂
print(„sekwencja sześciu guanin to:”, DNA.find(„GGGGGGG”))
print(„sekwencja sześciu cytozyn od tyłu to:”,DNA.rfind(„CCCCCC”))
Feedback z mojej strony, że ja mam tak samo i u mnie działa 🙂
Przepraszam ale pytanie nie związane z pythonem.Ta sekwencja DNA co to jest??
Fajnu blog bo ucze sie pythona tez…
Jest to sekwencja kodująca białko DVL1 (https://en.wikipedia.org/wiki/DVL1).
Zadanie 3 po wywołaniu metody replace(’GAGA’) i sprawdzeniu przez count(’GAGA’) pokazuje że nadal zostały 3 sekwencje. Dlaczego tak się dzieje ? Sprawdzałem w moim jak i przykładzie z githuba
Bo czasem masz tam wiecej niz tylko GAGA – np GAGAGA – i po zmianie na AGAG bedzie AGAGAG. Wiec jak znowu wyszukasz GAGA – to znajdzie taki fragment z AGAGAG, ktory ten warunek spelnia 😉
Super tłumaczysz za co jestem bardzo Ci wdzięczny.
Co do zad. 1.
Oczywiście kieruję się tym co poznaliśmy do tej pory dlatego nie użyłem sum(), więc wykonałem to tak:
suma = [1,2,3,4,5,6,7,8,9,10]
p = suma[0] + suma[1]
print(p)
r = suma[2] + p
print(r)
p = suma[3] + r
print(p)
r = suma[4] + p
print(r)
p = suma[5] + r
print(p)
r = suma[6] + p
print(r)
p = suma[7] + r
print(p)
r = suma[8] + p
print(r)
p = suma[9] + r
print(p)
Jak fajnie, że wrzuciłaś trochę bioinformatyki <3
Dziękuję za kolejną lekcję! :*
^^ cieszę się, że się podoba 😀
Po wykonaniu wszystkich zadań z dotychczasowych części kursu muszę potwierdzić, że samodzielna praktyka nad zadaniami na podstawie materiałów z posta i potem porównanie swojego skryptu do rozwiązań z Github’a daje najlepsze efekty nauki.
To zadanie z DNA/RNA po prostu rewelka 🙂 szczególnie jak dla mnie, chemika.
Dziękuję, i 'lecę’ dalej z kolejnymi postami 🙂
Powiem nieskromnie — też uważam, że fajne! 😀
ala ma morsa czy kota?
Jak do tej pory zadanie z bioinformatyki moje ulubione <3 Czekam na więcej takich! Ogólnie świetny kurs!
Trochę inaczej to zrobiłem niż jest na githubie :>
Pozdrawiam
Zostanę przy kursie 5 więcej niż godzinę wydaje się wszystko skomplikowane ale myślę że jak sobie porobię parę przykładów to wszystko będzie jasne.
Później wrócę jeszcze do kursu 4 bo coś do końca nie utkwił mi w głowie tak jak reszta kursów 🙂
Fajny kurs ładnie wytłumaczony ale ja tego nie pojmuje muszę chyba poświecić na ten cały kurs z 2tygodnie 😀
Super kurs , wszystko jest ok!
metodą prób i błędów doszedłem do takiego kodu 😀
super, chyba do tej pory jeszcze nie natknalem sie z tak przystepnie wylozonym materialem z programowania. Po prostu mega zaczynam dostrzegac swiatlo nadziei dla siebie 🙂
ale numer, mi wyswietla to „ala ma morsa” jako False przy komendzie isalnum(). nie wiesz moze dlaczego?
Fajne te ćwiczenia! 🙂 I dziękuję za kurs 🙂 Chyba za szybko chciałam go przejść, dlatego z początku wydawał się trudny i niezrozumiały.. Jednak, nie taki diabeł straszny… 😉
Super kurs, dokładnie to, czego szukałam 🙂 Pytanie odnośnie zadania 3 . – zarówno w moim, jak i Twoim kodzie po zamianie sekwencji GAGA na AGAG, nadal po sprawdzeniu (DNA.count) pojawia się, że w kodzie znajdują się 3 sekwencje GAGA (wcześniej 9). Może ktoś mógłby mi wyjaśnić dlaczego?
Fajne zadnia:)
Witam.
Czy jest funkcja, która sprawdza czy dany ciąg znaków składa się tylko z wybranych liter lub cyfr ?
@Jarek możesz poczytać o regex (wyrażeniach regularnych)
mam takie pytanie – jak zrobić replace(„a”, „,”) żeby zastąpić tylko osobno stojące w zdaniu literki a nie zmienić słów no. „ala” na „,la” ? będę wdzięczna za odpowiedź
Bardzo ciekawe i wciągające zadania 🙂
chcę zrobić działający kalkulator ale mi niedziała co mam zrobić
Bardzo dobry kurs, wręcz rewelka 🙂
hej dzieki za kurs, bardzo przydatny. Co ja bym jeszcze dodala to moze przycisk na dole 'przejdz do nastepnego tematu’ 🙂 Pozdrawiam i dzieki!