конкретно в вашем коде неверно условие проверки деления на 0:
if (b==0.0) and ((c=='mod') or (c=='/') or (c=='div')):
проверяем является ли второй операнд нулём, и является ли функция при этом ОДНОЙ ИЗ функций деления (а не всеми сразу).
З.Ы. привет всем, кто попал сюда со степика)))