[Tutor] What does "TypeError: 'int' object is not iterable" mean?

Dave Angel davea at ieee.org
Sat Oct 23 12:43:07 CEST 2010


On 2:59 PM, Richard D. Moores wrote:
> It's great to have you chime in, Steven. I do wish you would stop
> pulling your punches, however. ;)
>
> On Fri, Oct 22, 2010 at 17:23, Steven D'Aprano<steve at pearwood.info>  wrote:
>> On Sat, 23 Oct 2010 12:42:50 am Richard D. Moores wrote:
>>
>>> So I wrote a function:
>>>
>>> def float2n_decimals(floatt, n):
>>>      """
>>>      Given a float (floatt), return floatt to n decimal places.
>>>
>>>      E.g., with n =, 81.34567 ->  81.35
>>>      """
>>>      return ("%%.%sf" % n) % floatt
>>>
>>> which works fine,
>>
>> float2n_decimals(x, 3)
>>
>> is better written in place as:
>>
>> "%.*f" % (3, x)
>>
>> There's no need for a function for something so simple.
> Yes, but I needed one for ("%%.%sf" % n) % floatt .
>
> <snip>
>
Sometimes Steven's style can be a bit caustic, but there's almost always 
a few important nuggets.  In this case, you missed the one that your 
formatting is unnecessarily complicated, at least if you have a recent 
enough Python version.

In particular,
      "%.*f" % (n, myfloat)

will convert myfloat to a string, and use n as the precision, just as 
your more complex expression.  The asterisk is the magic character, that 
says use n as the precision field.

This syntax was available at least in 2.3, so unless you need to use an 
older version, there's not much need for the two-stage template system.

DaveA



More information about the Tutor mailing list