我有一个名为getShape
的变量,其值确定为:b
。在文件的后面,我想获取b = float(input("What is your y-intercept?"))
的值(假设它是一个浮点数)并将其转换为这样的分数:b
。我知道类似print(Fraction(b))
的东西会打印print(Fraction(0.45))
,但是8106479329266893/18014398509481984
会打印print(Fraction('0.45'))
。如何使用变量获得相同的结果?进行9/20
会给我这个错误:print(Fraction('b'))
。
代码:
ValueError: Invalid literal for Fraction: 'b'
答案 0 :(得分:0)
Fraction(str(b))
这是将变量的 value (而不是其* name)转换为字符串的方式。
答案 1 :(得分:0)
如@Prune所述,您必须将变量的值转换为字符串,一种替代方法是使用f-string:
from fractions import Fraction
b = 0.45
print(Fraction(f'{b}'))
建议的文档解决方案是使用limit_denominator:
b = 0.45
print(Fraction(b).limit_denominator())
输出
9/20
有关浮点的更多信息,请参见this。
答案 2 :(得分:0)
print(Fraction('b'))
不起作用的原因是因为您要python从字符'b'中创建一个分数。您需要做的是获取b的字符串表示形式,即str(b),所以Fraction(str(b))
答案 3 :(得分:-1)
为什么要使用float变量?最好使用int()函数简单地回答。创建一个整数,而不是添加一个小数。