Podstawy bioinformatyki Podstawowe typy danych Liczby całkowite, liczby zmiennoprzecinkowe i napisy Joanna Bednarska, Dawid Grabarek Zakład Chemii Fizycznej i Kwantowej Katedra Inżynierii i Modelowania Materiałów Zaawansowanych joanna.bednarska@pwr.edu.pl dawid.grabarek@pwr.edu.pl 28 pazdziernika 2015 1 / 15 Plan wykładu 1 Typy danych Liczby całkowite i zmiennoprzecinkowe Napisy/stringi 2 Pierwsze skrypty 2 / 15 Typy danych Liczby całkowite - integer Liczby zmiennoprzecinkowe - floating point number Napis - string Krotka - tuple Lista - list Słownik - dictionary Wartość logiczna- bool 3 / 15 Typy danych Typ danych- intuicyjnie pewna struktura języka programowania, przechowująca informację. Typy danych można porównać do części mowy. Czasownik służy do wyrażania akcji lub stanu tego o czym informację przechowuje rzeczownik, natomiast przymiotnik pozwala dokładniej opisać rzeczownik. Co więcej, większość akcji pasuje tylko do pewnej liczby rzeczowników, np. na obiekcie wanna można wykonać operację wykąpać się ,a także zapytać o objętość . To pierwsze zwraca czystego człowieka, a to drugie liczbę, która jest własnością wanny. Z kolei na obiekcie czajnik ciężko wykonać operację wykąpać się , ale można za to wykonać operację zagotuj wodę , a także zapytać o objętość i moc pracy . Podobnie jest z typami danych... 4 / 15 Liczby rzeczywiste Liczby całkowite (w sensie matematycznym) są typu int, np. -2, 0, 5, 20. Liczby niecałkowite (w sensie matematycznym) są typu float, np. -2.0, 0.0, 5.4, 10.0002. Przykład >>> 17 / 3 # int/int = int 5 >>> 17 / 3.0 # int/float = float 5.666666666667 >>> 17 // 3.0 #Jawnie zwróć podłogę, ale typ float! 5.0 >>> 5*3 + 2 17 >>> 5*3 +2.0 17.0 Typ float jest ogólniejszy niż int. 5 / 15 Napis Napisy są typu str. Przykład >>> To jest napis #Tworzymy napis To jest napis >>> This is Dawid s lecture #Nie ma drugiego File "", line 1 #apostrofu zamykającego This is Dawid s lecture ^ SyntaxError: invalid syntax >>> "This is Dawid s lecture" #Używamy cudzysłowiu "This is Dawid s lecture" >>> "He said \"yes\"." He said "yes". >>> str(567.890) #Zamień liczbę na napis 567.890 >>> str(567.890) == 567.890 #Nie, ponieważ typy są różne. False 6 / 15 Napis- funkcja print Przykład >>> print "He said\"yes\"." He said "yes". #Porównaj następujace linijki kodu >>> Oto napis\n w dwóch linijkach. >>> print Oto napis\n w dwóch linijkach. Funkcja print pozwala na wydrukowanie napisu (i nie tylko!) w formie czytelnej dla człowieka (human-readable). Porównaj: Przykład >>> import math >>> math.pi.__doc__ >>> print math.pi.__doc__ 7 / 15 Napis- funkcja print Przykład >>> print Zamiast \\n, można używać trzech apostrofów żeby przechodzić do następnych linijek. 8 / 15 Operacje na napisach Przykład >>> Dawid + Grabarek #Napisy można dodawac/kleić >>> Dawid * 5 #Napisy można powtarzać przez mnożenie przez liczbę typu int. Spróbuj przez liczbę typu float! 9 / 15 Pierwszy skrypt-początki Skrypt to po prostu mały program będący plikiem tekstowym. Aby napisać skrypt, możemy użyć dowolnego edytora tekstowego, np. gedit. W pierwszej linijce nowego skryptu wpisujemy: #!/usr/bin/python Jest to podanie ścieżki do interpreta, którą poznamy wpisując which python w terminal. Aby móc korzystać z polskich znaków w pythonie, wpisujemy w drugiej linijce skryptu: # -*- coding: utf8 -*- 10 / 15 Pierwszy skrypt- pobieranie danych od użytkownika W skrypcie możemy zapisać wiele danych, tzn. zdefiniować zmienne, ale często wymagamy tego, aby użytkownik bez modyfikacji kodu mógł pod zmienną wprowadzać swoje własne dane. Służą do tego komendy: input( Tekst zachęty: ) raw input( Tekst zachęty: ) Polecenie input() stara się zawsze określić jakiego typu są wprowadzone dane. Z kolei raw input() przyjmuje cokolwiek użytkownik wpisze i zamienia to na napis. Na razie wystarczy zapamiętać tyle: input() stosujemy, gdy oczekujemy liczby raw input() stosujemy, gdy oczekujemy napisu 11 / 15 Pierwszy skrypt- do dzieła Napisz skrypt, który pobiera dwie liczby od użytkownika a następnie zwraca wyniki kilku działań matematycznych, np. dodawania, odejmowania, mnożenia, dzielenia, obliczy resztę z dzielenia dwóch liczb, sumę kwadratu sinusa pierwszej i kwadratu cosinusa drugiej liczby oraz sinus sumy kwadratów liczb. 12 / 15 Drugi skrypt Napisz skrypt, który pobiera od użytkownika jego imię i nazwisko (jako jeden napis), a następnie drukuje je w ramce z gwiazdek (FABULOUS): ****************** * * * Dawid Grabarek * * * ****************** Co jest potrzebne? Funkcja raw input Mnożenie napisów Dodawanie napisów Funkcja, która pozwoli określić długość napisu wprowadzonego przez użytkownika Wypróbowanie na imionach i nazwiskach z i bez polskich znaków Ciąg dalszy na kolejnym slajdzie. 13 / 15 Drugi skrypt c.d. Ta ostatnia funkcja to len(). Masz wątpliwość jak jej użyć? Wpisz w interpreter print len. doc . To jest funkcja wbudowana tak jak dir(). Nie jest to więc atrybut typu str, a raczej coś zewnętrznego co może działać na nasz obiekt, np. kran nie jest integralną częścią wanny, ale działa na wannę, bo ją napełnia wodą. (Studenci: Ale on ma głupie te przykłady... ) 14 / 15 Funkcja len() Funkcja len() zwraca długość sekwencji lub zbioru znaków/elementów. Przykład >>> len( Napis ) 5 >>> len( a a a ) #Również spacje są liczone! 7 >>> imie= Dawid Grabarek >>> x=len(imie) #Może długość imienia i nazwiska #będzie potrzebna kilka razy? #Dlatego zapisujemy ją jako zmienną. >>> print x 14 15 / 15