Калькулятор Python - Неявный математический модуль

Время от времени мне нужно получить ответ на расчет. Поскольку у меня обычно есть экран терминала, который является естественным местом для меня, чтобы задать такие математические вопросы.

Интерактивная оболочка Python подходит для этой цели, если вы хотите ввести еще одну оболочку только для выхода из нее позже.

Иногда, хотя желательно, чтобы ответ был немедленно доступен из командной строки. Python имеет параметр -c, который, как мне показалось, полезен при обработке одной команды и возвращении результата. Я написал следующую bash оболочку script, чтобы использовать ее:

#!/bin/bash
# MHO 12-28-2014
#
# takes a equation from the command line, sends it to python and prints it
ARGS=0
#
if [ $# -eq 1 ]; then
  ARGS=1
fi
#
if [ $ARGS -eq 0 ]; then
  echo "pc - Python Command line calculator"
  echo "ERROR: pc syntax is"
  echo "pc EQUATION"
  echo "Examples"
  echo "pc 12.23+25.36      pc \"2+4+3*(55)\""
  echo "Note: if calculating one single equation is not enough,"
  echo "go elsewhere and do other things there."
  echo "Enclose the equation in double quotes if doing anything fancy."
  echo "m=math module ex. \"m.cos(55)\""
  exit 1
fi
#
if [ $ARGS -eq 1 ]; then
  eqn="$1"
  python -c "import math; m=math; b=$eqn; print str(b)"
fi
#

Пример вывода

$ pc 1/3.0
0.333333333333
$ pc 56*(44)
2464
$ pc 56*(44)*3*(6*(4))
177408
$ pc "m.pi*(2**2)"
12.5663706144

Вопрос, имея в виду опцию python -c, есть ли какой-либо краткий способ неявного обращения к математическому модулю, чтобы последняя команда pc могла быть отформатирована как pc "pi*(2**2)"?

Ответ 1

Вы можете использовать

from math import *

чтобы импортировать все константы и функции из математического модуля в вашу глобальную область.

Ответ 2

if [ $ARGS -eq 1 ]; then
  eqn="$1"
  python -c "from math import *; b=$eqn; print str(b)"
fi

$ pc "pi*(2**2)"
12.5663706144

Отлично! Спасибо!

Ответ 3

Вы можете полностью прикрепить весь код работающей программы?