-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask15_calculator.py
More file actions
113 lines (88 loc) · 4.79 KB
/
Copy pathtask15_calculator.py
File metadata and controls
113 lines (88 loc) · 4.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
"""Напишите программу, которая будет выполнять простейшие математические операции с числами последовательно,
принимая от пользователя операнды (числа) и оператор.
Условия приёмки
Приложение работает с целыми и дробными числами.
Приложение умеет выполнять такие математические операции:
СЛОЖЕНИЕ (+)
ВЫЧИТАНИЕ (-)
УМНОЖЕНИЕ (*)
ДЕЛЕНИЕ (/)
Приложение принимает один операнд или один оператор за один цикл запрос-ответ.
Все операции приложение выполняет по мере поступления — одну за одной.
Приложение выводит результат вычислений, когда получает от пользователя =.
Приложение заканчивает свою работу после того, как выведет результат вычисления.
Пользователь по очереди вводит числа и операторы.
Если пользователь вводит оператор два раза подряд, то он получает сообщение об ошибке и может ввести повторно.
Если пользователь вводит число два раза подряд, то он получает сообщение об ошибке и может ввести повторно.
Приложение корректно обрабатывает ситуацию некорректного ввода (exception).
result — сюда помещаем итоговый результат
operand — всегда хранит текущее число
operator — строковый параметр, может содержать четыре значения, "+", "-", "*", "/"
wait_for_number — флаг, который указывает, что ожидают на вводе, оператор (operator) или операнд (operand)
Тестовые последовательности:
Первая: ["10", "+", "5", "6", "/", "3", "-", "a", "2", "*", "6", "="], результат 18.0
Вторая: ["2", "3", "-", "1", "+", "10", "*", "2", "="], результат 22.0
Очикуємо:
=> 10
=> +
=> 5
=> 6
6 is not '+' or '-' or '/' or '*'. Try again
=> /
=> 3
=> -
=> a
'a' is not a number. Try again.
=> 2
=> *
=> 6
=> =
Result: 18.0
"""
result = None # сюда помещаем итоговый результат
operand = None # всегда хранит текущее число
operator = None #строковый параметр, может содержать четыре значения, "+", "-", "*", "/"
wait_for_number = True # флаг, который указывает, что ожидают на вводе, оператор (operator) или операнд (operand)
while True:
try:
input_kursor = input(">>> ")
input_kursor_int = int(input_kursor)
if wait_for_number == False:
print(f"'{input_kursor_int}' is not '+' or '-' or '/' or '*'. Try again")
operand = input_kursor_int
if operator == '+' and wait_for_number == True:
result = result + operand
elif operator == '-' and wait_for_number == True:
result = result - operand
elif operator == '*' and wait_for_number == True:
result = result * operand
elif operator == '/' and wait_for_number == True:
result = result / operand
elif wait_for_number == True:
result = operand
wait_for_number = False
#print (wait_for_number)
except ValueError:
if input_kursor == '+' and wait_for_number == False :
operator = "+"
#result = result + operand
elif input_kursor == '-' and wait_for_number == False:
operator = "-"
#result = result - operand
elif input_kursor == '*' and wait_for_number == False:
operator = "*"
#result = result * operand
elif input_kursor == '/' and wait_for_number == False:
operator = "/"
#result = result / operand
elif input_kursor == '=' and wait_for_number == False:
print(f"Result: {result}")
break
else:
print(f"'{input_kursor}' is not a number. Try again.")
wait_for_number = True
#print (wait_for_number)
finally:
None
#print(f"operand - {operand} operator - {operator}")
#print(f"result: {result}")