Film 1Programowanie w Pythonie. Wyszukiwanie wzorca w tekście. Operacje na napisach

Film omawia algorytm naiwny wyszukiwania wzorca w tekście i prezentuje podstawowe operacje na napisach, m.in. konkatenację napisów, wyznaczanie długości napisu, analizowanie napisu znak po znaku.

Film 2Programowanie w Pythonie. Wyszukiwanie wzorca w tekście. Analiza napisów

Film prezentuje ćwiczenia polegające na analizie napisów i wymagające zliczenia ciągów znaków, zmiany struktury ciągu znaków oraz wyznaczenia sekwencji błędów.

DNA © ShadeDesign/Shutterstock.com

InfografikaAlgorytm

Infografika pokazuje, czym jest algorytm, na prostym przykładzie z życia codziennego.

Ćwiczenie 0

Jeśli trzeba przeanalizować napis znak po znaku, najlepiej zrobić to za pomocą pętli for. Wartość początkowa zmiennej będącej wynikiem powinna być tzw. pustym napisem. Wynikiem zdefiniowanej poniżej funkcji papuga(napis) jest napis z podwojoną każdą literą. Zmodyfikuj kod tak, aby po uruchomieniu skryptu otrzymać napis z potrojoną każdą literą.

def papuga(napis): pom = "" for znak in napis: pom = pom + znak + znak return pom print(papuga("agawa")) print(papuga("krokus"))
Wynikiem funkcji papuga("bez") jest lista bbbeeezzz.
testResult = papuga("bez")=='bbbeeezzz'
bbbeeezzz
papuga("bez")
Wynikiem funkcji papuga("bratki") jest lista bbbrrraaatttkkkiii.
testResult = papuga("bratki")=='bbbrrraaatttkkkiii'
bbbrrraaatttkkkiii
papuga("bratki")
Wynikiem funkcji papuga("-*-") jest lista ---***---
testResult = papuga("-*-")=='---***---'
---***---
papuga("-*-")
Rozwiąż ćwiczenie

Ćwiczenie 1Zliczanie pojedynczych znaków w tekście

Zdefiniuj funkcję ile(s), której parametrem jest ciąg zna­ków, a wynikiem – lista czterech liczb całkowitych oznaczających, ile razy symbole A, C, G i T występują w tym ciągu znaków. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ile("CAATAAAAA") jest lista [7, 1, 0, 1].
  • Wynikiem funkcji ile("TCTAAAGATATCGGG") jest lista [5, 2, 4, 4].

a) Wykorzystaj pętlę for i instrukcję warunkową.

# zdefiniuj funkcję def ile(s): pass # testy
Wynikiem funkcji ile("AAAAAA") jest lista [6, 0, 0, 0].
testResult = ile("AAAAAA")==[6, 0, 0, 0]
[6, 0, 0, 0]
ile("AAAAAA")
Wynikiem funkcji ile("CCC") jest lista [0, 3, 0, 0].
testResult = ile("CCC")==[0, 3, 0, 0]
[0, 3, 0, 0]
ile("CCC")
Wynikiem funkcji ile("T") jest lista [0, 0, 0, 1].
testResult = ile("T")==[0, 0, 0, 1]
[0, 0, 0, 1]
ile("T")
Rozwiąż ćwiczenie

b) Zastosuj operacje na napisach.

def ile(s): # zdefiniuj funkcję i sprawdź jej działanie pass
Wynikiem funkcji ile("AAAAAA") jest lista [6, 0, 0, 0].
testResult = ile("AAAAAA")==[6, 0, 0, 0]
[6, 0, 0, 0]
ile("AAAAAA")
Wynikiem funkcji ile("CCC") jest lista [0, 3, 0, 0].
testResult = ile("CCC")==[0, 3, 0, 0]
[0, 3, 0, 0]
ile("CCC")
Wynikiem funkcji ile("T") jest lista [0, 0, 0, 1].
testResult = ile("T")==[0, 0, 0, 1]
[0, 0, 0, 1]
ile("T")
Rozwiąż ćwiczenie

Ćwiczenie 2Zliczanie ciągów znaków w tekście

