Podstawy bioinformatyki
Podstawowe typy danych
Napisy i ich formatowanie
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
4 listopada 2015
1 / 12
Plan wykładu
1
Rozwiązywanie problemów- imię w ramce
2
Napisy ciąg dalszy
Ważne atrybuty napisów
Formatowanie napisów
2 / 12
Rozwiązywanie problemów- imię w ramce
Jeśli w skrypcie, który produkuje imię w ramce wpiszemy polskie znaki,
wówczas ramka nie wychodzi prawidłowo:
Przykład
******************
*
*
* Dawid Grabarek *
*
*
******************
*********************
*
*
* Łukasz Wolański *
*
*
*********************
3 / 12
Rozwiązywanie problemów- imię w ramce
Procedura postępowania w takim przypadku:
Odpowiedź na pytanie co może być źródłem błędu:
zmiennia imie
zmienna dl
Haszujemy (#) wszystko co wykorzystuje zmienną imie i nakazujemy
jedynie jej wydrukowanie. Zahaszowane linijki nie są interpretowane
przez interpreter.
Wykonujemy skrypt i powtarzamy haszowanie dla zmiennej dl
Porównujemy wyniki. To przeważnie pozwoli nam ustalić źródło błędu
4 / 12
Atrybuty
Definicja
Atrybut
- element składni języka programowania, który określa
konkretną właściwość nadaną wybranemu elementowi, a
także operacje, które mogą być na elemencie wykonywane.
Przykład
>>> x=7
>>> dir(x) #Wyświetl atrybuty konkretnego obiektu
typu int
>>> dir(int) #Wyświetl atrybuty obiektu typu int
>>> dir(float)
>>> dir(str)
5 / 12
Napis- ważne atrybuty
Przykład
>>> a=’Bardzo ważny napis. Na dodatek dłuuuuugi.’
>>> dir(a) #Wyświetl atrybuty napisu
>>> a.count(’N’)
1
>>> a.count(’n’) #Istnieje różnica między dużą i
2
małą literą
>>> a.count(’.’)
2
>>> a.count(’ ’) #Można liczyć spacje i znaki
5
interpunkcyjne
>>> a.count(’azd’)
0
>>> a.index(’a’) #Wydrukuj najmniejszy indeks (pozycję)
1
na której znajduje się litera ’a’
6 / 12
Napis- ważne atrybuty
Atrybuty islanum, isalpha, isdigit, islower, isspace, istitle, isupper
sprawdzają, czy elementy napisu są jednego rodzaju, np. czy wszystkie są
numerami, dużymi literami, czy napis to tylko spacje, itd.
Wypróbuj działanie różnych atrybutów. Używaj atrybutu
doc .
Przykład
>>> a.split() #Zwraca listę słów rozdzielonych spacją
>>> a.split(’a’) #Separator można dobrać samodzielnie
>>> slowa=a.split() #Utwórzmy listę słów
>>> spacja=’ ’ #Napis, będący spacją
>>> spacja.join(slowa) #Połącz spacją elementy
w liście słów
>>> ’ ’.join(slowa) #Można to też zrobić szybciej
>>> b=’
To jest napis z spacjami
’
>>> a.strip() #Porównaj
>>> b.strip()
>>> a.replace(’a’, ’’) #Usuń wszystkie a
w kopii napisu
>>> a.replace(’a’, ’hhh’)
7 / 12
Napis- ważne atrybuty
Przykład
>>> timon=’hakuna matata’
>>> timon.capitalize() #Zwraca kopię napisu
z pierwszą wielką literą
>>> timon.title()
>>> timon.upper()
>>> timon.lower()
Uwaga
Zauważ, że powyższe atrybuty zwracają kopię obiektu. Sam obiekt
pozostaje niezmieniony.
Aby go zmienić, należy użyć następującej składni:
zmienna=zmienna.atrybut()
8 / 12
Formatowanie napisów
Formatowanie napisów służy utrzymaniu wysokiej kontroli nad tym co
napis ma zawierać.
Przyjrzyjmy się następującemu przykładowi.
Składnia formatowania napisów
x=’żaba’
’’’Tutaj zostanie wprowadzone słowo pod
zmienną x: %s’’’% x
calk=98.3
zmienn=3.14159
’’’Tutaj będzie liczba typu int: %d, natomiast
tutaj liczby typu float z trzema cyframi
po przecinku: %.3f’’’% (calk, zmienn)
9 / 12
Formatowanie napisów
Najważniejsze kody formatowania
%s- formatowanie napisu
%d- zamiana liczby typu int() na napis
%f- zamiana liczby typu float() na napis
%%- wprowadzenie znaku %
10 / 12
Formatowanie napisów
Więcej kontroli
%20s, %8d- wyrównaj napis/liczbę do prawej z polem napisu o długości
20 znaków, a liczbę 8 znaków. Pole nigdy nie będzie krótsze niż podany
napis/liczba
%.5s- obetnij napis tak, żeby zawierał tylko 5 pierwszych znaków
%10.5s- obetnij napis tak, żeby zawierał tylko 5 pierwszych znaków w
polu o długości 10
%-20d- jak wyżej, ale wyrównanie do lewej
%+7d- wyrównanie do prawej i wstawienie znaku liczby, nawet jeśli jest
ona dodatnia
%10.4f- wyrównanie do prawej, pole o długości 10 znaków i 4 cyfry po
przecinku
%07d- wyrównanie do prawej, pole o długości 7 znaków wypełnione
zerami (poza tym co wypełni sama liczba)
11 / 12
Zadanie domowe
Zad. 1.
Napisz skrypt wektory.py, który ma policzyć kąt pomiędzy dwoma
wektorami na płaszczyźnie (tzn. wektor jest dwuwymiarowy). Odpowiedni
wzór powiązany jest z iloczynem skalarnym wektorów.
Niech skrypt pobiera od użytkownika 4 liczby (dwie współrzędne dla
każdego z wektorów).
Uzyj formatowania napisów, aby wynik zaokrąglony był do 2 miejsc po
przecinku.
Zad. 2.
Przepisz skrypt, który wykonywał proste obliczenia (pierwszy skrypt) tak
żeby wynik zaokrąglony był do 3 miejsc po przecinku, a długość całkowita
pola (tzn. razem z liczbą) wynosiła 10 znaków.
Poza tym skrypt ma po każdej funkcji print informować o liczbach, na
których wykonano działania, np.
Wynik dodawania liczb 2, 11: 13
12 / 12