@vchelina

В чем ошибка моего решения?

Напишите простой калькулятор, который считывает с пользовательского ввода три строки: первое число, второе число и операцию, после чего применяет операцию к введённым числам ("первое число" "операция" "второе число") и выводит результат на экран.

Поддерживаемые операции: +, -, /, *, mod, pow, div, где
mod — это взятие остатка от деления,
pow — возведение в степень,
div — целочисленное деление.

Если выполняется деление и второе число равно 0, необходимо выводить строку "Деление на 0!".

Обратите внимание, что на вход программе приходят вещественные числа.

Sample Input 1:

5.0
0.0
mod
Sample Output 1:

Деление на 0!
Sample Input 2:

-12.0
-8.0
*
Sample Output 2:

96.0
Sample Input 3:

5.0
10.0
/
Sample Output 3:

0.5

Мое решение:
x = float(input())
y = float(input())
z = input()
if z == '+':
    print(x + y)
    
elif z == '-':
    print(x - y)
    
elif z == '*':
    print(x * y)
    
elif z == '/' and y != 0.0:
    print(x / y)
elif z == '/' and y == 0.0:
    print('Деление на 0!')
    
elif z == 'mod' and y != 0.0:
    print(x // y)
elif z == 'mod' and y == 0.0:
    print('Деление на 0!')

elif z == 'div'and y != 0.0:
    print(x % y)
elif z == 'div' and y == 0.0:
    print('Деление на 0!')

elif z == 'pow'and x != 0.0:
    print(x ** y)
elif z == 'pow' and x == 0.0 and y < 0.0:
    print('Деление на 0!')
elif z == 'pow' and x == 0.0 and y >= 0.0:
    print(x ** y)
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 3
@NekoTeen
elif z == 'pow'and x != 0.0:
    print(x ** y)
elif z == 'pow' and x == 0.0 and y < 0.0:
    print('Деление на 0!')
elif z == 'pow' and x == 0.0 and y >= 0.0:
    print(x ** y)

Полагаю ошибка тут. Степень, как и числа, могут быть как и отрицательны, так и нулем.
Ответ написан
@zexer
1. Приведите ошибку, которая выводится.
elif z == 'div'and y != 0.0:
print(x % y)
elif z == 'div' and y == 0.0:
print('Деление на 0!')

в блоке elif 'div' без пробела с and
Ответ написан
Dr_Elvis
@Dr_Elvis
Вам нужно использовать конструкцию try...except и ловить деление на 0 ошибкой ZeroDivisionError
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
от 130 000 ₽
25 окт. 2020, в 04:58
2000 руб./за проект
24 окт. 2020, в 22:43
3000 руб./за проект