def force_type(x, *types):
    """
    Try converting `x` into a series of types, with no check on the
    conversion validity.

    Examples
    --------
    >>> force_type(3.5, int, float)
    ... # Results in an int, because int(x) accepts float and truncates.
    3
    >>> force_type("3.5+4j", float, complex)
    (3.5+4j)
    >>> force_type(3.5+4j, int, float, str)
    '(3.5+4j)'

    Parameters
    ----------
    x :
        Argument to be converted.
    types : list_like
        Target types to use when trying conversion.

    Returns
    -------
    x_converted :
        `x` converted to the first successful type, if possible.

    Raises
    ------
    ValueError
        If no conversion was possible.
    """
    for this_type in types:
        try:
            return this_type(x)
        except (TypeError, ValueError):
            pass
    raise ValueError(f"Couldn't force {repr(x)} to "
                     f"{' or '.join(str(t) for t in types)}.")