Podstawy programowania w Pythonie

Transkrypt

Podstawy programowania w Pythonie
Podstawy programowania w Pythonie
Wykład 7
dr Andrzej Zbrzezny
Instytut Matematyki i Informatyki
Akademia Jana Długosza w Cz˛estochowie
28 listopada 2012
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
1/1
Podstawy jezyka
˛
Python
Instrukcja break
Instrukcja break powoduje wyjście z najbliżej zagnieżdżonej petli
˛
for lub while.
def main():
s = 0
while True:
a = input("Podaj kolejna˛ liczb˛
e: ")
if a == "":
break
s = s + float(a)
print("Suma wczytanych liczb wynosi", s)
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
2/1
Podstawy jezyka
˛
Python – instrukcja break
Przykład
import turtle
def main():
w = turtle.Screen(); t = turtle.Turtle()
t.hideturtle(); t.speed(0); t.color(’red’, ’yellow’)
t.goto(-300, 0); sp = t.position()
t.begin_fill()
while True:
t.forward(600); t.left(170)
if abs(sp - t.pos()) < 1:
break
t.end_fill()
w.mainloop()
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
3/1
Podstawy jezyka
˛
Python
Instrukcja break
W przypadku gdy instrukcja iteracyjna for lub while zakończy
sie˛ z powodu wykonania instrukcji break, blok instrukcji po
klauzuli else nie zostanie wykonany.
def main():
s = input("Podaj łańcuch znaków: ")
for c in s:
if c == ’$’:
print("Znak ’$’ został znaleziony!")
break
else:
print("Znak ’$’ nie został znaleziony")
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
4/1
Podstawy jezyka
˛
Python
Instrukcja continue
Instrukcja continue powoduje pominiecie
˛
wszystkich instrukcji
z najbliżej zagnieżdżonej petli
˛ for lub while, w której wystepuje
˛
i przejście do kolejnego kroku iteracji.
def main():
n = int(input("Podaj liczb˛
e naturalna:
˛ "))
for a in range(2, n):
if a % 2 == 0:
print("Kolejna parzysta liczba to", a)
continue
print("Kolejna liczba to", a)
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
5/1
Podstawy jezyka
˛
Python
Instrukcja pass
Instrukcja pass niczego nie robi. Może być użyta wsz˛edzie tam,
gdzie wymagana jest jakaś instrukcja z powodów składniowych,
ale program nie przewiduje w tym miejscu żadnego działania.
while True:
pass # Czekaj na przerwanie z klawiatury (Ctrl+C)
Instrukcja pass może być także użyta w procesie stopniowego
tworzenia programu: jako ciało funkcji lub ciało instrukcji złożonej.
def moja_bardzo_sprytna_funkcja(a, b, c):
pass # Pami˛
etaj, aby mnie zaimplementować!
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
6/1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Oprócz liczb Python może również manipulować łańcuchami
znaków, które można wyrazić na pare˛ sposobów.
Moga˛ one być objete
˛ znakami apostrofu lub znakami cudzysłowu:
>>> 'informatyka'
'informatyka'
>>> "informatyka"
'informatyka'
>>> 'A\'propos'
"A'propos"
>>> "A'propos"
"A'propos"
Łańcuchy znaków moga˛ być także objete
˛ potrójnymi znakami
apostrofu lub potrójnymi znakami cudzysłowu.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
7/1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Interpreter wypisuje wynik działań na napisach w ten sam sposób,
w jaki sa˛ one wprowadzane.
Sa˛ one objete
˛ apostrofami lub cudzysłowami i zawieraja˛
ewentualnie inne znaki poprzedzone znakiem ukośnika (\), tak
aby w sposób dokładny pokazać zawartość napisu.
Łańcuch znaków objety
˛ jest para˛ cudzysłowów, jeśli zawiera tylko
apostrofy, w przeciwnym wypadku objety
˛ jest para˛ apostrofów.
Funkcja print, może zostać użyta do wypisywania łańcuchów
znaków bez okalajacych
˛
je cudzysłowów i bez znaków cytowania.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
8/1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Łańcuchy znaków moga˛ być sklejane za pomoca˛ operatora +
i powielane za pomoca˛ operatora *.
>>> print("Hello" + ", " + "world!")
Hello, world
>>> print(3 * "Yes! ")
Yes! Yes! Yes!
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
9/1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Łańcuchy znaków można indeksować. Pierwszy znak w łańcuchu
ma indeks (numer porzadkowy)
˛
0.
Nie istnieje osobny typ obejmujacy pojedyńcze znaki – znak jest
po prostu napisem o długości jeden.
Łańcuchy znaków w Pythonie nie moga˛ być modyfikowane. Próba
przypisania do zaindeksowanej pozycji w łańcuchu powoduje
powstanie błedu.
˛
>>> s = "programowanie"
>>> s[0] = "P"
Traceback (most recent call last):
File «stdin>", line 1, in <module>
TypeError: ’str’ object does not support item assignment
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
10 / 1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Podłańcuchy znaków moga˛ zostać wyspecyfikowane za pomoca˛
notacji tzw. wykrawania: dwóch indeksów przedzielonych
dwukropkiem:
>>> "radość"[0:3]
'rad'
>>> "radość"[2:6]
'dość'
Indeksy wykrawania posiadaja˛ użyteczne argumenty domyślne:
pominiety
˛ pierwszy indeks posiada domyślna˛ wartość zero,
pominiety
˛ drugi domyślnie równy jest długości łańcucha znaków,
którego dotyczy wykrawanie.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
11 / 1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Operacji wykrawania posiada nastepuj
˛ ac
˛ a˛ użyteczna˛ własność:
łańcuchy s[:i] + s[i:] oraz s sa˛ równe.
>>> "radość"[:3] + "radość"[3:] == "radość"
True
Niepoprawne indeksy wykrawania obsługiwane sa˛ dość ostrożnie:
indeks, który jest zbyt duży, zastepowany
˛
jest długościa˛ łańcucha,
ograniczenie górne, które jest mniejsze od ograniczenia dolnego,
powoduje powstanie pustego napisu.
>>> "radość"[:9]
'radość'
>>> "radość"[3:2]
''
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
12 / 1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Aby wyznaczyć podciag,
˛ liczac
˛ od prawej strony danego napisu,
używa sie˛ indeksów bed
˛ acych
˛
liczbami ujemnymi:
>>> "radość"[-1]
'ć'
>>> "radość"[-2]
'ś'
>>> "radość"[-3:]
'ość'
>>> "radość"[:-1]
'radoś'
# Ostatni znak
# Przedostatni znak
# Trzy ostatnie znaki
# Wszystkie, prócz ostatniego
Ujemne wykrojenia, które przekraczaja˛ ograniczenia napisu sa˛
skracane.
Wbudowana w interpreter funkcja len zwraca długość łańcucha.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
13 / 1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Napisy można porównywać przy użyciu standardowych
operatorów relacyjnych: ==, ! =, <, <=, > i >=.
Wynik porównania zgodny jest porzadkiem
˛
leksykograficznym
wyznaczonym przez wartości punktów kodowych w Unicode
znaków bioracych
˛
udział w porównaniu.
>>> "Python" < "informatyka"
True
>>> "Python" < "Informatyka"
False
>>> "łopata" < "miotła"
False
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
14 / 1
Podstawy jezyka
˛
Python
Łańcuchy znaków czyli napisy
Operator in słuzy do testowania czy dany napis jest podnapisem
innego napisu.
Operator not in słuzy do testowania czy dany napis nie jest
podnapisem innego napisu.
>>> "gram" in "programowanie"
True
>>> "program" in "programowanie"
True
>>> "nie" in "programowanie"
True
>>> "grama" in "programowanie"
False
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
15 / 1
Podstawy jezyka
˛
Python – napisy
Przykład
def main():
napis = input("Podaj łańcuch znaków: ")
print(remove_vovels(napis))
def remove_vovels(s):
""" Usuwa samogłoski z napisu s"""
vowels = "AAE
˛ EIOÓUa
˛
ae˛
˛ eioóu"
t = ""
for c in s:
if c not in vowels:
t += c
return t
if __name__ == "__main__":
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
16 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
capitalize()
Zwraca kopie˛ napisu z pierwszym znakiem zmienionym na wielka˛
litere.
˛
count(napis[, poczatek[,
˛
koniec]])
Zwraca ilość nienachodzacych
˛
na siebie wystapie
˛ ń napisu napis
w zakresie [poczatek:koniec].
˛
Opcjonalne argumenty
poczatek
˛
i koniec sa˛ interpretowane tak samo, jak w operacji
wycinania.
endswith(przyrostek[, poczatek[,
˛
koniec]])
Zwraca wynik sprawdzenia, czy napis jest zakończony napisem
przyrostek. Przy wystapieniu
˛
argumentu poczatek,
˛
sprawdzenie rozpoczyna sie˛ od tego znaku. Przy wystapieniu
˛
argumentu koniec porównanie zakończy sie˛ na tym znaku.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
17 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
expandtabs([wielkość])
Zwraca kopie˛ napisu ze wszystkimi znakami tabulacji
zastapionymi
˛
przez znaki spacji. Jeśli wielkość nie zostanie
podana, przyjmuje sie˛ rozmiar tabulacji jako 8 znaków.
find(podnapis[, poczatek[,
˛
koniec]])
Zwraca najniższy indeks takiego wystapienia
˛
napisu podnapis,
aby napis był zawarty w wycinku [poczatek:koniec].
˛
Opcjonalne argumenty poczatek
˛
i koniec sa˛ interpretowane
tak samo, jak w operacji wycinania. Zwraca -1 jeśli napis
podnapis nie został znaleziony.
Funkcja find powinna być używana tylko wtedy, gdy chcemy
poznać pozycje˛ napisu podnapis w danym napisie. Jeżeli chcemy
tylko sprawdzić czy napis podnapis wystepuje
˛
w danym napisie,
to należy użyć operatora in: podnapis in napis
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
18 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
isalnum()
Zwraca wynik sprawdzenia, czy wszystkie znaki napisu sa˛
znakami alfanumerycznymi i napis składa sie˛ przynajmniej
z jednego znaku.
isalpha()
Zwraca wynik sprawdzenia, czy wszystkie znaki napisu sa˛ literami
i napis składa sie˛ przynajmniej z jednego znaku.
isdigit()
Zwraca wynik sprawdzenia, czy wszystkie znaki napisu sa˛ cyframi.
islower()
Zwraca wynik sprawdzenia, czy wszystkie litery napisu sa˛ małymi
literami i napis zawiera przynajmniej jedna˛ mała˛ litere.
˛
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
19 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
isspace()
Zwraca wynik sprawdzenia, czy wszystkie znaki napisu sa˛ białymi
znakami i napis składa sie˛ przynajmniej z jednego znaku.
istitle()
Zwraca wynik sprawdzenia, czy napis ma strukture˛ tytułu, to
znaczy każdy wyraz napisu musi zaczynać sie˛ wielka˛ litera˛
i składać wyłacznie
˛
z małych liter lub znaków nieliterowych.
isupper()
Zwraca wynik sprawdzenia, czy wszystkie litery napisu sa˛ wielkimi
literami i napis zawiera przynajmniej jedna˛ wielka˛ litere.
˛
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
20 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
ljust(szerokość)
Zwraca kopie˛ napisu wyrównana˛ do lewej w napisie o szerokości
szerokość. Wypełnienie jest uzyskane za pomoca˛ znaków
spacji. Jeśli szerokość jest mniejsza od len(s) zwracany jest
oryginalny napis.
lower()
Zwraca kopie˛ napisu zamienionego na małe litery.
lstrip([chars])
Zwraca kopie˛ napisu z usunietymi
˛
znakami z poczatku
˛
napisu.
W przypadku, gdy argument chars nie został podany, lub ma
wartość None, usuniete
˛ zostana˛ białe znaki. Jeżeli argument ten
jest podany i nie ma wartości None, musi być typu napisowego.
Z poczatku
˛
napisu, na rzecz którego wywołana została ta metoda,
zostana˛ usuniete
˛ znaki wchodzace
˛ w skład argumentu chars.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
21 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
replace(stary, nowy[, ile])
Zwraca kopie˛ napisu z wszystkimi wystapieniami
˛
napisu stary
zastapionymi
˛
przez nowy. Jeśli zostanie podany argument ile,
zostanie zastapiona
˛
tylko podana ilość wystapie
˛ ń.
rfind(napis [,poczatek
˛
[, koniec]])
Zwraca najwyższy indeks wystapienia
˛
napisu napis, takiego, aby
napis był zawarty w przedziale [poczatek,
˛
koniec).
Opcjonalne argumenty poczatek
˛
i koniec sa˛ interpretowane
tak samo, jak w operacji wycinania. Zwraca -1 jeśli napis nie
został znaleziony.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
22 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
rjust(szerokość)
Zwraca kopie˛ napisu wyrównana˛ do prawej w napisie o szerokości
szerokość. Wypełnienie jest uzyskane za pomoca˛ znaków
spacji. Jeśli szerokość jest mniejsza od len(s) zwracany jest
oryginalny napis.
rstrip([chars])
Zwraca kopie˛ napisu z usunietymi
˛
znakami z końca napisu.
W przypadku, gdy argument chars nie został podany, lub ma
wartość None, usuniete
˛ zostana˛ białe znaki. Jeżeli argument ten
jest podany i nie ma wartości None, musi być typu napisowego.
Z końca napisu, na rzecz którego wywołana została ta metoda,
zostana˛ usuniete
˛ znaki wchodzace
˛ w skład argumentu chars.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
23 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
startswith(prefix[, start[, end]])
Zwraca wynik sprawdzenia, czy napis zaczyna sie˛ napisem
prefix. Przy wystapieniu
˛
argumentu start, sprawdzenie
rozpoczyna sie˛ od tego znaku. Przy wystapieniu
˛
argumentu end
porównanie zakończy sie˛ na tym znaku.
strip([chars])
Zwraca kopie˛ napisu z usunietymi
˛
znakami z poczatku
˛
i końca
napisu. W przypadku, gdy argument chars nie został podany, lub
ma wartość None, usuniete
˛ zostana˛ białe znaki. Jeśli argument
ten jest podany i nie ma wartości None, musi być typu
napisowego. Z poczatku
˛
i końca napisu, na rzecz którego
wywołana została ta metoda, zostana˛ usuniete
˛ znaki wchodzace
˛
w skład argumentu chars.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
24 / 1
Podstawy jezyka
˛
Python– napisy
Wybrane metody klasy str
swapcase()
Zwraca kopie˛ napisu z małymi literami zamienionymi na wielkie
a wielkimi na małe.
title()
Zwraca kopie˛ napisu zamieniona˛ na strukture˛ tytułu, to znaczy
każdy wyraz napisu zostaje zamieniony na rozpoczynajacy
˛ sie˛
wielka˛ litera˛ z pozostałymi literami zamienionymi na małe.
upper()
Zwraca kopie˛ napisu z wszystkimi literami zamienionymi na
wielkie litery.
zfill(szerokość)
Zwraca napis uzupełniony z lewej strony zerami do podanej
szerokości. W przypadku, gdy wartość argumentu jest mniejsza
od długości napisu, zostanie zwrócony oryginalny napis.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
25 / 1
Podstawy jezyka
˛
Python– napisy
Ćwiczenie (Wybrane metody klasy str)
Uruchom interpreter Pythona 3 bpython3. Przypisz do zmiennej
s łańcuch znaków (np. Twoja˛ ulubiona˛ sentencje).
˛ Wypróbuj dla
tego łańcucha znaków podane na poprzednich slajdach metody
klasy str. Nastepnie
˛
zapisz rezultaty w pliku ImieNazwisko.py
˛
i wyślij w terminie do 11 grudnia do godziny 23.59 do wykładowcy.
Fragment rozwiazania:
˛
>>> s = "Programowanie jest sztuka."
˛
......
>>> s.upper()
'PROGRAMOWANIE JEST SZTUKA'
˛
......
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
28.11.2012
26 / 1

Podobne dokumenty