Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 15:17, 8 November 2007.

A simple calculator

From Forum Nokia Wiki

Here is an example of a basic calculator for Python S60:

import appuifw
 
z=1
c=0
x=float(appuifw.query(u"Type a number:", "text"))
while(z!=2):
     operation=appuifw.popup_menu([u"+", u"-", u"*", u"/"])
     y=float(appuifw.query(u"Type a number:", "text"))
     if(operation==0):
		rez=x+y
     if(operation==1):
		rez=x-y
     if(operation==2):
		rez=x*y
     if(operation==3):
		rez=x/y		
     x=rez
     continueoption=appuifw.popup_menu([u"%f" % (rez), u"Quit"])
     if(continueoption==1):z=2

Here is the more complex version, which provides more functionality:

from __future__ import division
from math import sin,cos,tan,sqrt,log
import appuifw
import e32
 
def lg(x,y):
	ex=0
	while(pow(x,ex)<y):ex=ex+0.01
	return ex
def quit():
	app_lock.signal()
 
def calculator():
        picked1=appuifw.popup_menu([u"Operations", u"Trigonometry"])
	if(picked1==0):
                        z=1
			c=0
			nroption=appuifw.popup_menu([u"Type a number", u"e", u"pi"])
			if(nroption==0):x=float(appuifw.query(u"Type a number:", "text"))
			if(nroption==1):x=2.7183	
			if(nroption==2):x=3.1415926
			while(z!=2):
				if(c!=1):operation=appuifw.popup_menu([u"+", u"-", u"*", u"/", u"x^y", u"x^1/y", u"ln", u"log"])
				while(operation==4):
					nroption=appuifw.popup_menu([u"Type a number", u"e", u"pi"])
					if(nroption==0):y=float(appuifw.query(u"Type a number:", "text"))
					if(nroption==1):y=2.7183	
					if(nroption==2):y=3.1415926
					rez=pow(x,y)
					contoption=appuifw.popup_menu([u"%f" % (rez), u"Quit"])	
					if(contoption==1):
						operation=100
						z=2
					x=rez
					if(contoption!=1):operation=appuifw.popup_menu([u"+", u"-", u"*", u"/", u"x^y", u"x^1/y", u"ln", u"log"])
				while(operation==5):
					nroption=appuifw.popup_menu([u"Type a number", u"e", u"pi"])
					if(nroption==0):y=float(appuifw.query(u"Type a number:", "text"))
					if(nroption==1):y=2.7183	
					if(nroption==2):y=3.1415926
					rez=pow(x,1/y)
					contoption=appuifw.popup_menu([u"%f" % (rez), u"Quit"])			
					if(contoption==1):
						operation=100
						z=2
					x=rez
					if(contoption!=1):operation=appuifw.popup_menu([u"+", u"-", u"*", u"/", u"x^y", u"x^1/y", u"ln", u"log"])
					c=1
				while(operation==6):
					rez=log(x)
					contoption=appuifw.popup_menu([u"%f" % (rez), u"Quit"])			
					if(contoption==1):
						operation=100
						z=2
					x=rez
					if(contoption!=1):operation=appuifw.popup_menu([u"+", u"-", u"*", u"/", u"x^y", u"x^1/y", u"ln", u"log"])
					c=1
				while(operation==7):
					nroption=appuifw.popup_menu([u"Type a number", u"e", u"pi"])
					if(nroption==0):y=float(appuifw.query(u"Type a number:", "text"))
					if(nroption==1):y=2.7183	
					if(nroption==2):y=3.1415926
					rez=lg(x,y)
					contoption=appuifw.popup_menu([u"%f" % (rez), u"Quit"])			
					if(contoption==1):
						operation=100
						z=2
					x=rez
					if(contoption!=1):operation=appuifw.popup_menu([u"+", u"-", u"*", u"/", u"x^y", u"x^1/y", u"ln", u"log"])
					c=1
				if((operation!=4) and (operation!=5) and (operation!=6) and (operation!=7) and (operation!=100)):
					nroption=appuifw.popup_menu([u"Type a number", u"e", u"pi"])
					if(nroption==0):y=float(appuifw.query(u"Type a number:", "text"))
					if(nroption==1):y=2.7183	
					if(nroption==2):y=3.1415926
				if(operation==0):
					rez=x+y
					c=0
				if(operation==1):
					rez=x-y
					c=0
				if(operation==2):
					rez=x*y
					c=0
				if(operation==3):
					rez=x/y
					c=0
				x=rez
				if((operation!=4) and (operation!=5) and (operation!=6) and (operation!=7) and (operation!=100)):
					contoption=appuifw.popup_menu([u"%f" % (rez), u"Quit"])
					if(contoption==1):z=2
	if(picked1==1):
		angletype=appuifw.popup_menu([u"Degrees", u"Radians"])
		if(angletype==0):
			trigangle=float(appuifw.query(u"Type an angle:", "text"))
			trigangle=trigangle*0.034906585/2
			trigfunction=appuifw.popup_menu([u"sin", u"cos", u"tg", u"ctg", u"sec", u"cosec"])
			if(trigfunction==0):rez=sin(trigangle)
			if(trigfunction==1):rez=cos(trigangle)
			if(trigfunction==2):rez=tan(trigangle)
			if(trigfunction==3):rez=1/tan(trigangle)
			if(trigfunction==4):rez=1/cos(trigangle)
			if(trigfunction==5):rez=1/sin(trigangle)
			appuifw.popup_menu([u"%f" % (rez)])
		if(angletype==1):
			pi=3.141592
			trigangle=appuifw.popup_menu([u"Type an angle", u"pi", u"pi/2", u"pi/3", u"pi/4", u"2pi/3", u"3pi/4", u"3pi/2", u"2pi"])
			if(trigangle==0):trigangle=float(appuifw.query(u"Type an angle:", "text"))
			if(trigangle==1):trigangle=pi
			if(trigangle==2):trigangle=pi/2
			if(trigangle==3):trigangle=pi/3
			if(trigangle==4):trigangle=pi/4
			if(trigangle==5):trigangle=2*pi/3
			if(trigangle==6):trigangle=3*pi/4
			if(trigangle==7):trigangle=3*pi/2
			if(trigangle==8):trigangle=2*pi
			trigfunction=appuifw.popup_menu([u"sin", u"cos", u"tg", u"ctg", u"sec", u"cosec"])
			if(trigfunction==0):rez=sin(trigangle)
			if(trigfunction==1):rez=cos(trigangle)
			if(trigfunction==2):rez=tan(trigangle)
			if(trigfunction==3):rez=1/tan(trigangle)
			if(trigfunction==4):rez=1/cos(trigangle)
			if(trigfunction==5):rez=1/sin(trigangle)
			appuifw.popup_menu([u"%f" % (rez)])
 
appuifw.app.exit_key_handler = quit
appuifw.app.menu=[(u"Calculator", calculator), (u"Exit", quit)]
 
app_lock = e32.Ao_lock()   
app_lock.wait()
		        
#Operations is for doing classic mathematical calculations
#Basic is for simple operations while Scientific provides more complex functions
#Trigonometry is for calculating functions like sin, cos, tg etc.
Related Discussions
Thread Thread Starter Forum Replies Last Post
problem in files downloading in mobile application KrishnaMegha Browsing and Mark-ups 1 2007-04-10 21:14
Simple switch interface to send SMS needed david_m_godfrey Nokia M2M 1 2003-06-15 22:38
beginner tomereg Bluetooth Technology 0 2004-03-08 11:18
want to create a simple GIS for Nokia 6600 shydisturbedboy Mobile Java General 13 2006-12-02 01:12
3rd dilemma, assistance required please. neil.young Python 3 2007-12-19 20:44
 
Powered by MediaWiki