Podstawy programowania w Pythonie - Wykład 6

advertisement
Podstawy programowania w Pythonie
Wykład 6
dr Andrzej Zbrzezny
Instytut Matematyki i Informatyki
Akademia Jana Długosza w Cz˛estochowie
21 listopada 2012
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
1 / 18
Podstawy jezyka
˛
Python
Konwersje typów
Funkcja int przekształca swój argument, o ile to możliwe, na liczbe˛
całkowita.
˛
>>> int("30")
30
>>> int("3O")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '3O'
>>> int(-2.3)
# obcina cz˛
eść ułamkowa˛
-2
>>> int(3.9999)
# obcina cz˛
eść ułamkowa˛
3
>>> int()
# można ja˛ wywołać bez argumentu
0
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
2 / 18
Podstawy jezyka
˛
Python
Konwersje typów
Jeżeli pierwszy argument funkcji int jest łańcuchem znaków, to można
użyć drugiego argumentu, który musi być liczba˛ całkowita˛ z przedziału
[2, 36] określajac
˛ a˛ podstawe˛ systemu liczbowego.
>>> int(110, 2)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: int() can’t convert non-string with explicit base
>>> int(’110’, 2)
6
>>> int(’123’, 2)
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '123'
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
3 / 18
Podstawy jezyka
˛
Python
Konwersje typów
Funkcja float przekształca liczby całkowite i łańcuchy znaków na
liczby zmiennoprzecinkowe.
>>> float("3.1417")
3.1417
>>> float(32)
32.0
>>> float(0j)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float
>>> float()
0.0
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
4 / 18
Podstawy jezyka
˛
Python
Konwersje typów
Funkcja str przekształca swój argument na łańcuch znaków.
>>> str(32)
'32'
>>> str(3.1417)
'3.1417'
>>> str(True)
'True'
>>> str(true)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name ’true’ is not defined
>>> str()
''
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
5 / 18
Podstawy jezyka
˛
Python
Konwersje typów
Funkcja complex(a, b) tworzy liczbe˛ zespolona˛ ze swoich
argumentów zgodnie ze wzorem a + b · 1j
>>> complex(3, 5)
(3+5j)
>>> complex(3)
# równoważne wywołaniu complex(3, 0)
(3+0j)
>>> complex()
# równoważne wywołaniu complex(0, 0)
0j
>>> complex(3, 5j)
(-2+0j)
>>> complex(3j, 5j)
-5 + 3j
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
6 / 18
Podstawy jezyka
˛
Python
Konwersje typów
Funkcja complex przekształca argument bed
˛ acy
˛ łańcuchem znaków
na liczbe˛ zespolona.
˛
>>> complex("1+2j")
(1+2j)
>>> complex("1-2j")
(1-2j)
>>> complex("1")
(1+0j)
>>> complex("1j")
1j
>>> complex("1 + 2j")
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: complex() arg is a malformed string
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
7 / 18
Podstawy jezyka
˛
Python
Inne wbudowane funkcje konwertujace
˛
Funkcje bin, oct oraz hex przekształcaja˛ swój argument, który musi
być liczba˛ całkowita˛ na łańcuch znaków.
Wynikiem jest odpowiednio: łańcuch binarny, łańcuch oktalny oraz
łańcuch heksadecymalny.
>>> bin(2012)
'0b11111011100'
>>> oct(2012)
'0o3734'
>>> hex(2012)
'0x7dc'
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
8 / 18
Podstawy jezyka
˛
Python
Funkcja wbudowana chr
Wywołanie funkcji chr z argumentem m zwraca łańcuch znaków
reprezentujacy
˛ znak, którego punktem kodowym w Unicode jest
liczba całkowita m.
Przykładowo, chr(80) zwraca łańcuch znaków 'P'.
Zakres wartości dla argumentu funkcji chr obejmuje liczby
od 0 do 1114111 (0x10FFFF w systemie szesnastkowym).
Jeżeli wartość argumentu funkcji chr jest poza tym zakresem,
to zostanie wygenerowany bład
˛ ValueError.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
9 / 18
Podstawy jezyka
˛
Python
Przykład
def main():
# Litery alfabetu angielskiego
print_chars(65, 91)
# duże
print_chars(97, 123)
# małe
print_chars(0x391, 0x3A9)
# duże
print_chars(0x3B1, 0x3C9)
# małe
print_chars(0x410, 0x42F)
# duże
print_chars(0x430, 0x44F)
# małe
litery
litery
greckie litery
greckie litery
litery cyrylicy
litery cyrylicy
def print_chars(first, last):
for j in range(first, last):
print(chr(j), end = ’ ’)
print()
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
10 / 18
Podstawy jezyka
˛
Python
Funkcje wbudowana ord
Wywołanie funkcji ord z argumentem bed
˛ acym
˛
ciagiem
˛
reprezentujacym
˛
jeden znak Unicode, zwraca liczbe˛ całkowita˛
reprezentujac
˛ a˛ punkt kodowy w Unicode tego znaku.
Przykładowo:
ord('A') zwraca liczbe˛ całkowita˛ 65,
ord('\uFFFF') zwraca liczbe˛ 65535,
ord('\U0010FFFF') zwraca liczbe˛ 1114111.
Funkcja ord jest funkcja˛ odwrotna˛ do funkcji chr:
ord(chr(m)) = m
chr(ord(c)) = c
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
11 / 18
Podstawy jezyka
˛
Python
Przykład
def main():
print_char_numbers("0123456789")
print_char_numbers("A˛ĆEŁ
˛ ŃÓŚŹŻ")
print_char_numbers("ać˛
˛ ełńóśźż")
def print_char_numbers(string):
for c in string:
print(c, ":", ord(c), end = "
print()
")
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
12 / 18
Podstawy jezyka
˛
Python
Instrukcja iteracyjna while (dopóki)
Ogólna postać instrukcji iteracyjnej while jest nastepuj
˛ aca:
˛
while wyrażenie:
blokInstrukcji
else:
blokIntrukcjiElse
przy czym fragment
else:
blokIntrukcjiElse
może nie wystapić.
˛
Instrukcja iteracyjna while jest używana do wykonywania bloku
instrukcji tak długo, jak długo wartościa˛ logiczna˛ wyrażenia
wyrażenie jest True.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
13 / 18
Podstawy jezyka
˛
Python
Semantyka instrukcji iteracyjnej while
Każdorazowo wartościowane jest wyrażenie wystepuj
˛ ace
˛ po
słowie kluczowym while; jeśli jest ono prawdziwe, wykonywany
jest blokInstrukcji.
Jeśli za którymś razem (być może już za pierwszym) wartościa˛
wyrażenia bedzie
˛
False, nastepuje
˛
przerwanie wykonywania
instrukcji iteracyjnej.
Jeśli w instrukcji wystepuje
˛
klauzula else, to wykonywany jest
zwiazany
˛
z nia˛ ciag
˛ instrukcji.
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
14 / 18
Schemat blokowy instrukcji iteracyjnej while bez
klauzuli else
✲
❄
❅
❅
❅
False
warunek ❅
❅
❅
❅
❅
True
❄
blokInstrukcji
❄
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
15 / 18
Podstawy jezyka
˛
Python
Przykład (Suma liczb od 1 do n)
"""Oblicza sum˛
e liczb naturalnych od 1 do n"""
#!/usr/bin/env python3
def main():
n = int(input("Podaj liczb˛
e naturalna:
˛ "))
s = 0
j = 1
while j <= n:
s = s + j
j = j + 1
print("Suma liczb od 1 do", n, "wynosi", s)
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
16 / 18
Podstawy jezyka
˛
Python
Przykład (Ciag
˛ Collatza)
def main():
n = int(input("Podaj liczb˛
e naturalna:
˛ "))
seq3np1(n)
def seq3np1(n):
while n > 1:
print(n, end = ", ")
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
print(n, end = ".\n")
if __name__ == "__main__":
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
17 / 18
Podstawy jezyka
˛
Python
Przykład (Ilość cyfr w liczbie naturalnej)
def main():
n = int(input("Podaj liczb˛
e naturalna˛ dodatnia:
˛ "))
if n > 0:
print("Ilość cyfr liczby", n, ":", n_digits(n))
else:
print("Skup si˛
e! Powiedziałem \"Dodatnia\"!")
˛
def n_digits(n):
count = 0
while n > 0:
count += 1; n //= 10
return count
if __name__ == "__main__":
main()
dr Andrzej Zbrzezny (IMI AJD)
Podstawy programowania w Pythonie
21.11.2012
18 / 18
Download