1 3 lab2.pdf

(574 KB) Pobierz
Zajęcia – częśd II
Etap 1. Instrukcja warunkowa
Służy do sprawdzenia jakiegoś warunku. Umieszczone po niej – po wcięciu – instrukcje wykonają się tylko,
jeżeli warunek ten był spełniony.
Przykłady:
if 'c' in 'abecadło':
print("W wyrazie 'abecadło' występuje literka 'c'")
wiek = 18
if wiek == 18:
print("Wszystkiego najlepszego z okazji osiągnięcia pełnoletności !")
Do porównywania ze sobą różnych wartości można użyd wielu operatorów. Tabelka opisująca je znajduje się
poniżej.
Etap 2. Pętle
Sekwencje:
Do tworzenia sekwencji, których elementy należą do ciągu arytmetycznego, używamy funkcji
range:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Pojedynczy parametr oznacza koniec (tj. pierwszy element nie należący do) sekwencji (pierwszym elementem
zawsze jest zero). Aby wyświetlid kwadraty liczb od 0 do 9, napiszemy:
>>> for x in range(10):
print x,' do potegi 2 =',x*x
Aby zmienid pierwszy element tworzonej sekwencji używamy funkcji
range
z dwoma parametrami (początek i
koniec):
>>> range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Aby wyświetlid kwadraty liczb od 3 do 9, napiszemy:
>>> for x in range(3,10):
print x,' do potegi 2 =',x*x
Aby zmienid krok pomiędzy elementami tworzonej sekwencji używamy funkcji
range
z trzema parametrami
(początek, koniec i krok):
>>> range(1,10,2)
[1, 3, 5, 7, 9]
Zadania do wykonania w tym momencie:
1.
odwrócid kolejnośd elementów od 1 do 9
2.
wyświetlid kwadraty liczb malejąco od 9 do 1
3.
wyświetlid kwadraty liczb nieparzystych malejąco od 9 do 1
Formatowanie liczb
Celem pętli często jest wyświetlenie kolumny liczb czy liczby w określonym formacie. Służy do tego tzw. Ciąg
formatujący, który
składa się ze znaku %, po którym następują opcje formatowania, ilośd znaków
przeznaczonych do wyświetlenia oraz typ danej do wyświetlenia (przy czym tylko trzeci element – tj. typ
danych jest wymagany). Typ danej sygnalizujemy pojedynczą literą. I tak:
Litera
s
oznacza napis (konwertuje każdy typ danych na tekst), np.:
>>> print "%s" % 1
Proszę sprawdzid, co będzie rezultatem wykonania kodu:
>>> print "%s" % range(6)
A co:
>>> print "%s" % "txt"
?
Litera
c
oznacza pojedynczy znak w kodzie ASCII, np.:
>>> print "%c" % "A"
Sprawdź jaki znak zostanie wyświetlony po wykonaniu kodu:>>>
print "%c" % 077?
A jaki dla kodu:
>>> print "%c" % 33
Litera
i
oznacza dziesiętną liczbę całkowitą (konwertuje kompatybilny typ danych na liczbę całkowitą),
np.:
>>> print "%i" % 0xff
co da w efekcie
255
A co da w efekcie:
>>> print "%i" % 2.2
Albo
>>> print "%i" % "11"
Litera
f
oznacza liczbę zmiennopozycyjną w postaci ułamka dziesiętnego, np.:
>>> print "%f" % 123
Co da w efekcie
123.000000
A co będzie wynikiem kodu:
>>> print "%f" % 1.23
?
Ustalenie długości pola do wyświetlenia tekstu
Czasami istnieje potrzeba wyświetlenia tekstu w określonej formie: np. kolumnowej. Wtedy można
prawdziwie dostrzec zalety formatowania. Jeżeli chcemy
ustalid długośd wyświetlenia każdej liczby np. na wartośd 4
wystarczy użyd następującej formy:
print "%4i” % x
>>> for x in range(1,10,1):
print "%4i" % x
Formatując liczby zmiennopozycyjne możemy także ustalid nie tylko całkowitą długośd, ale także liczbę
wyświetlanych miejsc po przecinku (np. na 3):
>>> for x in range(5,100,10):
print "Pierwiastkiem liczby %2i jest %5.3f" % (x,x**0.5)
Zadania do wykonania w tym momencie:
1.
wyświetlid liczby oraz ich kwadraty (od 1 do 10), przy czym liczby bez kwadratów na długości 4 znaków, a ich
kwadraty na długości 6 cyfr.
Pętle zagnieżdżone
Pętle mogą zawierad inne pętle – mówimy wtedy o nich, że są zagnieżdżone. Spróbujmy wygenerowad
tabliczkę mnożenia:
>>> for x in range(1,11):
print # przejście do nowego wiersza
for y in range(1,11):
print "%3i" % (x*y)
Etap 3. Łaocuchy znaków
Metody Listy
list(s) - konwertuje sekwencję s na listę
s.append(x) - dodaje nowy element x na koocu s
s.count(x) - zlicza wystąpienie x w s
s.index(x) - zwraca najmniejszy indeks i, gdzie s[i] == x
s.pop([i]) - zwraca i-ty element i usuwa go z listy. Jeżeli nie podamy parametru to usunięty zostanie ostatni
element
s.remove(x) - odnajduje x i usuwa go z listy s
s.reverse() - odwraca w miejscu kolejnośd elementów s
s.sort([funkcja]) - Sortuje w miejscu elementy. "funkcja" to funkcja porównawcza
Metody Napisowe
s.capitalize() - zmienia pierwszą literę na dużą
s.center(długośd) - Centruje napis w polu o podanej długości
s.count(sub) - zlicza wystąpienie podciągu sub w napisie s
s.isalnum() - sprawdza czy wszystkie znaki są alfanumeryczne (a więc: cyfry i litery "a"-"z", "A"-"Z", "0"-"9")
s.isdigit() - sprawdza czy wszystkie znaki są cyframi
s.islower() - sprawdza czy wszystkie litery są małe
s.isupper() - sprawdza czy wszystkie litery są duże
s.join(t) - łączy wszystkie napisy na liście t używając s jako separatora
l = ['a', 'b', 'c']
s = '.'
print s.join(l)
s.lstrip() - usuwa początkowe białe znaki
s.replace(old, new) - zastępuje stary podciąg nowym
s.rstrip() - usuwa koocowe białe znaki
s.split(separator) - dzieli napis używają podanego separatora
s.strip() - usuwa początkowe i koocowe białe znaki
print "ala ma kota a kot ma alę".islower()
True
print "ala ma kota a kot ma alę".isalpha()
False
Python odpowie nam na nasze pytania, zwracając
True
(czyli „Prawda”) lub
False
(czyli „fałsz”). Ostatnie
porównanie sprawdzało, czy nasze zdanie zawarte w napisie „
ala ma kota a kot ma alę
” składa się
wyłącznie z liter. Niestety, występują tam spacje - stąd wartośd False.
Metoda Split jest bardzo użyteczna
Metoda ta zwraca listę wszystkich słów w łaocuchu, stosując *str+ jako separator. Dzieli ona wszystkie wyrazy w łaocuchu
oddzielone białą spacją. Można też wybrad ile podziałów ma byd dokonanych i za to odpowiada parametr [num].
Składnia jest następująca:
str.split(str="", num=string.count(str))
Przykład:
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );
print str.split(' ', 1 );
Wynik:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
Zadania do wykonania z drugiej części zajęd:
1. Sprawdź, na którym miejscu znajduje się
rule
w tekście:
"Three Rings for the Elven-kings under the sky,|
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.< ;br /> One Ring to rule them all, One Ring to find
them,
One Ring to bring them all and in the darkness bind them
In the Land of Mordor where the Shadows lie".
Rozwiązania
"""Three Rings for the Elven-kings under the sky,
... Seven for the Dwarf-lords in their halls of stone,
... Nine for Mortal Men doomed to die,
... One for the Dark Lord on his dark throne
... In the Land of Mordor where the Shadows lie.
... One Ring to rule them all, One Ring to find them,
... One Ring to bring them all and in the darkness bind them
... In the Land of Mordor where the Shadows lie""".find('rule')
256
2. Ile razy występuje w nim słówko
Ring?
>>>
...
...
...
...
...
...
...
1
"""Three Rings for the Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness bind them
In the Land of Mordor where the Shadows lie""".count('Ring')
3. Wczytaj pełne imię użytkownika. Jeżeli jego ostatnia litera to 'a', wypisz komunikat, że jest kobietą.
Co się stanie jeżeli użytkownik wpisze swoje imię wielkimi literami? Rozwiąż ten problem na dwa
sposoby. Wskazówka: użyj odpowiedniej metody.
imie = input('Podaj swoje pełne imię: ')
if imie[-1] == 'a' or imie[-1] == 'A':
print('Jesteś kobietą')
Etap 3. Listy i pętla for
Krotki posiadają jedną wadę - są niezmienne (jednak dzięki temu szybsze). Tej przypadłości nie posiadają listy
(ang. list), które po stworzeniu możemy edytowad. Tworząc listę, używamy nawiasów kwadratowych.
>>> lista = ['Ala', 'Ola', 'Basia']
>>> lista[0]
'Ala'
Zgłoś jeśli naruszono regulamin