Podstawy programowania w Pythonie Wykład 6 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 21 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 21.11.2012 1 / 18
Konwersje typów Funkcja int przekształca swój argument, o ile to możliwe, na liczbę 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ęść ułamkową -2 >>> int(3.9999) # obcina część ułamkową 3 >>> int() # można ją wywołać bez argumentu 0 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 21.11.2012 2 / 18
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 podstawę 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
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
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
Konwersje typów Funkcja complex(a, b) tworzy liczbę 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
Konwersje typów Funkcja complex przekształca argument będacy łańcuchem znaków na liczbę 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
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
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
Przykład def main(): # Litery alfabetu angielskiego print_chars(65, 91) # duże litery print_chars(97, 123) # małe litery print_chars(0x391, 0x3A9) # duże greckie litery print_chars(0x3b1, 0x3C9) # małe greckie litery print_chars(0x410, 0x42F) # duże litery cyrylicy print_chars(0x430, 0x44F) # małe 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
Funkcje wbudowana ord Wywołanie funkcji ord z argumentem będacym ciagiem reprezentujacym jeden znak Unicode, zwraca liczbę całkowita reprezentujac a punkt kodowy w Unicode tego znaku. Przykładowo: ord('a') zwraca liczbę całkowita 65, ord('\uffff') zwraca liczbę 65535, ord('\u0010ffff') zwraca liczbę 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
Przykład def main(): print_char_numbers("0123456789") print_char_numbers("ąćęłńóśźż") print_char_numbers("ąćęłńóśźż") 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
Instrukcja iteracyjna while (dopóki) Ogólna postać instrukcji iteracyjnej while jest następujaca: 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
Semantyka instrukcji iteracyjnej while Każdorazowo wartościowane jest wyrażenie występujace 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 będzie False, następuje przerwanie wykonywania instrukcji iteracyjnej. Jeśli w instrukcji występuje 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
Przykład (Suma liczb od 1 do n) """Oblicza sumę liczb naturalnych od 1 do n""" #!/usr/bin/env python3 def main(): n = int(input("podaj liczbę naturalną: ")) 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
Przykład (Ciag Collatza) def main(): n = int(input("podaj liczbę naturalną: ")) 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
Przykład (Ilość cyfr w liczbie naturalnej) def main(): n = int(input("podaj liczbę naturalną dodatnią: ")) if n > 0: print("ilość cyfr liczby", n, ":", n_digits(n)) else: print("skup się! Powiedziałem \"Dodatnią\"!") 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