New submission from Terry J. Reedy:
I propose that we add 'of ####' to all ZeroDivisionError messagesso it is less
necessary to use a debugger to add print statements to recover the information
currently tossed away. (I also propose to change denominator from 'zero' to
'0', '0.0', '0+0j', as appropriate.)
>>> 3//0
...
ZeroDivisionError: integer division or modulo by zero
# augment to
ZeroDivisionError: integer division or modulo of 3 by 0
Similarly for
>>> 3 / 0
ZeroDivisionError: division by zero
# perhaps this should be 'true division of 3 by 0'
>>> 3.0 / 0.0
ZeroDivisionError: float division by zero
>>> (3+3j) / (0+0j)
ZeroDivisionError: complex division by zero
In #7482 it was proposed to make float and complex messages same as int message
by adding 'or modulo'. I an not sure why not to do that, or if it was just
deferred.
Fractions currently print the numerator as part of an invalid numerator / 0
result from *either* construction or division.
>>> from fractions import Fraction as F
>>> F(3, 0)
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
F(3, 0)
File "C:\Programs\Python33\lib\fractions.py", line 167, in __new__
raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
ZeroDivisionError: Fraction(3, 0)
# Here, 'Fraction(3, 0)' is invalid input.
>>> F(3, 1) / F(0, 1)
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
F(3, 1) / F(0, 1)
File "C:\Programs\Python33\lib\fractions.py", line 367, in forward
return monomorphic_operator(a, b)
File "C:\Programs\Python33\lib\fractions.py", line 417, in _div
a.denominator * b.numerator)
File "C:\Programs\Python33\lib\fractions.py", line 167, in __new__
raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
ZeroDivisionError: Fraction(3, 0)
# Here, 'Fraction(3, 0)' is invalid output.
I found this confusing until I worked out the dual meaning. I think
ZeroDevisionError: invalid Fraction(3, 0) from construction or division
might be a bit clearer.
I have not looked at decimals.
----------
components: Interpreter Core
messages: 169410
nosy: ezio.melotti, mark.dickinson, terry.reedy
priority: normal
severity: normal
stage: needs patch
status: open
title: Add numerator to ZeroDivisionError messages
type: enhancement
versions: Python 3.4
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue15815>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com