我正在用Python3编写。我在代码中创建了两个列表,我想将它们作为分数“循环”连接。除了使用分数库外,还有其他可能的方法吗?很遗憾,我无法使用它,因为这是任务要求。当分数是浮点数(例如1/3)时,就会出现问题。我怎么解决这个问题?
这里是一个例子:
p = [1,2,3]
q = [3,5,9]
frac = []
for i in p:
for j in q:
f = p/q
if f not in frac:
frac.append(f)
(0.33).as_integer_ratio()
可以解决您的问题。显然0.33
将被任何浮点数代替。
def float_to_ratio(flt):
if int(flt) == flt:
return int(flt), 1
flt_str = str(flt)
flt_split = flt_str.split('.')
numerator = int(''.join(flt_split))
denominator = 10 ** len(flt_split[1])
return numerator, denominator
这也是解决方案。
您可以使用fractions.Fraction类型。