因此,我必须创建一个python脚本,其中给定2个分数,一个操作数将打印操作结果。解决这个问题的方法是,首先请求一个分数并将其保存到变量中,然后请求另一个分数,最后请求操作数。但是出于好奇,我试着从不同的角度来看待这个问题。 我的想法是要求进行完整运算并将输入字符串保存到一个变量中,然后使用函数exec()我可以得到给定运算的十进制结果,最后处理小数我的想法是将10乘以小数位数的幂,然后再除以10乘以相同的幂,这样我就可以得到一个分数。所以我继续编写代码并设法编程,我唯一的问题是小数位数是有限的,所以通常我的脚本返回的结果是一个非常大的分数,非常接近真实分数。所以我想知道是否有解决办法。以下是我的代码和一个示例,供进一步解释:
op = input('Enter operation: ')
try:
exec('a = ' + op)
except:
print('Invalid operation')
def euclides(a, b):
while a != 0 and b != 0:
if a < b: b = b%a
else: a = a%b
if a == 0: return b
elif b == 0: return a
print(f'{int(a*10**len(str(a).split(".")[1])/euclides(a*10**len(str(a).split(".")[1]),10**len(str(a).split(".")[1])))}/{int(10**len(str(a).split(".")[1])/euclides(a*10**len(str(a).split(".")[1]),10**len(str(a).split(".")[1])))}')
例如:
提前谢谢你的帮助
可以将所有自然数转换为
Fraction
并计算:也适用于其他情况(与公认答案的解决方案不同,后者只对两个分数的求和,这两个分数必须为正,且不得有空格),例如:
检查:
对于您可以使用的标准模块或附加模块,您有什么限制?如果不考虑您没有指定的约束,有更好的方法来完成您正在做的事情。您的问题似乎可以用“我的脚本返回的结果是非常大的一部分”来概括,而您的问题似乎是“我想知道是否有任何解决方法?”。有许多“变通办法”。但是,很难猜测什么是最好的解决方案,因为你没有告诉我们你可以使用什么工具来完成任务,也不能使用什么工具来完成任务
例如,如果您可以使用正则表达式和
fractions
模块,并且假设输入将始终采用非常严格的<int>/<int>+<int>/<int>
格式,那么这里有一个优雅的解决方案:结果:
这回答了你当前的问题。然而,我不知道这是否违反了你的任务条款
相关问题 更多 >
编程相关推荐