Zdefiniuj funkcję pary(s), której parametrem jest łań­cuch DNA, a wynikiem – liczba wystąpień par jednakowych symboli (np. TTAT – 1, TTTA – 2, TATA – 0). Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji pary("TGATTCTGAACAAGTGTT") jest 4.
  • Wynikiem funkcji pary("TGATATTCGATGTGAAAAAGTCATACTGTT") jest 6.
# zdefiniuj funkcję def pary(s): pass # testy
Wynikiem funkcji pary("ACGTGTCA") jest 0.
testResult = pary("ACGTGTCA")==0
0
pary("ACGTGTCA")
Wynikiem funkcji pary("ACGTTT") jest 2.
testResult = pary("ACGTTT")==2
2
pary("ACGTTT")
Wynikiem funkcji pary("T") jest 0.
testResult = pary("T")==0
0
pary("T")
Rozwiąż ćwiczenie

Ćwiczenie 3Zmiana struktury ciągu znaków

Odwrotne uzupełnienie łańcucha DNA to ciąg utworzony przez odwrócenie dane­go ciągu i dopełnienie każdego symbolu, tj. zamiany A na T i odwrotnie oraz C na G i odwrotnie (np. CTGA → AGTC → TCAG). Zdefiniuj funkcję oduz(s), której parametrem jest łańcuch DNA, a wynikiem jego odwrotne uzupełnienie. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji oduz("TGACCCA") jest TGGGTCA.
  • Wynikiem funkcji oduz("TGATATTCGATGTGAAAAA") jest TTTTTCACATCGAATATCA.
# zdefiniuj funkcję def oduz(s): pass # testy
Wynikiem funkcji oduz("AAAAAGG") jest CCTTTTT
testResult = oduz("AAAAAGG")=="CCTTTTT"
CCTTTTT
oduz("AAAAAGG")
Wynikiem funkcji oduz("ATGC") jest GCAT
testResult = oduz("ATGC")=="GCAT"
GCAT
oduz("ATGC")
Wynikiem funkcji oduz("C") jest G
testResult = oduz("C")=="G"
G
oduz("C")
Rozwiąż ćwiczenie

Ćwiczenie 4Zmiana struktury ciągu znaków

Zdefiniuj funkcję ta(s), której parametrem jest łańcuch DNA, a wynikiem  łańcuch DNA z gwiazdką (*) w miejscu symboli C, G i T. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ta("TGACCCA") jest **A***A.
  • Wynikiem funkcji ta("TGATATTCGATGTGAAAAA") jest **A*A****A****AAAAA.
# zdefiniuj funkcję def ta(s): pass # testy
Wynikiem funkcji ta("CCCC") jest ****.
testResult = ta("CCCC")=="****"
****
ta("CCCC")
Wynikiem funkcji ta("CAGATTTT") jest *A*A****
testResult = ta("CAGATTTT")=="*A*A****"
*A*A****
ta("CAGATTTT")
Wynikiem funkcji ta("ATGCCGTA") jest A******A
testResult = ta("ATGCCGTA")=="A******A"
A******A
ta("ATGCCGTA")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Twój wynik to: /1
  • Zaznacz zdanie prawdziwe.

Ćwiczenie dodatkowe 2

Zdefiniuj funkcję codruga(napis), której wynikiem jest napis z pominiętym co drugim znakiem. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji codruga("aksamitka") jest asmta.
  • Wynikiem funkcji codruga("chaber") jest cae.
# zdefiniuj funkcję def codruga(napis): pass # testy
Wynikiem funkcji codruga("irys") jest iy
testResult = codruga("irys")=="iy"
iy
codruga("irys")
Wynikiem funkcji codruga("magnolia") jest mgoi
testResult = codruga("magnolia")=="mgoi"
mgoi
codruga("magnolia")
Wynikiem funkcji codruga("rosiczka") jest rsck
testResult = codruga("rosiczka")=="rsck"
rsck
codruga("rosiczka")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 3

Zdefiniuj funkcję wspak(napis), której wynikiem jest napis ze znakami przestawionymi od końca do początku. Rozwiązanie zapisz za pomocą pętli. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji wspak("aloes") jest seola.
  • Wynikiem funkcji wspak("dalia") jest ailad.
