Lỗi Loại có thể xảy ra nếu loại đối tượng không phải là thứ mà trình thông dịch Python mong muốn thấy. Lỗi này là một lỗi phổ biến của các nhà phát triển mới bắt đầu là sử dụng toán tử '+' giữa các giá trị của các loại không tương thích. Thông báo lỗi này Không thể chuyển đổi đối tượng 'int' thành str hoàn toàn rõ ràng, khi nối chuỗi với số nguyên - bạn không thể nối trực tiếp chuỗi và số nguyên với nhau. Vì vậy, để giải quyết vấn đề này, bạn phải phân tích rõ ràng số nguyên thành một chuỗi bằng hàm tích hợp str()
thí dụ
đầu ra
TypeError được tạo vì '+' (bổ sung) không hoạt động giữa một số nguyên và một chuỗi. Không giống như nhiều ngôn ngữ lập trình khác hiện có, Python không ngầm định kiểu số nguyên (hoặc số float) thành chuỗi khi nối với chuỗi. May mắn thay, Python có sẵn hàm str() sẽ chuyển đổi tham số được truyền vào thành định dạng chuỗi
Có 3 cách để giải quyết vấn đề này
- print("Tổng số ngày. " + str(ngày))
- print("Tổng số ngày. ", ngày)
- print("Tổng số ngày. {}". định dạng (ngày))
print("Tổng số ngày. " + ngày)
Trình thông dịch Python đọc toàn bộ dòng và nhận thấy việc sử dụng '+'. Python xem xét loại toán hạng bên trái, "Tổng số ngày. " và kết luận rằng đó là một 'chuỗi'. Sau đó, nó xem xét loại toán hạng bên phải (ngày), là một số nguyên. Python sau đó tạo ra một lỗi, bởi vì nó không biết cách thêm chuỗi và số nguyên. Do đó, bạn có thể chuyển đổi số nguyên thành chuỗi một cách rõ ràng bằng hàm str(). Việc chuyển đổi thành một chuỗi được thực hiện với hàm str() dựng sẵn, về cơ bản gọi phương thức __str__() của tham số của nó
Lưu ý rằng khi xảy ra sự cố trong khi trình thông dịch Python chạy tập lệnh của bạn, trình thông dịch sẽ dừng và sẽ tạo một dấu vết ngược (hoặc dấu vết ngăn xếp) hiển thị tất cả các chức năng đang chạy khi xảy ra lỗi. Lỗi này Không thể chuyển đổi đối tượng 'int' thành str hoàn toàn xảy ra khi một hàm hoặc toán tử không thể được áp dụng cho các giá trị đã cho, do thực tế là loại giá trị không phù hợp. Điều này có thể xảy ra khi hai loại không tương thích được sử dụng cùng nhau
Chuyển đổi kiểu Python
Quá trình chuyển đổi giá trị của một loại dữ liệu (số nguyên, chuỗi, v.v. ) sang kiểu dữ liệu khác được gọi là chuyển đổi kiểu. Thêm vào. Chuyển đổi kiểu Python
Nó là một đối tượng Python đặc biệt không có giá trị. Nó được sử dụng để biểu thị sự vắng mặt của một giá trị hoặc để biểu thị rằng không có dữ liệu nào
Sau đây là những cách mà chúng ta có thể chuyển đổi một NoneType thành một số nguyên hoặc chuỗi
nội dung
- 1 Cách 1. Sử dụng toán tử Boolean OR
- 1. 1 Điểm 1. Hiểu cách hoạt động của toán tử OR boolean
- 1. 2 Điểm 2. Python coi một số giá trị là sai
- 1. 3 Một ví dụ thú vị hơn
- 2 Cách 2. Sử dụng điều kiện if
- 3 Kết luận
Phương pháp 1. Sử dụng toán tử Boolean OR
Trước hết, hãy xem một số ví dụ
var1 = None converted_var1 = 99 or var1 print(converted_var1)đầu ra
99var2 = None converted_var2 = "Fort Ternan" or var2 print(converted_var2)đầu ra
Fort-Ternan
Trong ví dụ trên, các biến var1 và var2 giữ Không có Loại. Sử dụng toán tử OR, chúng ta có thể chuyển đổi các Không có Loại này thành một số nguyên hoặc một chuỗi do chúng ta chọn
Nhưng tại sao điều này làm việc?
Điểm 1. Hiểu cách toán tử OR boolean hoạt động
Cú pháp chung của toán tử OR là
biểu thức1 và biểu thức2
ở đâu
biểu thức1biểu thức2 biểu thức1 hoặc biểu thức2TrueTrueTrueTrueTrueFalseTrueFalseTrueTrueFalseFalseFalseBảng 1. Cách sử dụng toán tử OR hoạt động.điểm 2. Python coi một số giá trị là sai
Những giá trị này bao gồm. 0, Không, Sai, [ ] (danh sách trống), ( ) (loại trống), { } (từ điển trống), set() (tập hợp trống) và phạm vi (0) (phạm vi trống)
Khi các quy tắc trong Bảng 1 ở trên được sử dụng với Điểm 2, rõ ràng là “Không hoặc 99” cho kết quả là 99 vì Không được hiểu là giá trị sai và 99 là giá trị đúng. Dưới đây là nhiều ví dụ hơn
val1 = None or 7.89 # false or true yields true (7.89) print("val1: ", val1) val2 = None or [] # false or false yields false print("val2: ", val2) val3 = 456 or -8.3 # true or true yields true print("val3: ", val3) val4 = 2.5 or None #true or false yields true print("val4: ", val4)đầu ra
val1: 7.89 val2: [ ] val3: 456 val4: 2.5
Ghi chú. “x hoặc y” ước lượng thành x nếu x đúng; . Nói cách khác, nếu x là true, nó được trả về bất kể giá trị của y, nhưng nếu x sai, y được trả về bất kể giá trị của nó
Một ví dụ thú vị hơn
Giả sử chúng ta muốn chuyển đổi tất cả các phần tử trong danh sách sau thành số nguyên. [2. 36, -1. 87, Không có, 9. 6]. Cách đầu tiên có thể là lặp qua danh sách chuyển đổi từng mục như sau
list1 = [2.36, -1.87, None, 9.6] # initialize an empty list list2 = [] for item in list1: # if the value is false, then we convert 99 into int, which is still 99 # this captures the None value in list1. result = int(item or 99) # append the result to list2 list2.append(result) print(list2)đầu ra
[2, -1, 99, 9]Ngoài ra, chúng ta có thể sử dụng hiểu danh sách như hình dưới đây
________số 8
đầu ra
[2, -1, 99, 9]Như được hiển thị trong đầu ra, giá trị Không có được chuyển đổi thành 99 vì Không có hoặc 99 ước tính thành 99
Phương pháp 2. Sử dụng điều kiện if
Trong phương pháp này, chúng tôi sử dụng câu lệnh if để kiểm tra xem biến có giữ giá trị Không hay không và nếu đúng như vậy, chúng tôi sẽ gán lại một số nguyên hoặc một chuỗi như trong các ví dụ sau
990đầu ra
99Nếu var3 là Không có (đúng như vậy), chúng tôi gán lại biến var3 thành giá trị mới là 99, nếu không, chúng tôi đặt nó thành giá trị ban đầu của var3. Chúng ta có thể viết mã giống như một lớp lót như trong các ví dụ sau
992đầu ra
993Đây là cách chúng ta có thể sử dụng câu lệnh if để chuyển đổi từng phần tử của danh sách sau thành một số nguyên. [2. 36, -1. 87, Không có, 9. 6] sử dụng một lớp lót
994đầu ra
995Trong mã, chúng tôi lặp qua danh sách 1 và tại mỗi lần lặp kiểm tra xem phần tử có phải là Không nếu nó được đặt thành 99 và nếu không chuyển nó thành một số nguyên bằng cách sử dụng hàm int()
Sự kết luận
Một NoneType có thể được chuyển đổi thành một số nguyên hoặc một chuỗi theo hai cách mà chúng ta đã thảo luận trong bài viết này – sử dụng toán tử boolean OR hoặc bằng câu lệnh if. Trong cả hai trường hợp, bạn có thể sử dụng hàm int() để chuyển kết quả thành một số nguyên nếu cần