Categories: S60 | Python | Code Examples
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 |
