Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Integer:
- def __init__(self, value):
- self.value = value
- @classmethod
- def from_float(cls, float_value):
- try:
- return cls(int(float_value))
- except ValueError:
- return "value is not a float"
- @classmethod
- def from_roman(cls, value):
- return cls(cls.roman_numeral_to_decimal(value))
- @classmethod
- def from_string(cls, value):
- if not isinstance(value, str):
- return 'wrong type'
- try:
- return cls(int(value))
- except ValueError:
- return 'wrong type'
- @staticmethod
- def roman_numeral_to_decimal(roman_numeral):
- tallies = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
- number = 0
- for i in range(len(roman_numeral) - 1):
- left = roman_numeral[i]
- right = roman_numeral[i + 1]
- if tallies[left] < tallies[right]:
- number -= tallies[left]
- else:
- number += tallies[left]
- number += tallies[roman_numeral[-1]]
- return number
Advertisement
Add Comment
Please, Sign In to add comment