Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For å referere til navn (variabler og funksjoner) i en annen og importert modul, så brukes altså modul-navnet og punktum som prefiks, f.eks. rpncalc4core.isOperand i if-betingelsen. Dette er i grunnen samme notasjon som brukes når en kaller operands-lista sin pop-metode. En kan tenke på lista som et eget ark med funksjoner inni, men da er en inne på objektorientering...

Importerbar kode

Code Block

...

# rpncalc4core.py
operands = []
 
def isOperand(token):
    try:
        float(token)
        return True
    except ValueError:
        return False
 
def printOperands():
    print(operands)
 
def popOperands(n):
    size = len(operands)
    if size >= n:
        result = operands[size - n : size]
        global operands
        operands = operands[0 : size - n]
        return result
    else:
        return None
 
def pushOperand(operand):
    operands.append(operand)
 
def plus():
    ops = popOperands(2)
    if not (ops is None):
        pushOperand(ops[0] + ops[1])
 
def minus():
    ops = popOperands(2)
    if not (ops is None):
        pushOperand(ops[0] - ops[1])
Code Block
# rpncalc4ui.py
import rpncalc4core
 
def main():
    while (True):
        rpncalc4core.printOperands()
        token = raw_input(" > ")
        if rpncalc4core.isOperand(token):
            operand = float(token)
            rpncalc4core.pushOperand(operand)
        elif token == "exit":
            break
        elif token == "+":
            rpncalc4core.plus()
        elif token == "-":
            rpncalc4core.minus()
        else:
            print("Unsupported operator: " + token)
    print("program exited")
 
main()