A Value error is

Raised when a built-in operation or function receives an argument that has the right type but an inappropriate value

the float function can take a string, ie float('5'), it's just that the value 'string' in float('string') is an inappropriate (non-convertible) string

On the other hand,

Passing arguments of the wrong type (e.g. passing a list when an int is expected) should result in a TypeError

so you would get a TypeError if you tried float(['5']) because a list can never be converted into a float.

Cite

Answer from David on Stack Overflow
🌐
Reddit
reddit.com › r/learnpython › what's the difference between a typeerror and valueerror?
r/learnpython on Reddit: What's the difference between a TypeError and ValueError?
September 21, 2022 -

In this example:

x = int(input("x: "))
print(f'x = {x}')

if the input is a string, a ValueError is raised. Why not a TypeError? An invalid data type is inputted after all.

People also ask

What are common Python errors?
The most common Python errors consist of SyntaxError, NameError, TypeError, ValueError, IndexError, KeyError, and AttributeError.
🌐
middleware.io
middleware.io › blog › python-error-types
Python Error Types: Common Errors and How to Handle Them
How do I handle errors in Python?
You should use the try-except blocks and write clear error messages.
🌐
middleware.io
middleware.io › blog › python-error-types
Python Error Types: Common Errors and How to Handle Them
How can I monitor Python errors in real time?
You can use tools like Middleware to track, analyze, and fix Python errors across your application instantly.
🌐
middleware.io
middleware.io › blog › python-error-types
Python Error Types: Common Errors and How to Handle Them
Top answer
1 of 2
8
@Liam Hayes (https://teamtreehouse.com/liamhayes) Hi! I have a note about @Steven Parker (https://teamtreehouse.com/stevenparker)'s example (especially the second one). When I was trying to wrap my head around this, I could not for the life of me understand why the built-in function for changing something to an int would give a ValueError with a string as opposed to a TypeError. Surely, it's expecting a number, right? Well, no. It isn't. The int() function takes either a number or a string. It can convert the string "21" to the integer 21, but it can't convert "dog" to a number. Thus, it's getting the right type, but it's still not a value that it can convert. This is when we get the ValueError. It's of the right type, but the value is such that it still can't be done. That being said, if we tried to send in something that was neither a string nor a number, it would have generated a TypeError as it is of the wrong type. Hope this helps! :sparkles: edited for additional note In your own custom made functions, you can pass in whatever you want, although ideally, you know what you're passing in. This is not true of built-in functions in Python. When in doubt, check the documentation for the function in question.
2 of 2
0
A TypeError occurs when an operation or function is applied to an object of inappropriate type. A ValueError occurs when a built-in operation or function receives an argument that has the right type but an inappropriate value, and the situation is not described by a more precise exception such as IndexError. Examples: passing arguments of the wrong type (e.g. passing a list when an int is expected) should result in a TypeError, but passing arguments with the wrong value (e.g. a number outside expected boundaries) should result in a ValueError. For more details, see the Exceptions page (https://docs.python.org/3/library/exceptions.html) of the Python documentation.
🌐
Reddit
reddit.com › r/learnpython › initializing a variable, handling exceptions and the difference between typeerror and valueerror
r/learnpython on Reddit: Initializing a variable, handling exceptions and the difference between TypeError and ValueError
March 25, 2025 - There's no such thing as "initializing a variable with the wrong type". Whatever type the variable's value has, that's the type it is. That's what it means to be a "dynamically typed" language, like Python is.
🌐
Quora
quora.com › What-is-the-difference-between-TypeError-and-ValueError-in-Python-When-does-Python-throw-these-exceptions
What is the difference between 'TypeError' and 'ValueError' in Python? When does Python throw these exceptions? - Quora
Answer: 🔴1. TypeError happens when an operation is performed on an inappropriate type. For example: Copy [code]result = 'string' + 5 # Can't add string and integer [/code]🔴2. ValueError occurs when a function gets an argument of the right type but inappropriate value. For instance: Copy [co...
🌐
Sololearn
sololearn.com › en › Discuss › 2497149 › what-is-the-difference-between-typeerror-and-valueerror
What is the difference between 'TypeError' and 'ValueError'? | Sololearn: Learn to code for FREE!
A Value error is Raised when a built-in operation or function receives an argument that has the right type but an inappropriate value the float function can take a string, ie float('5'), it's just that the value 'string' in float('string') is ...
Find elsewhere
🌐
Carleton University
cs.carleton.edu › cs_comps › 1213 › pylearn › final_results › encyclopedia › valueError.html
Error Encyclopedia | Value Error
To encounter a ValueError in Python means that is a problem with the content of the object you tried to assign the value to. This is not to be confused with types in Python. For instance, imagine you have a dog and you try to put it in a fish tank. This would be an example of a type error, ...
🌐
Middleware
middleware.io › blog › python-error-types
Python Error Types: Common Errors and How to Handle Them
A TypeError happens when you use the wrong type (like adding a string to a number), while a ValueError happens when the type is right but the value is incorrect (like converting “abc” to an integer).
🌐
Real Python
realpython.com › ref › builtin-exceptions › valueerror
ValueError | Python’s Built-in Exceptions – Real Python
You can handle ValueError to gracefully deal with invalid input so your program doesn’t crash unexpectedly and can offer users helpful feedback. That distinction—right type, wrong value—is exactly what separates a ValueError from a TypeError.
🌐
Scaler
scaler.com › home › topics › python valueerror
Python ValueError - Scaler Topics
December 15, 2022 - As shown in the above code snippet, ... therefore the python raises a ValueError. ... As discussed above, Value Error in python occurs when a correct argument type but an incorrect value is supplied to a function....
🌐
Reddit
reddit.com › r/python › python errors as values: comparing useful patterns from rust and go
r/Python on Reddit: Python errors as values: Comparing useful patterns from Rust and Go
November 9, 2023 - Exceptions are implicit control flow and just goto-s. Also you can't (in python) type exceptions. All above makes your code unreliable. You can hardly say whether “this” line will pass or throw some random shit that won't be caught. You can't really be sure how many frames of the call stack it will break until being caught. For sure, golang has one of the most annoying and verbose error handling mechanism. But it's still better than python's exceptions. Rust has the best. Errors-as-values is always preferred.
🌐
Turing
turing.com › kb › valueerror-in-python-and-how-to-fix
What is ValueError in Python & How to fix it
This article discussed what ValueError is and how it is handled in Python. It also covered the most common uses of ValueError Exceptions and how to fix them.
🌐
Team Treehouse
teamtreehouse.com › community › valueerror-vs-typeerror
ValueError vs TypeError (Example) | Treehouse Community
February 26, 2026 - In this case, it's not the type causing the issue but the value. For example: float("boat") will return a ValueError, but float("42") returns 42.0 (and no error).
🌐
Reddit
reddit.com › r/learnpython › why am i receiving a valueerror here
r/learnpython on Reddit: Why am I receiving a ValueError here
February 23, 2022 -

I'm getting a value error on function 2 (is_list_odd) but not on function 1 (is_list_even) why is that? I isolate the functions and function one run fine but function 2 returns a ValueError every time, why?

def is_list_even(check_even):
    user_input = int(input())
    for i in range(user_input):
        user_num = int(input())
        check_even.append(user_num)
        if check_even[i] % 2 == 0:
            return True


def is_list_odd(check_odd):
    user_input2 = int(input())
    for j in range(user_input2):
        user_num2 = int(input())
        check_odd.append(user_num2)
        if check_odd[j] % 2 != 0:
            return True


if __name__ == '__main__':
    check_even = []
    check_odd = []
    if is_list_even(check_even):
        print('all even')
    if is_list_odd(check_odd):
        print('all odd')
    else:
        print('not even or odd')

#I don't understand why
🌐
W3Schools
w3schools.com › python › ref_exception_valueerror.asp
Python ValueError Exception
Python Examples Python Compiler ... Study Plan Python Interview Q&A Python Training ... The ValueError exception occurs if a function receives a value of wrong type....