ValueError: could not convert string to float: '8/3'

Advertisements

I am having the folllowing instruction

x1,y1,x2,y2,x3,y3,xp,yp = map(float, input().split())

When I am trying to execute it for a fractional value, e.g. 8/3, I get an error message.

x1,y1,x2,y2,x3,y3,xp,yp = map(float, input().split())
0.1 0.2 -8 -16.67 0 0.1 8/3 1
# output
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    x1,y1,x2,y2,x3,y3,xp,yp = map(float, input().split())
ValueError: could not convert string to float: '8/3'

What am I doing wrong here? Thanks in advance for any kind of help.

>Solution :

8/3 is not a valid notation for a python float. However, you can parse these inputs using the fractions module:

>>> import fractions
>>> inp = '0.1 0.2 8/3 1/2 -5/10'
>>> [float(fractions.Fraction(s)) for s in inp.split()]
[0.1, 0.2, 2.6666666666666665, 0.5, -0.5]

Leave a ReplyCancel reply