Jason. Cała informatyka w jednym miejscu!

Niniejszy artykuł będzie stanowił dalszą część o typach danych omówionych wczoraj. Rzucimy światło na sprawę "przenoszenia" z jednego typu na drugi. Konwersja typów danych w Pythonie jest dziecinnie prosta i właśnie na niej się skoncentrujemy. To nie będzie długi wywód.

KONWERSJA TYPÓW SPROWADZA SIĘ DO FUNKCJI

Proponuję zajrzeć najpierw do artykułu tłumaczącego dokładnie czym są same typy danych, a dopiero potem czytać dalej to.

WYJAŚNIENIE KONWERSJI

Konwersja polega na zamianie jednego typu zmiennej na drugi typ, o ile jest to możliwe z logicznego punktu widzenia. Pisząc "logiczny" mam na myśli sens w dokonywaniu takiej konwersji. Należy przez to rozumieć fakt, iż nie każde przeniesienie z jednego typu na drugi ma jakikolwiek sens. Na przykład nie da się przekonwertować tekstu na liczbę. Ktoś wie na przykład jaka liczba może kryć się za wyrazem "mąka"? No właśnie :D.

To można porównać do operacji rzutowania typu, przy czym to nie są te same operacje. Natomiast w ostatecznym rozrachunku otrzymujemy inny typ danych, zarówno za pomocą rzutowania, jak i konwersji.

ZASADA DZIAŁANIA

Cała filozofia polega na przypisaniu wartości zwracanej przez jedną z funkcji konwertujących. Najczęściej wynik przypisuje się do zmiennej, ale to nie jest żadne wymaganie. Konwersja typów zadziała również "wtłoczona" do innego wywołania funkcji, jeśli mamy pewność że nie przyda się ona w późniejszym toku programu. Efekty końcowe są dwa: albo konwersja pójdzie gładko bez żadnych zastrzeżeń, albo program zgłosi wyjątek ze względu na brak upatrywanej logiki ;).

Przeniesienie łańcucha znaków o wartości "13" na liczbę całkowitą pójdzie bez najmniejszego problemu, ale jak dorzuci się jeszcze jakąś literkę czy inny znak niemający nic wspólnego z cyframi, to jak później program ma się zachować? Wtedy "zgłupieje" i zgłosi wyjątek, bo co innego może w tej sytuacji zrobić :D?

LISTA FUNKCJI KONWERTUJĄCYCH

Teraz sedno artykułu. Zostawiam parę funkcji konwertujących celem zaprezentowania przykładów jak prosto w języku Python dokonywana jest konwersja typów danych z jednego na drugi.

int()

Konwersja typu na liczbę całkowitą ("int"). Dozwolone jest wstawienie liczby całkowitej, liczby zmiennoprzecinkowej (wówczas ułamek jest "obcinany", nie zaokrąglany!), wartości logicznej "True" / "False" (na 1 / 0) oraz łańcucha znaków składającego się z samych cyfr. Ciekawostka jest taka, że funkcja dopuszcza możliwość wprowadzenia liczby zmiennoprzecinkowej, ale gdy łańcuch znaków jest w formacie liczby zmiennoprzecinkowej, wtedy jest wyjątek!

Funkcja "int" w Pythonie (konwersja typów)

Konwersja typów na liczbę całkowitą przebiega poprawnie przy podaniu liczby całkowitej, liczby zmiennoprzecinkowej, wartości boolowskiej oraz łańcucha znaków składającego się z samych cyfr, lecz BEZ części ułamkowej!

float()

Konwersja na liczbę zmiennoprzecinkową ("float"). Funkcja poradzi sobie z liczbą zmiennoprzecinkową, liczbą całkowitą, łańcuchem znaków i to zarówno w formie liczby całkowitej, jak i zmiennoprzecinkowej (w przeciwieństwie do poprzednika) oraz z wartością logiczną (0.0 dla "False" i 1.0 dla "True").

Funkcja "float" w Pythonie (konwersja typów)

Konwersja typów na liczbę zmiennoprzecinkową jest możliwa w nieco szerszym spektrum niż przy "int" ze względu na łańcuch znaków, który zostanie przyjęty z częścią ułamkową albo bez niej.

str()

Zamiana typu na łańcuch znaków. W tym przypadku nie ma żadnych przeciwwskazań ani ograniczeń. Czy to liczba całkowita, czy zmiennoprzecinkowa, czy to wartość logiczna, czy inny literał znakowy, "str" radzi sobie z każdym typem danych bez problemu.

Funkcja "str" w Pythonie (konwersja typów)

"str" zamienia argument na łańcuch znaków i może on być dowolnego typu.

bool()

Zamiana typu na wartość boolowską, czyli na "True" lub "False". Na podstawie przeprowadzonych przeze mnie wywołań stwierdzam, że konwersja typów w każdym przypadku jest bezbolesna. Możemy bezkarnie wstawić liczbę całkowitą, liczbę zmiennoprzecinkową czy łańcuch znaków. Zasada co do przydzielania wartości jest prosta. Jeżeli liczba w dowolnej formie jest różna od zera, to zawsze będzie "prawda". W przeciwnym razie, otrzymamy "fałsz". W przypadku łańcuchów znaków, "fałszem" będzie to pusty łańcuch znaków, a "prawdą", każdy dowolny posiadający w sobie jakikolwiek znak. Tyle!

Funkcja "bool" w Pythonie (konwersja typów)

"bool" pozwala zamienić podany argument na jedną z wartości logicznych. "Prawda" jest wtedy, gdy wartość jest różna od zera!


To wszystko w tym temacie. Nic strasznego, trzeba tylko wiedzieć jakie typy danych są dopuszczalne i przewidzieć oczekiwany wynik. Reszta wejdzie sama w krew :).

PODOBNE ARTYKUŁY