Прикреплённый файл «boldcalc.py»
Загрузка 1 #!/usr/bin/env python3
2 '''
3 '''
4
5 import re
6
7 reVar = re.compile(r"[A-Za-z_]\w*$")
8 reNam = re.compile(r"([A-Za-z_]\w*)")
9 reVal = re.compile(r"[\w()%/+*-]+$")
10 reInv = re.compile(r"(?:\b\d+[A-Za-z_])|(?://)|(?:\*\*)|(?:\w\()")
11 SUF = "V_"
12 Var = {}
13
14 def calc(s, Var):
15 if s.startswith("#"):
16 return
17 *V, H = s.split("=")
18 if len(V)>1:
19 return "Syntax"
20
21 if V and not reVar.match(V[0]):
22 return "Assignment"
23
24 if all((H, reVal.match(H), not reInv.search(H))):
25 try:
26 Hr = reNam.sub(rf"{SUF}\1", H).replace("/", "//")
27 R = eval(Hr, {'__builtins__': {}}, Var)
28 except NameError as E:
29 return "Name"
30 except Exception as E:
31 return "Runtime"
32 else:
33 if type(R) is not int:
34 return "Syntax"
35 else:
36 return "Syntax"
37
38 if V:
39 Var[SUF+V[0]] = R
40 else:
41 return R
42
43 s = input().strip().replace(' ', '')
44 while s:
45 R = calc(s, Var)
46 if R != None:
47 print(R if type(R) is int else f"{R} error")
48 s = input().strip().replace(' ', '')
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.Вам нельзя прикреплять файлы к этой странице.
