W tym temacie dowiemy się, jak przekonwertować ciąg znaków na liczbę całkowitą z użyciem wbudowanego typu danych i bez niego. Wiemy, że łańcuch to zbiór znaków ułożonych sekwencyjnie w cudzysłowach, a liczba całkowita to liczba bez żadnych miejsc dziesiętnych i nie ujęta w cudzysłów.
Ale kiedy pojawia się pytanie, jak przekonwertować jeden typ danych na inny, Python zapewnia łatwy sposób konwersji na siebie. W tym przypadku widzimy, jak możemy przekonwertować ciąg na liczbę całkowitą w następującej kolejności:
Korzystanie z wbudowanych typów danych
Załóżmy, że kiedy z jakiegoś powodu pobieram dane wejściowe od użytkownika, Python pobiera je i zwraca jako sam ciąg. Innymi słowy, nawet jeśli ktoś wpisze liczbę jako dane wejściowe, Python zwróci ją jako ciąg.
name = input ('Jak masz na imię:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age))
Wynik:
Jak masz na imię: Tyra
Tyra
Ile masz lat: 20
dwadzieścia
Więc widzisz, typ imienia i wieku jako dane wejściowe to „Ciąg”.
Załóżmy teraz, że jeśli chcemy dodać 5 do wieku, wykonamy następujące czynności:
name = input ('Jak masz na imię:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age)) print (age + 5)
Wynik:
Jak masz na imię: Tyra
Tyra
Ile masz lat: 20
dwadzieścia
Traceback (ostatnie ostatnie połączenie):
Plik „C: /Users/prac.py”, wiersz 9, w
drukuj (wiek + 5)
TypeError: musi być str, a nie int
Nie możemy dodać 5 do wieku, ponieważ wiek jest typu String i nie możemy bezpośrednio obliczyć ciągów. Musimy więc zmienić wiek na liczbę całkowitą, ponieważ przyjęliśmy wiek jako dane wejściowe, a Python zwraca go jako ciąg.
W związku z tym.
name = input ('Jak masz na imię:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age)) age = int ( wiek) print (wiek + 5)
Wynik:
Jak masz na imię: Tyra
Tyra
Ile masz lat: 20
dwadzieścia
25
Tradycyjny sposób
Załóżmy, że nie chcemy używać funkcji wbudowanej int () do konwersji ciągu znaków na liczbę całkowitą.Więc musimy użyć konwencjonalny sposób przekonwertować na.
Oto prosty sposób na konwersję bez użycia funkcji int ().
'' '' 123 '-> 123' -12332 '-> -12332' '' def str_to_int (input_str): output_int = 0 if input_str [0] == '-': start_idx = 1 is_negative = True else: start_idx = 0 is_negative = False for i in range (start_idx, len (input_str)): place = 10 ** (len (input_str) - (i + 1)) digit = ord (input_str [i]) - ord ('0') output_int + = place * digit if is_negative: return -1 * output_int else: return output_int s = '554' x = str_to_int (s) print (type (x)) s = '123' print (str_to_int (s)) s = Drukuj '-123' (str_to_int (s))
Wynik:
co oznacza tostring w java
123
-123
Najpierw sprawdzimy, czy liczba podana przez użytkownika zawiera znak minus, czy nie, tj. Czy jest liczbą ujemną, czy nie.Jeśli zawiera na pierwszej pozycji znak minus, zaczynamy naszą konwersję od drugiej pozycji, która zawiera liczby.
Dowolną liczbę, powiedzmy 123, można zapisać w postaci -10 ** 2 * 1 + 10 ** 1 * 2 + 10 ** 0 * 3
Podobnie dzielimy każdą liczbę wejściową za pomocą słowo (argument) .
ord („0”) zwróci 48, ord („1”) zwróci 49 itd.
Tutaj używamy logiki ord ('1') - ord ('0) = 1, ord (' 2 ') - ord (' 0 ') = 2 itd., Co daje nam znaczącą liczbę do pobrania z podanego numer wejścia.
W końcu wynik, który otrzymujemy z funkcji, jest prawidłową liczbą całkowitą, którą przekonwertowaliśmy z podanego ciągu wejściowego.
Jak widać, możemy przekonwertować dowolny ciąg znaków na liczbę całkowitą za pomocą funkcji int () lub w konwencjonalny sposób.
Mam nadzieję, że dobrze nauczyłeś się tych pojęć i dlatego wypróbowałeś je, aby być dokładniejszym, i dzięki temu dochodzimy do końca tego artykułu o konwersji ciągu znaków na int przy użyciu Pythona.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego samouczka String to Integer, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.
Aby uzyskać dogłębną wiedzę na temat języka Python i jego różnych aplikacji, możesz zarejestrować się na żywo z całodobowym wsparciem i dożywotnim dostępem.