Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.
 Все файлы | Выбранные файлы: удалить переместить на страницу скопировать на страницу

Вам нельзя прикреплять файлы к этой странице.