If you are getting trouble with the error “TypeError: ‘str’ object cannot be interpreted as an integer”, do not worry. Today, our article will give a few solutions and detailed explanations to handle the problem. Keep on reading to get your answer.
Why does the error “TypeError: ‘str’ object cannot be interpreted as an integer” occur?
TypeError is an exception when you apply a wrong function or operation to the type of objects. “TypeError: ‘str’ object cannot be interpreted as an integer” occurs when you try to pass a string as the parameter instead of an integer. Look at the simple example below that causes the error.
Code:
myStr = "Welcome to Learn Share IT" for i in range(myStr): print(i)
Result:
Traceback (most recent call last)
in <module>
----> 3 for i in range(myStr):
TypeError: 'str' object cannot be interpreted as an integer
The error occurs because the range()
function needs to pass an integer number instead of a string.
Let’s move on. We will discover solutions to this problem.
Solutions to the problem
Traverse a string as an array
A string is similar to an array of strings. As a result, when you want to traverse a string, do the same to an array. We will use a loop from zero to the length of the string and return a character at each loop. The example below will display how to do it.
Code:
myStr = "Welcome to Learn Share IT" for i in range(len(myStr)): print(myStr[i], end=' ')
Result:
W e l c o m e t o L e a r n S h a r e I T
Traverse elements
The range()
function is used to loop an interval with a fix-step. If your purpose is traversing a string, loop the string directly without the range()
function. If you do not know how to iterate over all characters of a string, look at our following example carefully.
Code:
myStr = "Welcome to Learn Share IT" for i in myStr: print(i, end=' ')
Result:
W e l c o m e t o L e a r n S h a r e I T
Use enumerate() function
Another way to traverse a string is by using the enumerate()
function. This function not only accesses elements of the object but also enables counting the iteration. The function returns two values: The counter and the value at the counter position.
Code:
myStr = "Welcome to Learn Share IT" for counter, value in enumerate(myStr): print(value, end=' ')
Result:
W e l c o m e t o L e a r n S h a r e I T
You can also get the counter with the value like that:
myStr = "Welcome to Learn Share IT" for counter, value in enumerate(myStr): print(f"({counter},{value})", end= ' ')
Result:
(0,W) (1,e) (2,l) (3,c) (4,o) (5,m) (6,e) (7, ) (8,t) (9,o) (10, ) (11,L) (12,e) (13,a) (14,r) (15,n) (16, ) (17,S) (18,h) (19,a) (20,r) (21,e) (22, ) (23,I) (24,T)
Summary
Our article has explained the error “TypeError: ‘str’ object cannot be interpreted as an integer” and showed you how to fix it. We hope that our article is helpful to you. Thanks for reading!
Maybe you are interested:
- UnicodeDecodeError: ‘ascii’ codec can’t decode byte
- TypeError: string argument without an encoding in Python
- TypeError: Object of type DataFrame is not JSON serializable in Python

My name is Robert Collier. I graduated in IT at HUST university. My interest is learning programming languages; my strengths are Python, C, C++, and Machine Learning/Deep Learning/NLP. I will share all the knowledge I have through my articles. Hope you like them.
Name of the university: HUST
Major: IT
Programming Languages: Python, C, C++, Machine Learning/Deep Learning/NLP