class
Operator(
object
):
def
__init__(
self
, NumberA
=
0
, NumberB
=
0
):
super
(Operator,
self
).__init__()
self
.NumberA
=
NumberA
self
.NumberB
=
NumberB
def
GetResult(
self
):
pass
class
AddOp(Operator):
def
GetResult(
self
):
return
int
(
float
(
self
.NumberA)
+
float
(
self
.NumberB))
class
MinusOp(Operator):
def
GetResult(
self
):
return
int
(
float
(
self
.NumberA)
-
float
(
self
.NumberB))
class
MultiOp(Operator):
def
GetResult(
self
):
return
int
(
float
(
self
.NumberA)
*
float
(
self
.NumberB))
class
pideOp(Operator):
def
GetResult(
self
):
try
:
return
float
(
float
(
self
.NumberA)
/
float
(
self
.NumberB)
*
1.0
)
except
ZeropisionError as e:
print
(
"pideOp error, {0}"
.
format
(e))
class
OperatorFactory(
object
):
def
ChooseOperator(
self
, op):
if
op
=
=
'+'
:
return
AddOp()
if
op
=
=
'-'
:
return
MinusOp()
if
op
=
=
'*'
:
return
MultiOp()
if
op
=
=
'/'
:
return
pideOp()
if
__name__
=
=
'__main__'
:
ch
=
''
while
not
ch
=
=
'q'
:
NumberA
=
input
(
'Please input NumberA: '
)
op
=
input
(
'Please input operator: '
)
NumberB
=
input
(
'Please input NumberB: '
)
factory
=
OperatorFactory()
opType
=
factory.ChooseOperator(op)
opType.NumberA
=
NumberA
opType.NumberB
=
NumberB
print
(
'The result is: {0}'
.
format
(opType.GetResult()))
print
(
'\n#-- input q to exit any key to continue'
)
try
:
ch
=
str
(
input
())
except
Exception as e:
print
(
'Get input error: {0}'
.
format
(e))
print
(
'Use default value to ch'
)
ch
=
''