Давайте разберем это на несколько частей. Для каждого элемента в списке нам нужно разбить его на целочисленный и дробный компонент, а затем мы должны преобразовать оба в десятичные числа.
К сожалению, поддержка смешанных чисел в модуле 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)