Cách chuyển đổi chuỗi thành int trong Python (Truyền và cơ sở an toàn)

Tìm hiểu cách chuyển đổi một chuỗi thành số nguyên trong Python bằng hàm int(). Xử lý lỗi một cách an toàn và chuyển đổi số từ nhị phân, bát phân hoặc thập lục phân.

Hãy thử Giải pháp này trong Trình chỉnh sửa

Tổng quan

Chuyển đổi biểu diễn chuỗi của một số thành số nguyên thực tế là một nhiệm vụ thường xuyên trong quá trình phát triển ứng dụng. Quá trình này, thường được gọi là truyền, rất cần thiết khi xử lý thông tin đầu vào thô của người dùng, đọc tệp cấu hình, phân tích cú pháp đối số từ giao diện dòng lệnh hoặc thu thập dữ liệu từ web. Vì Python là ngôn ngữ có kiểu dữ liệu mạnh nên bạn không thể thực hiện các phép toán trên biểu diễn chuỗi số mà không truyền chúng trước.

Hàm tạo `int()` có sẵn của Python là công cụ chính cho việc chuyển đổi này. Ở dạng đơn giản nhất, việc truyền một chuỗi số (như `"42"`) tới `int()` trả về số nguyên tương đương của nó. Tuy nhiên, việc truyền một chuỗi không phải là số (như `"hello"`) hoặc một chuỗi biểu thị số dấu phẩy động (như `"3.14"`) sẽ tạo ra `ValueError`. Để viết các ứng dụng mạnh mẽ, thông lệ tiêu chuẩn là bao bọc các hoạt động truyền trong khối `try-ngoại trừ` để xử lý một cách linh hoạt các đầu vào không mong muốn.

Ngoài chuyển đổi cơ sở 10 tiêu chuẩn, hàm `int()` chấp nhận đối số `base` tùy chọn. Điều này cho phép bạn dễ dàng phân tích cú pháp các chuỗi biểu thị số trong các hệ thống số khác nhau, chẳng hạn như nhị phân (cơ số 2), bát phân (cơ số 8) hoặc thập lục phân (cơ số 16). Ví dụ: `int("1010", 2)` phân tích chính xác chuỗi nhị phân thành số nguyên thập phân `10`, làm cho nó trở thành một công cụ linh hoạt cho lập trình toán học chuyên biệt hoặc cấp độ thấp hơn.

Đầu ra mã & thực thi

Tập lệnh này minh họa việc chuyển đổi một chuỗi thành số nguyên, xử lý các ngoại lệ và chuyển đổi các biểu diễn cơ sở khác nhau.

# 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))
Đầu ra thiết bị đầu cuối
Standard conversion: 123 (Type: int)
Could not convert 'abc' to an integer.
Binary '1011' to decimal: 11
Hex 'ff' to decimal: 255

Triển khai từng bước

  • Truyền chuỗi số vào hàm int() có sẵn.
  • Bao bọc các hoạt động truyền của bạn trong các khối try...ngoại trừ ValueError để xử lý các định dạng không hợp lệ.
  • Cung cấp đối số thứ hai (ví dụ: base=16) để chuyển đổi các giá trị chuỗi được viết bằng các cơ số khác.

Câu hỏi thường gặp

Làm cách nào tôi có thể chuyển đổi chuỗi float như '12,34' thành số nguyên?

Trước tiên, bạn phải chuyển đổi nó thành float, sau đó thành int: int(float("12.34")). Gọi int("12.34") trực tiếp gây ra ValueError.

Làm cách nào để kiểm tra xem một chuỗi có thể được chuyển đổi thành int một cách an toàn không?

Bạn có thể sử dụng phương thức chuỗi .isdigit() nhưng lưu ý rằng nó trả về Sai cho các dấu âm hoặc khoảng trắng. Khối thử ngoại trừ là cách mạnh mẽ nhất.

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.