Hi,

Barak, Ron wrote:
Hi,

Wanting to print the correct plural after numbers, I did the following:

for num in range(1,4):
    string_ = "%d event%s" % (num,lambda num: num > 1 and "s" or "")
    print string_

However, instead of getting the expected output:

1 event
2 events
3 events

I get:

1 event<function <lambda> at 0x00AFE670>
2 event<function <lambda> at 0x00AFE670>
3 event<function <lambda> at 0x00AFE6B0>

lambda creates a function so this is the result you
are seeing. You would need to call the function
to get your result.

(num,(lambda n: n >1 and "s" or "")(num))

which is just a quite useless application
of lambda :-)

(num,num >1 and "s" or "")

or even

(num,"s" if num >1 else "")

in python > 2.5

or in python <3.0:

(num,"s"*(num >1))

:-)

HTH
Tino

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to