Проблема с условием if в простом калькуляторе.

7thAi

Новичок
Пользователь
Июн 19, 2023
4
0
1
1. Windows 10
2. Python 3

Добрый вечер. Столкнулся с такой проблемой - если при вычислении получается ноль, то срабатывает проверка if result == 0 и итоговое число получается неверным. Как это исправить ?

Код:
data = input().split()
result = 0

for index, value in enumerate(data):
    if result == 0:
        if "+" in value:
            result = int(data[index - 1]) + int(data[index + 1])
        elif "-" in value:
            result = int(data[index - 1]) - int(data[index + 1])
    else:
        if "+" in value:
            result += int(data[index + 1])
        if "-" in value:
            result -= int(data[index + 1])

print(result)
 

Вложения

  • Снимок экрана 2023-06-29 204623.png
    Снимок экрана 2023-06-29 204623.png
    2,7 КБ · Просмотры: 2

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
можно добавить дополнительную переменную флаг
Python:
data = input().split()
result = 0
flag = True

for index, value in enumerate(data):
    if flag:
        if "+" in value:
            result = int(data[index - 1]) + int(data[index + 1])
            flag = False
        elif "-" in value:
            result = int(data[index - 1]) - int(data[index + 1])
            flag = False
    else:
        if "+" in value:
            result += int(data[index + 1])
        if "-" in value:
            result -= int(data[index + 1])

print(result)
 

7thAi

Новичок
Пользователь
Июн 19, 2023
4
0
1
можно добавить дополнительную переменную флаг
Python:
data = input().split()
result = 0
flag = True

for index, value in enumerate(data):
    if flag:
        if "+" in value:
            result = int(data[index - 1]) + int(data[index + 1])
            flag = False
        elif "-" in value:
            result = int(data[index - 1]) - int(data[index + 1])
            flag = False
    else:
        if "+" in value:
            result += int(data[index + 1])
        if "-" in value:
            result -= int(data[index + 1])

print(result)
Спасибо
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
465
128
43
Добрый вечер. Столкнулся с такой проблемой - если при вычислении получается ноль, то срабатывает проверка if result == 0 и итоговое число получается неверным. Как это исправить ?
А если начальное значение будет отрицательным? Тут же словите исключение.
Вот такой вариант по проще будет, при условии, что кроме опреторов + и - не вводятся другие
Python:
expression = input('Введите выражение: ').replace(' ', '')
result, operator = 0, '+'

for char in expression:
    if char.isdigit():
        result += int(char) if operator == '+' else -int(char)
    else:
        operator = char

print('Результат:', result)
 
  • Мне нравится
Реакции: regnor

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