Различия между версиями 6 и 7
Версия 6 от 2020-11-12 12:03:34
Размер: 2990
Редактор: FrBrGeorge
Комментарий:
Версия 7 от 2020-11-12 20:44:34
Размер: 3142
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 17: Строка 17:
 * Если выражение нельзя вычислить, по какой-то другой причине, выводится "`Runtime error`"

Написать программу — калькулятор с переменными и обработкой ошибок. Программа построчно вводит команды калькулятора, и если надо, выводит результат их выполнения или ошибку.

  • Пробелы в строках игнорируются
  • Команда, начинающаяся на '#' — комментарий, такие команды игнорируются

  • Команда вида Идентификатор = выражение задаёт переменную Идентификатор (именование как в Python)

    • Если слева от "=" стоит не идентификатор, выводится "Assignment error"; всё, что справа, игнорируется, присваивания не происходит

  • Команда вида выражение выводит значение выражения.

  • Выражение — это арифметическое выражение, состоящее из
    • целых чисел

    • уже определённых идентификаторов
    • круглых скобок
    • действий +, -, *, /, % и унарных + и -.

      • Деление целочисленное

    • Любое другое выражение приводит к выводу ошибки "Syntax error"

  • Если выражение нельзя вычислить, потому что в нём встречаются неопределённые переменные, выводится ошибка "Name error"

  • Если выражение нельзя вычислить, по какой-то другой причине, выводится "Runtime error"

# Ошибок нет
234
10/3
A = 3*(2+(1-7)%5)
A+100
+ ++ - -- - + - - 0
# Начинаются ошибки
7*B
3=3
A=4=5
A()
A/0
  • Подсказка 1: удобно пользоваться eval() со всеми тремя параметрами

    • есть такая в нашем случае неприятная штука — __builtins__, её тоже следует перебить или как-то поигнорить

  • Подсказка 2: кое-какие иные конструкции Python тоже являются синтаксическими ошибками

234
3
118
0
Name error
Assignment error
Syntax error
Syntax error
Runtime error
  • В этом примере сначала приведён ввод, затем вывод (так и будет при тестировании), но если запустить вручную они перемешиваются
  • Я делал так:
       1 $ mkfifo BoldCalc
       2 $ python3 BoldCalc.py > BoldCalc
       3 … ввод
       4 
    
    • и в другом окне
       1 $ cat BoldCalc
       2 … вывод
       3 
    


CategoryHomework

LecturesCMC/PythonIntro2020/Homework_BoldCalc (последним исправлял пользователь FrBrGeorge 2020-11-16 21:27:58)