Nếu bạn đang chạy mã Python và thấy lỗi “TypeError: ‘int’ object is not iterable”, điều đó có nghĩa là bạn đang cố lặp qua một số nguyên hoặc kiểu dữ liệu khác mà các vòng lặp không thể hoạt động.
Trong Python, dữ liệu có thể lặp lại là danh sách, bộ dữ liệu, bộ, từ điển, v.v.
Ngoài ra, lỗi này là “TypeError” có nghĩa là bạn đang cố thực hiện một thao tác trên một loại dữ liệu không phù hợp. Ví dụ, thêm một chuỗi với một số nguyên.
Hôm nay là ngày cuối cùng bạn gặp phải lỗi này khi chạy mã Python. Bởi vì trong bài viết này, tôi không chỉ hướng dẫn bạn cách khắc phục mà còn hướng dẫn bạn cách kiểm tra __iter__
các phương thức ma thuật để bạn có thể xem liệu một đối tượng có thể lặp lại hay không.
Cách khắc phục đối tượng Int không thể lặp lại
Nếu bạn đang cố lặp qua một số nguyên, bạn sẽ gặp lỗi này:
count = 14
for i in count:
print(i)
# Output: TypeError: 'int' object is not iterable
Một cách để khắc phục nó là chuyển biến vào range()
chức năng.
Trong Python, hàm range kiểm tra biến được truyền vào nó và trả về một dãy số bắt đầu từ 0 và dừng ngay trước số được chỉ định.
Bây giờ vòng lặp sẽ chạy:
count = 14
for i in range(count):
print(i)
# Output: 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
# 11
# 12
# 13
Một ví dụ khác sử dụng giải pháp này là trong đoạn trích dưới đây:
age = int(input("Enter your age: "))
for num in range(age):
print(num)
# Output:
# Enter your age: 6
# 0
# 1
# 2
# 3
# 4
# 5
Cách kiểm tra xem dữ liệu hoặc đối tượng có thể lặp lại không
Để kiểm tra xem một số dữ liệu cụ thể có thể lặp lại hay không, bạn có thể sử dụng dir()
phương pháp. Nếu bạn có thể thấy phương pháp kỳ diệu __iter__
, thì dữ liệu có thể lặp lại. Nếu không, thì dữ liệu không thể lặp lại được và bạn không cần phải lặp qua chúng.
perfectNum = 7
print(dir(perfectNum))
# Output:['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__',
# '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
Các __iter__
phương thức ma thuật không được tìm thấy trong đầu ra, vì vậy biến perfectNum
là không thể lặp lại.
jerseyNums = [43, 10, 7, 6, 8]
print(dir(jerseyNums))
# Output: ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
phương pháp ma thuật __iter__
đã được tìm thấy, vì vậy danh sách jerseyNums
có thể lặp lại được.
Phần kết luận
Trong bài viết này, bạn đã tìm hiểu về lỗi “Int Object is Not Iterable” và cách khắc phục.
Bạn cũng có thể thấy rằng có thể kiểm tra xem một đối tượng hoặc một số dữ liệu có thể lặp lại hay không.
Nếu bạn kiểm tra __iter__
phương pháp ma thuật trong một số dữ liệu và bạn không tìm thấy nó, tốt hơn hết là đừng cố lặp qua dữ liệu vì chúng không thể lặp lại được.
Cảm ơn bạn đã đọc.