Различия между версиями 1 и 2
Версия 1 от 2020-11-11 22:32:56
Размер: 2719
Редактор: FrBrGeorge
Комментарий:
Версия 2 от 2020-11-11 22:33:16
Размер: 2705
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
 Написать программу — калькулятор с переменными и обработкой ошибок
  * Пробелы в строках игнорируются
  * Команда, начинающаяся на '`#`' — комментарий, такие команды игнорируются
  * Команда вида `Идентификатор = выражение` задаёт переменную `Идентификатор` (именование как в Python)
  * Если слева от "`=`" стоит не идентификатор, выводится `"Assignment error`"; всё, что справа, игнорируется
  * Команда вида `выражение` выводит значение выражения.
  * Выражение — это арифметическое выражение, состоящее из
   * ''целых'' чисел
   * уже определённых идентификаторов
   * круглых скобок
   * действий `+`, `-`, `*`, `/`, `%` и унарных `+` и `-`.
    * Деление ''целочисленное''
  * Любое другое выражение приводит к выводу ошибки "`Syntax error`"
  * Если выражение нельзя вычислить, потому что в нём встречаются неопределённые переменные, выводится ошибка "`Name error`"
Написать программу — калькулятор с переменными и обработкой ошибок
 * Пробелы в строках игнорируются
 * Команда, начинающаяся на '`#`' — комментарий, такие команды игнорируются
 * Команда вида `Идентификатор = выражение` задаёт переменную `Идентификатор` (именование как в Python)
  * Если слева от "`=`" стоит не идентификатор, выводится `"Assignment error`"; всё, что справа, игнорируется
 * Команда вида `выражение` выводит значение выражения.
 * Выражение — это арифметическое выражение, состоящее из
  * ''целых'' чисел
  * уже определённых идентификаторов
  * круглых скобок
  * действий `+`, `-`, `*`, `/`, `%` и унарных `+` и `-`.
   * Деление ''целочисленное''
  * Любое другое выражение приводит к выводу ошибки "`Syntax error`"
 * Если выражение нельзя вычислить, потому что в нём встречаются неопределённые переменные, выводится ошибка "`Name error`"

Написать программу — калькулятор с переменными и обработкой ошибок

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

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

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

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

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

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

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

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

  • Если выражение нельзя вычислить, потому что в нём встречаются неопределённые переменные, выводится ошибка "Name 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)