清华大学 分数计算器

本文介绍如何编写一个Python程序,该程序读取包含数学算式的文本文件,计算并以最简分数形式输出结果。程序支持正整数和分数的加减乘除运算,包括单个算式和多个算式的计算。程序还允许将结果输出到命令行或指定文件。遵循Python标准库,无需第三方库,且结果必须是最简分数形式。

编写一个python程序(假设python文件名为exam01.py),程序接收一个参数,该参数为一个文件名。使用命令python exam01.py test.txt执行命令。该程序需满足以下要求:
(1)如果该文件不存在,则输出错误信息并结束程序。(5分)
(2)如果文件存在,该文件包括若干行文本,其中每一行是一个数学算式,算式中只包括正整数以及四则运算符号(±/),程序计算该行算式,以最简分数形式输出结果,输出到命令行,每行一个。根据支持的算式格式评分。具体要求如下:
(2.1)支持格式如“a+b”或“a-b”的数学算式计算,其中a和b的格式分别为一个正整数或者一个分数(即以“/”分隔的两个正整数)。例如:“3/5+1/2”、“12/7-3/15”、“123+23/6”。(10分)
(2.2)支持格式如“a±b±c±……±g”的数学算式计算,其中a,b,…,g的格式也为一个正整数或者一个分数。例如:“1+2/5-3/12+123/456+76+12/34”.(10分)
(2.3)【加分项】支持任意合法格式的数学算式计算(只包括正整数和四则运算,不含括号)。例如:“1
2/3+4-5/6+7*8-9/10”。(10分)(建议:没有把握的同学建议先做后面的题目。)
(3)该程序也可以接收两个参数,第一个参数作用不变,第二个参数传入另外一个文件名:如果传入一个参数,则程序结果输出到命令行;如果传入两个参数,则程序结果输出到第二个参数的文件中。(5分)

【注意问题】
(a)只能使用Python自带的标准库,不允许使用第三方库。
(b)最后结果输出为最简分数形式(分子分母不可约分,假分数不要化为带分数)。如果结果可以化简为整数,则直接输出为整数。
(c)不需要考虑输入文件格式不合法的情况。
(d)只编写一个.py文件解决上述所有要求。

【样例】
(2.1输入样例)
9/15+1/

# ContinuedFraction #### 项目介绍 连分数计算器 支持连分数和小数输入,高精度小数转连分数,无精度损失,用于获取小数在一定范围内最接近的分数 例如π的高精度转连分数 str=> 3.14159265358979 num=> 3.14159265358979000000000000000000000 ctf=> [3;7,15,1,292,1,1,1,2,1,3,1,12,2,4,1,1,3,2,2,1,18,1,2,2,1,7,2,2] 1=> 3.00000000000000000000000000000000000 3 3/1 2=> 3.14285714285714285714285714285714286 7 22/7 3=> 3.14150943396226415094339622641509434 15 333/106 4=> 3.14159292035398230088495575221238938 1 355/113 5=> 3.14159265301190260407226149477372968 292 103993/33102 6=> 3.14159265392142104470871594159265392 1 104348/33215 7=> 3.14159265346743670552045478534915632 1 208341/66317 8=> 3.14159265361893662339750030141060162 1 312689/99532 9=> 3.14159265358107777120441930658185778 2 833719/265381 10=> 3.14159265359140397848254241421927966 1 1146408/364913 11=> 3.14159265358938917154368732170690821 3 4272943/1360120 12=> 3.14159265358981538324194377730744861 1 5419351/1725033 13=> 3.14159265358978910556761228975786423 12 69305155/22060516 14=> 3.14159265358979009430798477470203822 2 144029661/45846065 15=> 3.14159265358978998813773682909318658 4 645423799/205444776 16=> 3.14159265358979000750767514045607416 1 789453460/251290841 17=> 3.14159265358978999879486079142367388 1 1434877259/456735617 18=> 3.14159265358979000014512509093352444 3 5094085237/1621497692 19=> 3.14159265358978999997843356720301190 2 11623047733/3699731001 20=> 3.14159265358979000000839600248412328 2 28340180703/9020959694 21=> 3.14159265358978999999968162106153623 1 39963228436/12720690695 22=> 3.14159265358979000000001193310441815 18 747678292551/237993392204 23=> 3.14159265358978999999999517378526962 1 787641520987/250714082899 24=> 3.14159265358979000000000056801156993 2 2322961334525/739421558002 25=> 3.14159265358978999999999978607241192 2 5433564190037/1729557198903 26=> 3.14159265358979000000000002025128805 1 7756525524562/2468978756905 27=> 3.14159265358978999999999999894805542 7 59729242861971/19012408497238 28=> 3.14159265358979000000000000024695141 2 127215011248504/40493795751381 29=> 3.14159265358979000000000000000000000 2 314159265358979/100000000000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值