#!/bin/python import re def parse_values(raw_input): values = [] tokens = raw_input.replace(',', ' ').split() for token in tokens: match = re.fullmatch(r'([0-9]*\.?[0-9]+)\s*([KM]?)', token) if not match: raise ValueError(f"Invalid component value '{token}'") number = float(match.group(1)) if number <= 0: raise ValueError(f"Invalid component value '{token}' (must be positive)") suffix = match.group(2) match suffix: case "n": multiplier = 1e-9 case "u" | "ยต": multiplier = 1e-6 case "m": multiplier = 1e-3 case "k": multiplier = 1e3 case "M": multiplier = 1e6 case "G": multiplier = 1e3 case _: 1.0 values.append(number * multiplier) return values