代碼如下:
#encoding=utf-8
print '中國'
#用Python實作加法器
import decimal, re, operator
parse_input = re.compile(r'''(?x) # 允許RE中的注釋和空白符
(\d+\.?\d*) # 帶有可選的小數部分的數
\s* # 可選的空白符
([-+/*]) # 運算符
$''') # 字元串結束
oper = { '+': operator.add, '-': operator.sub,
'*': operator.mul, '/': operator.truediv,
}
total = decimal.Decimal('0')
def print_total( ):
print '======= =\n', total
print """Welcome to Adding Machine:
Enter a number and operator,
an empty line to see the current subtotal,
or q to quit: """
while True:
try:
tape_line = raw_input( ).strip( )
except EOFError:
tape_line = 'q'
if not tape_line:
print_total( )
continue
elif tape_line == 'q':
print_total( )
break
try:
num_text, op = parse_input.match(tape_line).groups( )
except AttributeError:
print 'Invalid entry: %r' % tape_line
print 'Enter number and operator,empty line for total, q to quit'
continue
total = oper[op](total, decimal.Decimal(num_text))
感覺不能用,列印結果如下:
中國 Welcome to Adding Machine: Enter a number and operator, an empty line to see the current subtotal, or q to quit: 1.2-2.3 Invalid entry: '1.2-2.3' Enter number and operator,empty line for total, q to quit