A simple calculator library.
This module is now a Python package. You can install it using:
$ sudo pip install simplecalculator
Examples of usage:
-
simplecalculator.py
-- a command-line utility -
tornadoweb.py
-- a TornadoWeb applications with a minimalistic RESTful API. Do you math with curl!
Clone this repo and test it:
$ nosetests tests/*.py
All good?
-
Import
calculator
-
Instantiate
SimpleCalculator()
-
Call
run()
with the list of values, operands, and functions you want to process. -
The history of operations, results, and unprocessed input is stored in
SimpleCalculator.log
.
Here's a short sample:
from calculator.simple import SimpleCalculator
c = SimpleCalculator()
c.run('1 + 1')
print c.log
If you want to read the state of the LCD (no kidding!), use
print c.lcd
Run:
$ ./simplecalculator.py -s "1 + 2 / 6 acv 1 + 1 / 33 fmod 0.01"
then
$ ./simplecalculator.py -s "1 + 2 / 6 acv 1 + 1 / 33 ceil fmod"
then
$ ./simplecalculator.py -s "1 + 2 / 6 acv 1 + 1 / 33 fmod 0.01 1 2 3 4"
This calculator is as forgiving as a simple desktop calculator, it will ignore what it does not know, try to compute what it can treating the given string as a list of keystrokes. You may see one or more status
entries after the last result, that's intended.
If you want to implement this alculator as a RESTful API, install TornadoWeb and run `tornadoweb.py', then use curl:
$ curl -X POST http://localhost:8888/v1/calculate -d '1 + 2 / 6 acv 1 + 1 / 33 fmod 0.01 1 2 3 4'
You can easily extend this calculator to support any number of one- and two-argument functions, search calculator/simple.py for fmod
and ceil
to see what modifications you need to make.
I got asked to provide samples of my work, proof I know Python, etc. This project is way more than what I was asked to deliver, but I had more time to spare. There is more coming.
Jacek Artymiak