如何找到表示为字符串和部分分数(如“1 1/2 2”)的两个数字的中点?

2024-03-29 09:59:23 发布

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

l=['1 1/2-2', '1 - 1 1/2', '1 1/4 - 2', '1 1/4 - 2', '1 - 11/2', '3 - 5', '1 1/4-2']

如何找到列表中每个范围的中点?例如,第一个“1 1/2-2”应该是1.75


Tags: 列表
1条回答
网友
1楼 · 发布于 2024-03-29 09:59:23

让我们把它分成几个部分。对于列表中的每一项,我们必须将其分解为整数和小数部分,然后将两者转换为小数

不幸的是,fractions模块中的混合数支持在python3中被弃用,因此我们必须构建自己的

from fractions import Fraction

def mixed_to_float(s):
    return sum(map(lambda i : float(Fraction(i)), s.split(' ')))

list = ['1 1/2 - 2', '1 - 1 1/2', '1 1/4 - 2', '1 1/4 - 2', '1 - 11/2', '3 - 5', '1 1/4 - 2']
for item in list:
    parts = map(lambda i : mixed_to_float(i), item.split(" - "))
    print (sum(parts)/2)

相关问题 更多 >