[issue18267] xmlrpc.client documentation multicall example missleading for division behaviour of python3
New submission from Bernhard Reiter: http://docs.python.org/3.4/library/xmlrpc.client.html as of 2013-06-19 20:35 UTC has a divide example and the output can misslead the learning reader towards the new behaviour of python3 with the '/' binary operator for division. server code: def divide(x, y): return x/y client code: multicall.divide(7,3) [..] print("7+3=%d, 7-3=%d, 7*3=%d, 7/3=%d" % tuple(result)) The client call results into: python3 client.py 7+3=10, 7-3=4, 7*3=21, 7/3=2 This is missleading because '7/3' is now resulting to a float in python3 (see PEP238).The example probably was copied over from the python2 documentation where '7/3' result to int. The implicit conversion from float to int is done in the string formatting. Proposal replace the print line with print("7+3=%d, 7-3=%d, 7*3=%d, 7/3=%g" % tuple(result)) to get 7+3=10, 7-3=4, 7*3=21, 7/3=2.33333 or print(repr(tuple(result))) to get (10, 4, 21, 2.3333333333333335) ---------- assignee: docs@python components: Documentation messages: 191495 nosy: ber, docs@python priority: normal severity: normal status: open title: xmlrpc.client documentation multicall example missleading for division behaviour of python3 versions: Python 3.1, Python 3.2, Python 3.3, Python 3.4 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue18267> _______________________________________
Roundup Robot added the comment: New changeset 2a3bc6eb2e13 by Andrew Kuchling in branch '3.3': Closes #18267: use floor division in code example http://hg.python.org/cpython/rev/2a3bc6eb2e13 ---------- nosy: +python-dev resolution: -> fixed stage: -> committed/rejected status: open -> closed _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue18267> _______________________________________
Bernhard Reiter added the comment: Andrew, thanks for caring! Seeing your fix 2a3bc6eb2e13 I believe it does not fully resolv the issue. Now the code reads "return x // y" "multicall.divide(7,3)" and the client prints "7/3=2" I think you probably should change "7/3=" to "7//3=" in the client code as well to be instructive to learners. By the way: your change also introduced whitespace around the operator. Now it is the only one out of the four. I guess they should be consistent. ---------- resolution: fixed -> status: closed -> open _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue18267> _______________________________________
Roundup Robot added the comment: New changeset 38d341ef28b3 by Ezio Melotti in branch '3.3': #18267: make whitespace consistent and fix an operator. http://hg.python.org/cpython/rev/38d341ef28b3 New changeset 9875410ed390 by Ezio Melotti in branch 'default': #18267: merge with 3.3. http://hg.python.org/cpython/rev/9875410ed390 ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue18267> _______________________________________
Ezio Melotti added the comment: Fixed, thanks for the report! ---------- assignee: docs@python -> ezio.melotti nosy: +ezio.melotti resolution: -> fixed status: open -> closed type: -> enhancement versions: -Python 3.1, Python 3.2 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue18267> _______________________________________
participants (3)
-
Bernhard Reiter
-
Ezio Melotti
-
Roundup Robot