如何将传递给tup的分数相乘

2024-09-30 06:18:03 发布

您现在位置:Python中文网/ 问答频道 /正文

def mult(num):
    #num='(1,2)(3,4)'
    numn=int(num[1])
    denom=int(num[3])
    numn1=int(num[6])
    denom1=int(num[8])
    numnetor=numn*numn1
    denominetor=denom * denom1
    ans=str(numnetor)+'/'+ str(denominetor)
    return ans
askUser=input("Enter Fraction:")
print(mult(askUser))

我试图这样做,但当我输入两位数的数字时,它崩溃了,我能做什么?在


Tags: inputreturndefnumintstransmult
2条回答

Python已经在标准库中支持分数。 如果分数是字符串形式:

from fractions import Fraction
f = Fraction(askUser)

如果分数是元组形式:

^{pr2}$

得到的Fraction对象可以在标准算术中使用,就像它们是数字一样。在

我对您是否真的需要处理复合元组的字符串表示怀疑,您正在寻找的解决方案是raw_input(而不是{})和{}(这正是input所做的)。在

现在,当两个元组分别被理解时,程序现在可以处理两位数以上的数字。在

import ast

def mult(num):
    sep_indx = num.find(')(')
    assert sep_indx > -1

    tuple1, tuple2 = num[:sep_indx+1], num[sep_indx+1:]
    tuple1 = ast.literal_eval(tuple1)
    tuple2 = ast.literal_eval(tuple2)

    numn=int(tuple1[0])
    denom=int(tuple1[1])
    numn1=int(tuple2[0])
    denom1=int(tuple2[1])
    numnetor=numn*numn1
    denominetor=denom * denom1
    ans=str(numnetor)+'/'+ str(denominetor)
    return ans

askUser=raw_input("Enter Fraction:")
print(mult(askUser))

#Enter Fraction:(1,20)(3,40)
#3/800

请注意,您的程序仍然存在被零除错误、多余空格和用户输入的任何非整数的问题。我把这些留给你。在

相关问题 更多 >

    热门问题