Калькулятор стал все складывать после добавления функции возведения в степень.

ruslancats

Новичок
Пользователь
Мар 5, 2024
2
0
1
Python:
While = True
try:
    print ("Сначала введите два числа, а потом порядковый номер функции \n 1)+\n 2)-\n 3)*\n 4)/\n 5)^\n")
    a = input ("Введите первое число ")
    b = input ("Введите второе число ")
    c = input ("Выберите функцию ")
    if c == "+" or "1":
        print (int(a) + int(b))
    elif c == "-" or "2":
        print (int(a) - int(b))
    elif c == "*" or "3":
        print (int(a) * int(b))
    elif c == "^" or "5":
        print (int(a) ** int(b))           
    elif c == "/" or "4":
        if b != 0:
            print("На ноль делить нельзя")
        else:
            print(int(a) / int(b))     
    else:
        print("Ошибка")

except Exception:
    print("Таким как ты, калькулятор не поможет...")

Все работало стабильно, но когда добавил степень абсолютно каждая функция заменилась на сложение.

ОC : Windows 10 Pro 64-bit
Компилятор : Visual Studio Code
Версия pyton : 3.12.2

 

PYDEV

Пользователь
Пользователь
Авг 31, 2023
32
8
8
твой код должен был выглядеть так:
Python:
while True:
    try:
        print("Сначала введите два числа, а потом порядковый номер функции \n 1)+\n 2)-\n 3)*\n 4)/\n 5)^\n")
        a = int(input("Введите первое число "))
        b = int(input("Введите второе число "))
        c = input("Выберите функцию ")
        if c == "+" or c == "1":
            print(a + b)
        elif c == "-" or c == "2":
            print(a - b)
        elif c == "*" or c == "3":
            print(a * b)
        elif c == "^" or c == "5":
            print(a ** b)         
        elif c == "/" or c == "4":
            if b == 0:
                print("На ноль делить нельзя")
            else:
                print(a / b)   
        else:
            print("Ошибка")

    except Exception:
        print("Таким как ты, калькулятор не поможет...")
Или, можно слегка улучшать:
Python:
while True:
    try:
        print("Сначала введите два числа, а потом порядковый номер функции \n 1)+\n 2)-\n 3)*\n 4)^\n 5)/\n")
        a = int(input("Введите первое число: "))
        b = int(input("Введите второе число: "))
        c = input("Выберите функцию: ")

        match c:
            case "+" | "1":
                print(a + b)
            case "-" | "2":
                print(a - b)
            case "*" | "3":
                print(a * b)
            case "^" | "4":
                print(a ** b)
            case "/" | "5":
                if b == 0:
                    print("На 0 делить нельзя.")
                print(a // b)
            case _:
                print("Ошибка!")
      
    except Exception as e:
        print(f"{e}")
 
Последнее редактирование:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
374
108
43
1. Условие вида if c == "+" or "1": интерпретируется питоном иначе, чем мы ожидаем. Правильно писать
if c == "+" or c == "1": или if c in ("+", "1"):
2. Введенные строки a и b лучше преобразовывать в числа сразу, а не тащить каждый раз функцию int() для вычисления выражений
a = int(input("Введите первое число ")) b = int(input("Введите второе число "))
3. Если нужен бесконечный цикл, то пишем while True:
4. Cтавить пробел между именем функции и оператором её вызова не красиво. print () - ❌, print() - ✅
 
  • Мне нравится
Реакции: regnor

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
1. Условие вида if c == "+" or "1": интерпретируется питоном иначе, чем мы ожидаем.
не только питоном, а всеми языками программирования
 

ruslancats

Новичок
Пользователь
Мар 5, 2024
2
0
1
Спасибо за помощь!
 

Форум IT Специалистов