You passed a string to "math.floor", not anything resembling a numeric type. Try using an actual float, int or Decimal:
Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from math import floor >>> from decimal import Decimal >>> floor("2.3") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: a float is required >>> floor(2.3) 2 >>> floor(Decimal("2.3")) 2 >>> floor(2) 2 Remember that Python is strongly typed; you do not get automatic type conversions from strings to numeric types such as in Perl. Regards, Nathan On Thu, Aug 24, 2017 at 2:24 PM, Stefan Ram <r...@zedat.fu-berlin.de> wrote: > This is a transcript: > > >>> from math import floor > >>> floor( "2.3" ) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: must be real number, not str > >>> help(floor) > Help on built-in function floor in module math: > > floor(...) > floor(x) > > Return the floor of x as an Integral. > This is the largest integer <= x. > > Is the output of »help(floor)« supposed to be a kind of > normative documentation, i.e., /the/ authoritative > documentation of »floor«? > > Is there any hint in the documentation about the type > expected of arguments in a call? > > Is a parameter name »x« (as used above) described > somewhere to express the requirement of a real number? > > It seems, »real« means »int or float«. Is this meaning > of »real« documented somewhere? > > Thanks in advance! > > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list