剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第十一层功法的修炼,
这次要修炼的目标是[分数乘法]。
正剧开始:
星历2016年02月16日 10:58:10, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起继续研究分数的运算。
这次的修炼是练气期第十一层的功法了,当[工程师阿伟]小时候,那时练气期只要修练到第十层就圆满了,就能进入到筑基期。
但是现在却不行了,要修满十二层才可以。时过境迁,这修仙界的规矩也在不断地改变着。
[机器小伟]从[人叫板老师]那里取得了第十一层功法:
下面就可以进行修炼了。
<span style="font-size:18px;">2/9*3 = 2/3
###
# @usage 分数运算
# @author mw
# @date 2016年01月15日 星期五 09:04:31
# @param
# @return
#
###
def fractionCalc():
# 可以将任意的四则运算表达式用分数进行计算,
# 而不是将浮点结果简单转化成分数。
fin = open('input.txt');
fout= open('output.txt', 'a');
for line in fin.readlines():
if line[-1] == '\n':
line = line[:-1];
if line == '':
continue;
elif line.startswith('#'):
print(line);
fout.write(line+'\n');
else:
try:
lines = line.split(sep=' ');
for i in range(len(lines)):
if lines[i]=='':
continue;
#消除空格
lines[i] = lines[i].replace(' ', '');
expCount = len(lines[i]);
expression = '';
#分割操作数
operands = [];
stmp = '';
indexBeg = 0;
indexEnd = 0;
for j in range(expCount):
if isOps(lines[i][j]):
if stmp != '':
operands.append(stmp);
stmp = '';
else:
stmp+=lines[i][j];
if stmp != '':
operands.append(stmp);
print(operands);
#操作数修饰
operandCount = len(operands);
operandString = [];
#数字如1/7要转化成Fraction('1/7')这种样式才可以算出正确结果,引号不可以少掉。
for j in range(operandCount):
stmp = '';
stmp = 'Fraction(\''+operands[j]+'\')';
operandString.append(stmp);
#组装新表达式
typechange = 1;
index = 0;
expression = '';
for j in range(expCount):
#操作符直接添加
if isOps(lines[i][j]):
expression+=lines[i][j];
else:
if j > 0 and typechange == 0 and isOps(lines[i][j-1]):
typechange = 1;
#从操作数序列中选择对应操作数。
if typechange == 1:
if index > len(operandString):
break;
expression += operandString[index];
index+=1;
typechange = 0;
#表达式结果的运算打印
s = '{0} = {1}'.format(lines[i],eval(expression));
print(s, end=', ');
fout.write(s + ', ');
print('\n');
fout.write('\n');
except:
#traceback.print_exc();
ex = '{0} 表达式有误,无法进行计算。'.format(lines[i]);
print(ex);
fout.write(ex);
fout.write('\n');
fout.close();
fin.close();
def isOps(c):
if c == '+' or c == '-' or c == '/' or c == '*' or c == '(' or c ==')':
return 1;
else:
return 0;</span>
<span style="font-size:18px;">12*1/2 = 6,
12*1/4 = 3, </span>
[人叫板老师]对分数还是很看重的,有好几节功法都是和分数有关的。但对于[机器小伟]来说,题目里面的科普作用才是小伟最看重的。
这李叔叔已经游得很快了,不过还是只有乌贼的十分之一都不到,果然叫了贼,不负这个名字。
<span style="font-size:18px;">9/10*4/45 = 2/25,
9/10*30 = 27, </span>
<span style="font-size:18px;">3/10*2/3 = 1/5,
3/10*5 = 3/2,
28*2/35 = 8/5, </span>
<span style="font-size:18px;">2500*53/125 = 1060,
2000*1/4 = 500,
26*7/13 = 14,
40*11/20 = 22, </span>
<span style="font-size:18px;">80*4/5 = 64,
9200*2/5*4/5 = 2944,
30*3/20-5 = -1/2, </span>
看来王明的书包超重了。
<span style="font-size:18px;">1.38*1/6 = 23/100,
2.5*12/25 = 6/5,
2.5*4/5 = 2, </span>
<span style="font-size:18px;">75*(1+4/5) = 135, </span>
婴儿每分钟心跳竟然有这么多次。
<span style="font-size:18px;">50*2/5*1/40 = 1/2,
40*3/4*2/3 = 20,
32*5/8*3/4 = 15, </span>
<span style="font-size:18px;">236*(1-109/118) = 18,
21*(1+1/3) = 28,
16*(1-1/4) = 12,
430*(1-36/43) = 70, </span>
<span style="font-size:18px;">225*1/5 = 45,
225*(1+1/5) = 270, </span>
本节到此结束,欲知后事如何,请看下回分解。