Python TypeError: 'float' object cannot be interpreted as an integer Solution

Posted in /  

Python TypeError: 'float' object cannot be interpreted as an integer Solution
vinaykhatri

Vinay Khatri
Last updated on March 29, 2024

    In Python, we have two data types to represent numeric values float and int . Float data represent the real numbers, and int data type represents the integer number. There are many operations and functions in Python that only support integer numbers, for example, in list indexing, we can not use float numbers there we always need to pass an int value as an index number.

    Similarly, there is a range() function in Python that only accepts int values, and if we try to pass a float value to the range() function, we will receive the TypeError: 'float' object cannot be interpreted as an integer error.

    In this Python guide, we will discuss what this error is and how to debug it. We will also walk through a common example of when many people encounter this error. So without further ado, let's get started with the error statement.

    Python Error TypeError: 'float' object cannot be interpreted as an integer

    The Error statement TypeError: 'float' object cannot be interpreted as an integer has two parts separated with a colon : .

    1. TypeError
    2. 'float' object cannot be interpreted as an integer

    1. TypeError

    TypeError is a standard Python exception. It is raised in a Python program when we try to perform an invalid operation or pass an invalid data type value to a function.

    2. 'float' object cannot be interpreted as an integer

    'float' object cannot be interpreted as an integer is the error message. This error message tells us that the float variable can not be interpreted as an integer, which simply means the Python interpreter is not able to compute the value of float for the function where it was expecting an integer number. You will encounter this error message in your Python program when you try to pass a floating-point number to the range() function.

    Example

    # float number
    num = 6.0
    
    # a list from 0 to 5
    my_list = list(range(num))
    
    print(my_list)

    Output

    Traceback (most recent call last):
        File "main.py", line 5, in <module>
          my_list = list(range(num))
    TypeError: 'float' object cannot be interpreted as an integer

    The range() function accepts an integer value n and returns an iterable object from range 0 to n-1 . In our example, the value of num is 6.0 , which is a floating-point number. That's why the range(num) statement returns the Error TypeError: 'float' object cannot be interpreted as an integer because it was not able to interpret the 6.0 value as 6.

    Solution

    To solve the above problem, we can need to convert the 6.0 num value to a 6 num value using int() function.

    # float number
    num = 6.0
    
    # int num
    num = int(num)
    # a list from 0 to 5
    my_list = list(range(num))
    
    print(my_list)

    Output

    [0,1,2,3,4,5]

    Common Example Scenario

    Often when we take input from the user using the input() function, and if we are expecting a numerical value, we convert that input string value to float using the float function.

    Example

    students = [{'Rank':1,'Name':'Rahul', "Marks":894},
                {'Rank':2,'Name':'Jay', "Marks":874},
                {'Rank':3,'Name':'Ali', "Marks":870},
                {'Rank':4,'Name':'Rohan', "Marks":869},
                {'Rank':5,'Name':'Kher', "Marks":856},
                {'Rank':5,'Name':'Sofi', "Marks":850},
                ]
    
    # convert the input number to float (error)
    top_n = float(input("How many students details do you want to see?: "))
    
    for i in range(top_n):
        print("Rank: ",students[i]['Rank'],"Name: ", students[i]['Name'], "Marks: ", students[i]['Marks'] )

    Output

    How many students details do you want to see?: 3
    Traceback (most recent call last):
       File " main.py", line 12, in <module>
          for i in range(top_n):
    TypeError: 'float' object cannot be interpreted as an integer

    Error Reason

    In the above example in line 10, we are trying to convert the user input value to a floating-point number. And in line 12, we are passing that same floating-point number to the range() function, which leading this error.

    Solution

    If you ever encounter this situation where you need to ask a numeric value from the user using the input() function for the range() function. There you should always use the int() function and convert the user-entered number to an integer value. Because the range() function only accepts integer numbers.

    students = [{'Rank':1,'Name':'Rahul', "Marks":894},
                {'Rank':2,'Name':'Jay', "Marks":874},
                {'Rank':3,'Name':'Ali', "Marks":870},
                {'Rank':4,'Name':'Rohan', "Marks":869},
                {'Rank':5,'Name':'Kher', "Marks":856},
                {'Rank':5,'Name':'Sofi', "Marks":850},
                ]
    
    # convert the input number to integer solved
    top_n = int(input("How many students details do you want to see?: "))
    
    for i in range(top_n):
        print("Rank: ",students[i]['Rank'],"Name: ", students[i]['Name'], "Marks: ", students[i]['Marks'] )

    Output

    How many students details do you want to see?: 3
    Rank: 1 Name: Rahul Marks: 894
    Rank: 2 Name: Jay Marks: 874
    Rank: 3 Name: Ali Marks: 870

    Conclusion

    In this Python tutorial, we learned what TypeError: 'float' object cannot be interpreted as an integer error is in Python and how to debug it. The Error is raised when we try to pass a floating-point number to the range() function.

    To debug this problem, all we need to do is convert the floating-point number to an integer before we pass it as an argument to the range() function.

    If you are still getting this error in your Python program, please share your code in the comment section. We will try to help you in debugging.

    People are also reading:

    Leave a Comment on this Post

    0 Comments