Giter Club home page Giter Club logo

ss23-git's Introduction

Reverse Polish notation calculator in Python

Reverse Polish notation (RPN) is a postfix expression notation. Unlike the infix notation taught in schools, RPN defines an unambiguous evaluation strategy without brackets. This makes it especially simple to implement an RPN calculator -- all you need is a small amount of parsing code, and a stack (a first in, first out data structure).

Usage

From the rpn-calc/src directory:

python rpn_calc.py

Expressions are read from stdin. Input strings are broken into space-separated tokens.

  • Binary operators: +, -, *, /
  • Special functions: p (pops number on top of stack and prints)
  • Numbers are parsed as floats.

At input end, the top of the stack is popped and printed.

Binary operators work by popping two arguments off the stack, running a calculation, and pushing the result. The top of the stack becomes the left operand, and the element one below the top becomes the right operand, as in the following illustration:

Illustration of binary operator processing

Example

The input string 1 2 + processed as follows:

  • 1: push 1
  • 2: push 2
  • +: pop 2, pop 1, push 2 + 1

Here's an example shell session:

$ cd rpn-calc/src
$ python rpn_calc.py << EOM
1 2 +
EOM
3.0

Installation (including running pytest)

git clone https://github.com/Cambridge-ICCS/ss23-git.git
cd ss23-git
python -m venv venv
source venv/bin/activate
pip install pytest
cd rpn-calc/src
pytest

ss23-git's People

Contributors

raehik avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.