-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLog Calculator.py
More file actions
110 lines (101 loc) · 2.54 KB
/
Copy pathLog Calculator.py
File metadata and controls
110 lines (101 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# coding: utf-8
import math
import ui
import clipboard
import decimal
from console import hud_alert
shows_result = False
def num(s):
try:
return int(s)
except ValueError:
return decimal.Decimal(s)
def button_tapped(sender):
'@type sender: ui.Button'
t = sender.title
global shows_result
labelmain = sender.superview['labelmain']
labelbase = sender.superview['labelbase']
segment = sender.superview['segmentedcontrol']
if segment.selected_index == 0:
if t in '0123456789':
if shows_result or labelmain.text == '0':
labelmain.text = t
shows_result = False
else:
labelmain.text += t
elif t == '.' and '.' not in labelmain.text:
labelmain.text += t
elif t == 'AC':
labelmain.text = '0'
elif t == 'C':
labelmain.text = labelmain.text[:-1]
if len(labelmain.text) < 1:
labelmain.text = '0'
elif t == 'e':
labelmain.text = str(math.e)
elif t == '+/-':
if '-' in labelmain.text:
labelmain.text = labelmain.text[1:]
else:
labelmain.text = '-' + labelmain.text
elif t == '=':
try:
result = str(math.log(num(labelmain.text), num(labelbase.text)))
labelmain.text = result
except ValueError:
try:
result = str(math.log(num(labelmain.text), 10))
labelmain.text = result
except Exception as error:
labelmain.text = str(error)
print error
shows_result = True
elif t != '=':
shows_result = False
else:
if t in '0123456789':
if labelbase.text == '0':
labelbase.text = t
else:
labelbase.text += t
elif t == '.' and '.' not in labelbase.text:
labelbase.text += t
elif t == 'AC':
labelbase.text = '0'
elif t == 'C':
labelbase.text = labelbase.text[:-1]
if len(labelbase.text) < 1:
labelbase.text = '0'
elif t == 'e':
labelbase.text = str(math.e)
elif t == '+/-':
if '-' in labelbase.text:
labelbase.text = labelbase.text[1:]
else:
labelbase.text = '-' + labelbase.text
elif t == '=':
try:
result = str(math.log(num(labelmain.text), num(labelbase.text)))
labelmain.text = result
except ValueError:
try:
result = str(math.log(num(labelmain.text), 10))
labelmain.text = result
except Exception as error:
labelmain.text = str(error)
print error
shows_result = True
elif t != '=':
shows_result = False
def copy_action(sender):
'@type sender: ui.Button'
clipboard.set(sender.superview['labelmain'].text)
hud_alert('Copied')
v = ui.load_view('Log Calculator')
if ui.get_screen_size()[1] >= 768:
# iPad
v.present('sheet')
else:
# iPhone
v.present(orientations=['portrait'])