Skip to content

Commit f85c73d

Browse files
authored
Create Freecodecamp_calcul_project
1 parent ee47085 commit f85c73d

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

Freecodecamp_calcul_project

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Калькулятор для обработки примеров на сложение и вычитание целочисленных типов данных
2+
# Примеры подаются в виде списка. Не более 4 шт.
3+
# Размер числа не превышает 4 цифр
4+
5+
def arithmetic_arranger(list_of_problems):
6+
7+
# Функция, которая сбрасывает все вычисления. В случае обнаружения ошибки
8+
def reset():
9+
global line_1, line_2, line_3, line_4
10+
line_1 = ''
11+
line_2 = ''
12+
line_3 = ''
13+
line_4 = ''
14+
15+
# Проверка количества примеров (не больше 4)
16+
not_checked = True
17+
while not_checked:
18+
if len(list_of_problems) > 4:
19+
print('Error: Too many problems.')
20+
not_checked = False
21+
else:
22+
not_checked = False
23+
24+
# Создание строк для записи примеров столбиком
25+
global line_1, line_2, line_3, line_4
26+
line_1 = ''
27+
line_2 = ''
28+
line_3 = ''
29+
line_4 = ''
30+
31+
# Цикл решения примеров
32+
for problem in list_of_problems:
33+
# Решение примера на сложение
34+
if '+' in problem:
35+
a,b = problem.split('+') # Выделение слагаемых
36+
lenth = len(a)+1 if len(a)>len(b) else len(b)+1 # Определение ширины примера
37+
try:
38+
a,b = int(a),int(b) # Проверка на отсутствие букв и символов в числах
39+
except:
40+
print('Error: Numbers must only contain digits.')
41+
reset()
42+
break
43+
44+
# Проверка размера числа (не больше 4 цифр)
45+
if len(str(a))>4 or len(str(b))>4:
46+
print('Error: Numbers cannot be more than four digits.')
47+
reset()
48+
break
49+
50+
# Формирование примера в форме столика
51+
line_1 += ' '*(lenth-len(str(a)))+str(a)+' '*4
52+
line_2 += '+' + ' '*(lenth-len(str(b))-1)+str(b)+' '*4
53+
line_3 += '-'*lenth+' '*4
54+
c = int(a) + int(b)
55+
line_4 += ' '*(lenth-len(str(c)))+str(c)+' '*4
56+
57+
# Решение примера на вычетание
58+
elif '-' in problem:
59+
a,b = problem.split('-') # Выделение уменьшаемого и вычитаемого
60+
lenth = len(a)+1 if len(a)>len(b) else len(b)+1 # Определение ширины примера
61+
try:
62+
a,b = int(a),int(b) # Проверка на отсутствие букв и символов в числах
63+
except:
64+
print('Error: Numbers must only contain digits.')
65+
reset()
66+
break
67+
68+
# Проверка размера числа (не больше 4 цифр)
69+
if len(str(a))>4 or len(str(b))>4:
70+
print('Error: Numbers cannot be more than four digits.')
71+
reset()
72+
break
73+
74+
# Формирование примера в форме столика
75+
line_1 += ' '*(lenth-len(str(a)))+str(a)+' '*4
76+
line_2 += '-' + ' '*(lenth-len(str(b))-1)+str(b)+' '*4
77+
line_3 += '-'*lenth+' '*4
78+
c = int(a) - int(b)
79+
line_4 += ' '*(lenth-len(str(c)))+str(c)+' '*4
80+
81+
# Обработка случая использования иных знаков кроме + и -
82+
else:
83+
print("Error: Operator must be '+' or '-'")
84+
reset()
85+
break
86+
87+
# Отмена печати примеров, если в каком-то из них ошибка
88+
if len(line_1) == 0:
89+
pass
90+
else:
91+
# Печать примеров
92+
print(f'{line_1}\n{line_2}\n{line_3}\n{line_4}')
93+
94+
# Тестирование функции
95+
arithmetic_arranger(["32 + 698", "4531 - 2", "45 + 43", "123 + 49", "123 + 49"])
96+
print()
97+
arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"])
98+
print()
99+
arithmetic_arranger(["32 + 698", "4531 - 2", "45 + 43", "123 + 445654649"])
100+
print()
101+
arithmetic_arranger(["32 + 698", "4531 - 2", "4wer5 + 43", "123 + 49"])
102+
print()
103+
arithmetic_arranger(["32 + 698", "4531 / 2", "45 + 43", "123 + 49"])
104+
print()

0 commit comments

Comments
 (0)