Программа "Простейший калькулятор"

Написать программу, которая выполняет над двумя вещественными числами одну из четырех арифметических операций (сложение, вычитание, умножение или деление). Программа должна завершаться только по желанию пользователя.

Чтобы программа самопроизвольно не завершалась, в ней надо запустить бесконечный цикл. Выход из него будем осуществлять с помощью оператора break, если пользователь вводит определенный символ вместо знака арифметической операции.

Если пользователь ввел знак, который не является ни знаком арифметической операции, ни символом-"прерывателем" работы программы, то вывести сообщение о некорректном вводе.

Если был введен один из четырех знаков операции, запросить ввод двух чисел.

В зависимости от знака операции выполнить соответствующее арифметическое действие.

Если было выбрано деление, необходимо проверить не является ли нулем второе число. Если это так, то сообщить о невозможности деления.

print("Ноль в качестве знака операции завершит работу программы")
while True:
    s = input("Знак (+,-,*,/): ")
    if s == '0': break
    if s in ('+','-','*','/'):
        x = float(input("x="))
        y = float(input("y="))
        if s == '+':
            print("%.2f" % (x+y))
        elif s == '-':
            print("%.2f" % (x-y))
        elif s == '*':
            print("%.2f" % (x*y))
        elif s == '/':
            if y != 0:
                print("%.2f" % (x/y))
            else:
                print("Деление на ноль!")
    else:
        print("Неверный знак операции!")

Пример выполнения программы:

Ноль в качестве знака операции завершит работу программы
Знак (+,-,*,/): h
Неверный знак операции!
Знак (+,-,*,/): +
x=78.456
y=23.567
102.02
Знак (+,-,*,/): -
x=3.44
y=10.25
-6.81
Знак (+,-,*,/): *
x=0.012
y=-2.15
-0.03
Знак (+,-,*,/): /
x=5 
y=0
Деление на ноль!
Знак (+,-,*,/): /
x=-2.3
y=5
-0.46
Знак (+,-,*,/): 0

Комментарии

Я лишь начал изучать питон и он мне чертовски нравится. Конечно вопрос для вас будет звучать смешно, ибо вы разбираетесь в этом гораздо лучше меня. Что означает "%.2f" и почему вы его ввели?

while True:
    a=input("первое число: ")
    b=input("второе число: ")
    c=input("действие: ")
    if c =='/':
        if c != 0:
            print(int(a) / int(b))
        else:
            print("Деление на ноль")
Почему ошибку выдает?что не так?

Ответ на от Артем

Потому что, когда проверяется b != 0, переменная b еще не переведена в тип int. В ней содержится строка. Например '0'. Выражение '0' != 0 истина, поэтому происходит деление на ноль и генерируется исключение ZeroDivisionError.

Вместо b != 0 попробуйте int(b) != 0.

print("Привет, я калькулятор от Титаренко Романа, мой создатель молод, поэтому пока так мало функций!")
x = float( input("Первое число: ") )
y = float( input("Второе число: ") )
z = input("Прибавление(+), вычитание(-), умножение(*), деление(/) ")
if z == "+":
	z = x + y
	print("=" + str(z))
elif z == "-":
	z = x - y
	print("=" + str(z))
elif z == "*":
	z = x * y
	print("=" + str(z))
elif z == "/":
	if int(y) != 0:
        print("=" + str(z))
        else:
            print("Деление на ноль невозможно!")
else:
	print("Неверный знак операции!")
Ошибка
 File "C:\Users\titvo\Desktop\Test\Calculator.py", line 16
    print("=" + str(z))
                      ^
TabError: inconsistent use of tabs and spaces in indentation

Ответ на от Роман

import sys
 
x = input("Первое число: ")
z = input("Прибавление(+), вычитание(-), умножение(*), деление(/) ")
y = input("Второе число: ")
b = ""
try:
    print('INSIDE TRY')
    inp_x = float(x)
    inp_y = float(y)
    inp_z = ""
