I got a value error and even if I try playing around with the code, it doesn\'t work!
How can I get it right? - I am using Python 3.3.2!
Here is the code:
You need to take into account that the user might not fill in a proper value:
try:
miles = float(input("How many miles can you walk? "))
except ValueError:
print("That is not a valid number of miles")
A try/except handles the ValueError
that might occur when float
tries to convert the input to a float.
The traceback means what it says on the tin.
>>> float('22')
22.0
>>> float('a lot')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'a lot'
float
can convert strings that look like valid decimals into float
s. It can't convert arbitrary alphanumeric strings, notably including 'How am I supposed to know?'
.
If you want to handle arbitrary user input, you have to catch this exception, with a try/except
block.
The problem is exactly what the Traceback log says: Could not convert string to float
The way most people would approach this problem is with a try/except
(see here), or using the isdigit()
function (see here).
Try/Except
try:
miles = float(input("How many miles can you walk?: "))
except:
print("Please type in a number!")
Isdigit()
miles = input("How many miles can you walk?: ")
if not miles.isdigit():
print("Please type a number!")
Note that the latter will still return false if there are decimal points in the string
Okay, I won't be able to get back to you for a while, so I'll post the answer just in case.
while True:
try:
miles = float(input("How many miles can you walk?: "))
break
except:
print("Please type in a number!")
#All of the ifs and stuff
The code's really simple:
The point here it can not convert alphanumeric strings, in some cases if you are scraping data or something like $400, $ symbol is alphanumeric then it consider an string, if you try convert to float it display an error, i give you this example to show it only convert numbers to float, in this case i solved the problem like this data ='$400', price = data[1:], then if , if (float(price) < 300): and it works.