Как мне найти середину двух чисел, которые представлены в виде строки и частичной дроби, например. '1 1/2 - 2'? - PullRequest
0 голосов
/ 20 октября 2019

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

1 Ответ

0 голосов
/ 20 октября 2019

Давайте разберем это на несколько частей. Для каждого элемента в списке нам нужно разбить его на целочисленный и дробный компонент, а затем мы должны преобразовать оба в десятичные числа.

К сожалению, поддержка смешанных чисел в модуле fractions устарела в Python 3, поэтому нам придется создавать нашу собственную.

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)
...