# zdefiniuj funkcję def wspak(napis): pass # testy
Wynikiem funkcji wspak("kaktus") jest sutkak
testResult = wspak("kaktus")=="sutkak"
sutkak
wspak("kaktus")
Wynikiem funkcji wspak("mak") jest kam
testResult = wspak("mak")=="kam"
kam
wspak("mak")
Wynikiem funkcji wspak("orchidea") jest aedihcro
testResult = wspak("orchidea")=="aedihcro"
aedihcro
wspak("orchidea")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 4

Zdefiniuj funkcję lustro(napis), której wynikiem jest napis z połączonym napisem wspak. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji lustro("aster") jest asterretsa.
  • Wynikiem funkcji lustro("peonia") jest peoniaainoep.
# zdefiniuj funkcję def lustro(napis): pass # testy
Wynikiem funkcji lustro("kalina") jest kalinaanilak
testResult = lustro("kalina")=="kalinaanilak"
kalinaanilak
lustro("kalina")
Wynikiem funkcji lustro("malwa") jest malwaawlam
testResult = lustro("malwa")=="malwaawlam"
malwaawlam
lustro("malwa")
Wynikiem funkcji lustro("skrzyp") jest skrzyppyzrks
testResult = lustro("skrzyp")=="skrzyppyzrks"
skrzyppyzrks
lustro("skrzyp")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 5

Zdefiniuj funkcję przeplot(napis), której wynikiem jest napis powstały z oryginalnego napisu poprzez dostawienie po każdej literze znaku z danego napisu, ale od końca. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji przeplot("azalia") jest aaziallaizaa.
  • Wynikiem funkcji przeplot("mniszek") jest mkneizsszienkm.
# zdefiniuj funkcję def przeplot(napis): pass # testy
Wynikiem funkcji przeplot("jaskier") jest jraesikkisearj
testResult = przeplot("jaskier")=="jraesikkisearj"
jraesikkisearj
przeplot("jaskier")
Wynikiem funkcji przeplot("zawilec") jest zcaewliilweacz
testResult = przeplot("zawilec")=="zcaewliilweacz"
zcaewliilweacz
przeplot("zawilec")
Wynikiem funkcji przeplot("pełnik") jest pkeiłnnłiekp
testResult = przeplot("pełnik")=="pkeiłnnłiekp"
pkeiłnnłiekp
przeplot("pełnik")
Rozwiąż ćwiczenie

Zadanie 1Sekwencja błędów

Odległość Hamminga między dwoma łańcuchami DNA oznacza liczbę symboli, któ­rymi różnią się oba łańcuchy. Odległość Hamminga między łańcuchami st o tej samej długości wynosi 8. Niepasujące symbole są zaznaczone kolorem:

  • łańcuch s – CAGGCTACTACCGGTAT,
  • łańcuch t – CATCGTAATGCAGGGCT.

Zdefiniuj funkcję hamming(s, t), gdzie s i t to łańcuchy o tej samej długości. Wynik funkcji to liczba będąca odległością Hamminga między danymi łańcuchami. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji hamming("CAGGTT", "CAGGTT") jest 0.
  • Wynikiem funkcji hamming("CAGGCTACTACCGGTAT", "CATCGTAATGCAGGGCT") jest 8.
# zdefiniuj funkcję def hamming(s, t): pass # testy
Wynikiem funkcji hamming("AAAACTACTA", "CATCGTAATG") jest 6
testResult = hamming("AAAACTACTA", "CATCGTAATG")==6
6
hamming("AAAACTACTA", "CATCGTAATG")
Wynikiem funkcji hamming("CCCCCCCC", "AAAAAAAA") jest 8
testResult = hamming("CCCCCCCC", "AAAAAAAA")==8
8
hamming("CCCCCCCC", "AAAAAAAA")
Wynikiem funkcji hamming("GACATAGCTA", "GAACCGGGGG") jest 7
testResult = hamming("GACATAGCTA", "GAACCGGGGG")==7
7
hamming("GACATAGCTA", "GAACCGGGGG")
Rozwiąż ćwiczenie

Pytania quizoweWyszukiwanie wzorca w tekście

Twój wynik to: /3
  • Jaka wartość zostanie wypisana dla napisu w = "wiaderko" w wyniku działania polecenia print(len(w))?
  • Jaka litera zostanie wypisana dla napisu w = "kaktus" w wyniku działania polecenia print(w[-1])?
  • Ile razy wykona się poniższa pętla dla napisu w = "laseczek"?
    for z in w:
        print(z)