Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import fractions
- import decimal
- import collections
- import typing
- MinMax = collections.namedtuple('MinMax', ['max_value', 'min_value'])
- def get_max_and_min(data: typing.Set[typing.Union[decimal.Decimal, fractions.Fraction, str, int, float]]) -> typing.NamedTuple:
- numbers = []
- for num in data:
- if isinstance(num, str):
- if '\\' in num or '/' in num:
- num = num.replace('\\', '/').replace(' ', '')
- numbers.append(fractions.Fraction(num))
- else:
- numbers.append(decimal.Decimal(num))
- elif type(num) in (int, float, decimal.Decimal, fractions.Fraction):
- numbers.append(num)
- else:
- print('-' * 20)
- print(f'Not a number: {num}')
- print('-' * 20)
- return MinMax(max_value=max(numbers), min_value=min(numbers))
- result = get_max_and_min({
- '1.1',
- 5,
- 5.1,
- decimal.Decimal('3.1'),
- fractions.Fraction('3/5'),
- '3 / 2',
- r'3 \ 3',
- r'4\2',
- '6/2',
- })
- print(f'MAX: {result.max_value}')
- print(f'MIN: {result.min_value}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement