Jak przekonwertować ciąg na Int w Pythonie (bezpieczne rzutowanie i bazy)

Dowiedz się, jak przekonwertować ciąg znaków na liczbę całkowitą w Pythonie za pomocą funkcji int(). Bezpiecznie obsługuj błędy i konwertuj liczby z formatu binarnego, ósemkowego lub szesnastkowego.

Wypróbuj to rozwiązanie w Edytorze

Przegląd

Konwersja ciągu reprezentującego liczbę na rzeczywistą liczbę całkowitą jest częstym zadaniem podczas tworzenia aplikacji. Proces ten, często nazywany rzutowaniem, jest niezbędny w przypadku surowych danych wprowadzanych przez użytkownika, odczytywania plików konfiguracyjnych, analizowania argumentów z interfejsów wiersza poleceń lub pobierania danych z Internetu. Ponieważ Python jest językiem silnie typowanym, nie można wykonywać operacji matematycznych na ciągach znaków reprezentujących liczby bez ich uprzedniego rzutowania.

Podstawowym narzędziem tej konwersji jest wbudowany w Pythona konstruktor `int()`. W najprostszej formie przekazanie ciągu liczbowego (np. „42”) do funkcji „int()” zwraca jego odpowiednik w postaci liczby całkowitej. Jednakże przekazanie ciągu innego niż numeryczny (np. „witaj”) lub ciągu reprezentującego liczbę zmiennoprzecinkową (np. „3,14”) spowoduje wyświetlenie błędu „ValueError”. Aby pisać niezawodne aplikacje, standardową praktyką jest zawijanie operacji rzutowania w bloku „try-except”, aby z wdziękiem obsłużyć nieoczekiwane dane wejściowe.

Poza standardową konwersją base-10, funkcja `int()` akceptuje opcjonalny argument `base`. Umożliwia to łatwe analizowanie ciągów znaków reprezentujących liczby w różnych systemach liczbowych, takich jak binarny (podstawa 2), ósemkowy (podstawa 8) lub szesnastkowy (podstawa 16). Na przykład `int("1010", 2)` poprawnie analizuje ciąg binarny na dziesiętną liczbę całkowitą `10`, co czyni go wszechstronnym narzędziem do programowania matematycznego niższego poziomu lub specjalistycznego.

Dane wyjściowe kodu i wykonania

Ten skrypt demonstruje konwersję ciągu znaków na liczbę całkowitą, obsługę wyjątków i konwersję różnych reprezentacji podstawowych.

convert_int.py
Spróbuj w Edytorze
# 1. Standard base-10 conversion
num_str = "123"
num = int(num_str)
print(f"Standard conversion: {num} (Type: {type(num).__name__})")

# 2. Handling invalid input gracefully
invalid_str = "abc"
try:
    result = int(invalid_str)
except ValueError:
    print(f"Could not convert '{invalid_str}' to an integer.")

# 3. Converting from different bases (binary and hex)
binary_str = "1011"
hex_str = "ff"
print("Binary '1011' to decimal:", int(binary_str, 2))
print("Hex 'ff' to decimal:", int(hex_str, 16))
Wyjście terminala
Standard conversion: 123 (Type: int)
Could not convert 'abc' to an integer.
Binary '1011' to decimal: 11
Hex 'ff' to decimal: 255

Wdrażanie krok po kroku

  • Przekaż ciąg liczbowy do wbudowanej funkcji int().
  • Zawiń operacje rzutowania w bloki try...z wyjątkiem ValueError, aby obsłużyć nieprawidłowe formaty.
  • Podaj drugi argument (np. podstawa=16), aby przekonwertować wartości łańcuchowe zapisane w innych bazach.

Często zadawane pytania

Jak mogę przekonwertować ciąg zmiennoprzecinkowy, taki jak „12,34”, na liczbę całkowitą?

Najpierw musisz przekonwertować go na liczbę zmiennoprzecinkową, a następnie na int: int(float("12.34")). Wywołanie int("12.34") bezpośrednio wywołuje błąd ValueError.

Jak sprawdzić, czy ciąg można bezpiecznie przekonwertować na liczbę typu int?

Możesz użyć metody łańcuchowej .isdigit(), ale pamiętaj, że zwraca ona False w przypadku znaków ujemnych lub białych znaków. Blok try-except jest najbardziej niezawodnym sposobem.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.