except ValueError:
    print('INSIDE EXCEPT')
    print("\nВведено неверное значение!")
    sys.exit()
else:
    print('INSIDE ELSE')
    if z == "+":
        b = float(x) + float(y)
        print(f"Результат операции равен:   {b}")
    elif z == "-":
        b = float(x) - float(y)
        print(f"Результат операции равен:   {b}")
    elif z == "*":
        b = float(x) * float(y)
        print(f"Результат операции равен:   {b}")
    else:
        if float(y) != 0 and z == "/":
            b = float(x) / float(y)
            print(f"Результат операции равен:   {b}")
        else:
            if float(y) == 0:
                print("Деление на ноль невозможно!")
            else:
                print("Введен неверный знак операции!")

Ответ на от Роман

print("Привет, я калькулятор от Титаренко Романа, мой создатель молод, поэтому пока так мало функций!")
x = float( input("Первое число: ") )
y = float( input("Второе число: ") )
z = input("Прибавление(+), вычитание(-), умножение(*), деление(/) ")
if z == "+":
    z = x + y
    print("=" + str(z))
elif z == "-":
    z = x - y
    print("=" + str(z))
elif z == "*":
    z = x * y
    print("=" + str(z))
elif z == "/":
    if int(y) != 0:
        print("=" + str(z))
    else:
        print("Деление на ноль невозможно!")
else:
    print("Неверный знак операции!")

Ответ на от Роман

Вроде там ошибка в
((x = float( input("Первое число: ") )
y = float( input("Второе число: ") )
z = input("Прибавление(+), вычитание(-), умножение(*), деление(/) ")))
Так как z у тебя дано но ты потом ищешь!!!

def calc():
    x = input("Первое число: ")
    z = input("Прибавление(+), вычитание(-), умножение(*), деление(/) ")
    y = input("Второе число: ")
    try:
        print('INSIDE TRY')
        x = float(x)
        y = float(y)
    except ValueError:
        print("\nВведено неверное значение! Попробуйте снова!")
        calc()
    else:
        if z == "+":
            b = float(x) + float(y)
            print(f"Результат операции равен:   {b}")
        elif z == "-":
            b = float(x) - float(y)
            print(f"Результат операции равен:   {b}")
        elif z == "*":
            b = float(x) * float(y)
            print(f"Результат операции равен:   {b}")
        else:
            if float(y) != 0 and z == "/":
                b = float(x) / float(y)
                print(f"Результат операции равен:   {b}")
            else:
                if float(y) == 0:
                    print("Деление на ноль невозможно!")
                else:
                    print("Введен неверный знак операции! Попробуйте снова!")
                    calc()
 
 
calc()

Что не так в том что при деление на ноль не пишет что так нельзя:
A=float(input())
B=float(input())
C=input()
if C=='+':
  print(A+B)
elif C=='-':
  print(A-B)
elif C=='*':
  print(A-B)
elif C=='/' and B!=0.0:
  print(A-B)
  if B==0.0:
    print("Деление на 0!")
  else:
      print(A/B)
elif C=='mod' and B!=0.0:
  print(A%B)
  if B==0.0:
    print("Деление на 0!")
  else:
    print(A%B)
elif C=='pow':
  print(A**B)
elif C=='div' and B!=0.0:
  print(A//B)
  if B==0.0:
    print("Деление на 0!")
  else:
    print(A//B)

Почему при деление на ноль не выводит Делить на 0!

elif C=='-':
  print(A-B)
elif C=='*':
  print(A-B)
elif C=='/':
if B != 0:
print(A/B)
    else:
    print("Деление на 0!")
elif C=='mod' and B!=0.0:
  print(A%B)
  if B==0.0:
  print("Деление на 0!")
  else:
  print(A%B)
elif C=='pow':
  print(A**B)
elif C=='div' and B!=0.0:
  print(A//B)
  if B==0.0:
    print("Деление на 0!")
  else:
    print(A//B)