Lỗi bool object is not subscriptable là lỗi gì

Uploaded by

Thiên Phúc

0% found this document useful (0 votes)

282 views

154 pages

Copyright

© © All Rights Reserved

Available Formats

PDF, TXT or read online from Scribd

Share this document

Did you find this document useful?

Is this content inappropriate?

0% found this document useful (0 votes)

282 views154 pages

Part1 Python Documents HV

Uploaded by

Thiên Phúc

Python raises the TypeError: 'bool' object is not subscriptable if you use indexing or slicing with the square bracket notation on a Boolean variable. However, the Boolean type is not indexable and you cannot slice it—it’s not iterable!

In other words, the Boolean class doesn’t define the getitem() method.

boo = True boo[0] # Error! boo[3:6] # Error! boo[-1] # Error! boo[:] # Error!

You can fix this error by

  1. converting the Boolean to a string using the str() function because strings are subscriptable,
  2. removing the indexing or slicing call,
  3. defining a dummy getitem() method for a custom “Boolean wrapper class”.

🌍 Related Tutorials: Check out our tutorials on indexing and slicing on the Finxter blog to improve your skills!

Method 1: Convert Boolean to a String

If you want to access individual characters of the “Boolean” strings

Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 2, in <module>

boo[0]
TypeError: 'bool' object is not subscriptable

1 and

Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 2, in <module>

boo[0]
TypeError: 'bool' object is not subscriptable

2, consider converting the Boolean to a string using the str() built-in function. A string is subscriptable so the error will not occur when trying to index or slice the converted string.

boo = True boo_string = str(boo) print(boo_string[0])

T

print(boo_string[1:-1])

ru

Method 2: Put Boolean Into List

A simple way to resolve this error is to put the Boolean into a list that is subscriptable—that is you can use indexing or slicing on lists that define the

Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 2, in <module>

boo[0]
TypeError: 'bool' object is not subscriptable

4 magic method.

bools = [True, True, True, False, False, False, True, False] print(bools[-1])

False

print(bools[3:-3])

[False, False]

Method 3: Define the __getitem__() Magic Method

You can also define your own wrapper type around the Boolean variable that defines a dunder method for getitem() so that every indexing or slicing operation returns a specified value as defined in the dunder method.

class MyBool:

def __init__(self, boo):
    self.boo = boo
def __getitem__(self, index):
    return self.boo
my_boolean = MyBool(True) print(my_boolean[0])

True

print(my_boolean[:-1])

True

This hack is generally not recommended, I included it just for comprehensibility and to teach you something new. 😉

Summary

The error message “

Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 2, in <module>

boo[0]
TypeError: 'bool' object is not subscriptable

6” happens if you access a boolean

Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 2, in <module>

boo[0]
TypeError: 'bool' object is not subscriptable

7 like a list such as

Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 2, in <module>

boo[0]
TypeError: 'bool' object is not subscriptable

8 or

Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 2, in <module>

boo[0]
TypeError: 'bool' object is not subscriptable

9. To solve this error, avoid using slicing or indexing on a Boolean or use a subscriptable object such as lists or strings.

Lỗi bool object is not subscriptable là lỗi gì

While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.

To help students reach higher levels of Python success, he founded the programming education website Finxter.com that has taught exponential skills to millions of coders worldwide. He’s the author of the best-selling programming books Python One-Liners (NoStarch 2020), The Art of Clean Code (NoStarch 2022), and The Book of Dash (NoStarch 2022). Chris also coauthored the Coffee Break Python series of self-published books. He’s a computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.

His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.