Различия между версиями 14 и 15
Версия 14 от 2020-11-15 15:34:12
Размер: 4529
Редактор: FrBrGeorge
Комментарий:
Версия 15 от 2020-11-16 21:25:48
Размер: 4615
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 13: Строка 13:
  * круглых скобок   * круглых скобок, в которые заключено арифметическое выражение

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

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

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

    • идентификатор определяется стандартно: «произвольная последовательность латинских букв, цифр и символов подчёркивания не начинающаяся с цифры»

    • Если слева от "=" стоит не идентификатор, выводится "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() с двумя параметрами

  • Подсказка 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)