Я проверял мой код, и я подумал, что этот кусок кода был правильным:decimal.InvalidOperation в питона
while True:
try:
p = Decimal(raw_input(...))
if ...condition... : break
else: raise ValueError
except ValueError:
print "Error! ..."
, но это не так, так как, когда я вход «а», это то, что я получаю:
File "multiple.py", line 28, in <module>
precision = Decimal(raw_input(...))
File "/usr/lib/python2.7/decimal.py", line 548, in __new__
"Invalid literal for Decimal: %r" % value)
File "/usr/lib/python2.7/decimal.py", line 3872, in _raise_error
raise error(explanation)
decimal.InvalidOperation: Invalid literal for Decimal: 'a'
ValueError не улавливает InvalidOperation. Я не хочу, чтобы программа остановилась из-за этого, я хочу, чтобы он продолжал просить ввода, пока он не удовлетворяет условию. Как мне это сделать?
Вы _could_ попытаетесь поймать исключение 'decimal.InvalidOperation' ... –
@ PM2Ring как? 'except decimal.InvalidOperation'? – Pigna
@Pigna: Да, вы еще это пробовали? –