如何在Python中将分数作为输入,并使用分数';算术的价值是多少?

如何在Python中将分数作为输入,并使用分数';算术的价值是多少?,python,Python,下面是我用来说明我的问题的示例代码。如果输入是整数或小数,则按预期工作。但是,如果输入是一个分数,例如4/5,它会抛出一个ValueError,因为4/5是一个无法转换为浮点的字符串 myinput=input("Enter number. ") doubleofmyinput=float(myinput)*2 print(doubleofmyinput) 当不使用input()时,这不是问题,因为float(4/5)有效,而float(“4/5”)无效,而float(“4

下面是我用来说明我的问题的示例代码。如果输入是整数或小数,则按预期工作。但是,如果输入是一个分数,例如4/5,它会抛出一个ValueError,因为4/5是一个无法转换为浮点的字符串

myinput=input("Enter number. ")
doubleofmyinput=float(myinput)*2
print(doubleofmyinput)

当不使用
input()
时,这不是问题,因为float(4/5)有效,而float(“4/5”)无效,而float(“4.5”)和float(4.5)都有效。谢谢。

在接受意见方面,你希望有多慷慨

如果只是普通分数(或混合分数),您可以使用一种特殊情况,即使用
.split('/')
或正则表达式将输入字符串分解为其组成部分,分别转换每个部分,然后将它们组合成
float
、a或a(取决于您需要或能够容忍哪种舍入行为)

如果您想更普遍地接受任意表达式,可能最好找一个库来实现这一点;谷歌建议,但可能还有其他库。

使用,您可以执行以下操作:

import fractions

myinput = input("Enter number. ")
try:
    if not myinput.isnumeric():
        myinput = fractions.Fraction(myinput)
except ValueError:
    throw ValueError(myinput + " is not a number")

doubleofmyinput=float(myinput)*2
print(doubleofmyinput)

如果您只想将值作为分数输入,而不将其显示为分数,那么我建议使用eval

myinput=float(eval(input("Enter number. ")))
doubleofmyinput= myinput *2  
print(doubleofmyinput)

如果要将输入值转换为适当的数据类型,可以使用eval

sigma = eval(input("Enter the value of sigma: "))
print(sigma)

谢谢:)

不,
float(“4/5”)
不起作用!是什么让你觉得可能的???大多数时候,人们只使用浮点变量,十进制或十进制。如果您愿意,无论出于何种原因,您都可以通过将两个整数参数传递到函数中来指定“分数”:例如,
myfunction(分子、分母)
这是否回答了您的问题@paulsm4好吧,
float(4/5)
确实有效,但那是因为
4/5
不是一个“分数”,它是一个计算为float的表达式。所以,一般来说,你必须解析你的输入,不管你期望什么。然而,我要注意的是,
fracts.fracts
将处理您的输入并与其他python数字工具一起工作types@paulsm4我只是指出OP说“因为浮动(4/5)有效,而浮动(“4/5”)无效”,他们没有说
float(“4/5”)
有效…接受使用Unicode的粗俗/混合分数留给读者作为练习:-)