4: Typy

Od tej lekcji przykłady i pola wprowadzania kodu mają dodatkowe przyciski Otwórz w konsoli i Wizualizacja. Używaj ich do pomocy w debugowaniu i badaniu kodu.

W programie Hello, World! zobaczyliśmy, że Python mógł powtórzyć dla nas zdanie. Widzieliśmy również kilka przykładów z operacjami arytmetycznymi i liczbami. Liczby i zdania są zasadniczo różnymi obiektami, co powoduje błąd w Pythonie podczas próby mieszania ich w niewłaściwy sposób:

Przykład
Próba zestawiania łańcucha i liczby.

Jak widać, otrzymujemy błąd informujący, że dwa argumenty w poleceniu max są różnego typu. Błąd ten jest dobrym wprowadzeniem do pozostałej części lekcji:

  • "Hello, World!" jest łańcuch (ang. string), który ma skrót w Pythonie str. Łańcuch (string) to dowolna sekwencja cyfr, liter i znaków interpunkcyjnych; na ten temat więcej w lekcji 7A.
  • 35 to liczba całkowita (ang. integer), która ma skrót w Phytonie int. Liczbą całkowitą (integer) jest po prostu zwykła liczba bez miejsc po przecinku; na przykład, 42, -12 i 0 są liczbami całkowitymi.

Używanie nieodpowiedniego typu dla obiektu jest częstą przyczyną błędów w programach. To tak, jakbyś próbował wypić kanapkę: nie możesz tego robić, ponieważ możesz pić tylko coś płynnego, a kanapka jest typu stałego.

Można określić(zbadać) typ obiektu wywołując dla tego obiektu funkcję type.

Przykład
Niektóre przykłady typów.

(Znaczenie class jest podobne do type). Powyższy przykład ilustruje, że liczby dzielimy na dwa różne typy, int, które wspomniano powyżej i float, które są używane do przechowywania liczb dziesiętnych. Powinieneś myśleć o float jako o liczbach niedokładnych lub ich przybliżonych wartościach (wyjaśnimy więcej w lekcji 7B). Zwykle można mieszać wielkości typu float z int, a wynik operacji na takich różnych obiektach będzie typu float.

Przykład
Mieszanie int i float.

W rzeczywistości Python podczas operacji na float i int konwertuje int do float, a następnie pracuje już na dwóch wielkościach typu float. Zauważ, że w Pythonie część całkowitą oddzielamy od części dziesiętnej kropką '.' a nie przecinkiem ','.

Zadanie wielokrotnego wyboru: Floating
Jeśli w powyższym programie zmienimy 1.2 na 1.5 to, co uzyskamy w pierwszej linii wyjściowej powyższego przykładu?
Bardzo dobrze! Musimy wyjaśnić tutaj dwa fakty, żeby pokazać dlaczego z zostało wydrukowane jako 3.0.
  • W operacji x * y są mieszane dwa typy int i float, które oba Python traktuje jako float i przekazuje wynik dla z też jako float.
  • Wartość matematyczna z 1.5 razy 2, wynosi 3, ale jest przechowywana jako typ float. Gdy Python drukuje dowolną liczbę typu float, i jeśli jest to liczba całkowita, drukowanie to kończy .0 aby poinformować, że wartość po przecinku jest nieistotna.
Warto też zauważyć, że wartość i typ y nigdy się nie zmienił.

Często trzeba zmienić dane z jednego typu na inny. Tak, jak można konwertować kanapkę ze stałej do ciekłej formy przy użyciu miksera, tak można zmieniać dane z jednego typu na inny przy użyciu funkcji typecast. Piszesz nazwę pożądanego nowego typu w taki sam sposób, jak funkcję, np.

x = float("3.4")
print(x-1)
zamienia łańcuch (string) "3.4" na liczbę dziesiętną (float) 3.4, a następnie drukuje 2.4. Bez typecast, program by nie zadziałał, ponieważ nie można odjąć liczby od łańcucha.

Czasami Python pozwala łączyć łańcuchy i liczby za pomocą operacji arytmetycznych. Instrukcja print("hots" * 2) drukuje hotshots. Pomnożenie łańcucha znaków s przez liczbę całkowitą n oznacza w Pythonie, umieszczenie n kopii ciągów jeden po drugim. Zobaczymy później, że "dodawanie dwóch łańcuchów" jest również zdefiniowane w Pythonie.

Obiekty różnych typów odmiennie zachowują się przy konwersji:

  • konwersja float na int traci informacje po przecinku dziesiętnym, np. int(1.234) daje 1, a int(-34.7) daje -34.
  • konwersja str do int powoduje błąd, jeśli ciąg nie jest sformatowany dokładnie tak, jak liczba całkowita, np. int("1.234") powoduje błąd.
  • konwersja str na float powoduje błąd, jeśli ciąg nie jest liczbą, np. float("sandwich") powoduje błąd.

Typowe użycie typecastingu to konwertowanie danych wejściowych użytkownika, które zawsze są łańcuchem (typu strig), do postaci liczbowej. Oto ilustracja

Przykład
Ćwiczenie na zamianę typu.

Oto jeszcze jedno ćwiczenie na koniec lekcji.

Ponieważ jest wiele poleceń edytora, niektóre z nich zostały przeniesione do menu Więcej akcji...

Zadanie na kodowanie : Smaczne Zamiany
Napisz program pomoże Ci nakarmić znajomych na przyjęciu poprzez zastosowanie matematyki do kwadratowej pizzy. Załóżmy, że nasz automatyczny tester definiuje łańcuch inputStr który jest łańcuchem dziesiętnym, oznaczającym długość boku L pizzy w cm. Powierzchnia pizzy powinna być obliczona przy użyciu wzoru A = L*L. Następnie przy założeniu, że każda osoba musi zjeść 100 cm2 pizzy, obliczyć liczbę osób, która może się najeść, podając ją w zaokrągleniu w dół do najbliższej liczby całkowitej. Wskazówka

Przykład: jeśli inputStr wynosi"17.5", otrzymamy 306.25 cm2, więc 3 jest to prawidłowy wynik.

Kiedy skończysz, przejdź do następnej lekcji.