






UpperCamelCase__	=     {
    'kilogram': 1,
    'gram': pow(10, 3),
    'milligram': pow(10, 6),
    'metric-ton': pow(10, -3),
    'long-ton': 0.00_09_84_20_73,
    'short-ton': 0.00_11_02_31_22,
    'pound': 2.20_46_24_42_02,
    'stone': 0.15_74_73_17_28,
    'ounce': 35.2_73_99_07_23,
    'carrat': 5000,
    'atomic-mass-unit': 6.022136652e26,
}

UpperCamelCase__	=     {
    'kilogram': 1,
    'gram': pow(10, -3),
    'milligram': pow(10, -6),
    'metric-ton': pow(10, 3),
    'long-ton': 1016.04608,
    'short-ton': 907.184,
    'pound': 0.45_35_92,
    'stone': 6.3_50_29,
    'ounce': 0.0_28_34_95,
    'carrat': 0.00_02,
    'atomic-mass-unit': 1.660540199e-27,
}




def 						__SCREAMING_SNAKE_CASE   (					_UpperCamelCase  ,						_UpperCamelCase  ,						_UpperCamelCase							):


   """simple docstring"""




   if to_type not in KILOGRAM_CHART or from_type not in WEIGHT_TYPE_CHART:
      lowercase_		:      Optional[int]          =       (
          F"""Invalid 'from_type' or 'to_type' value: {from_type!r}, {to_type!r}\n"""
          F"""Supported values are: {", ".join(_UpperCamelCase							)}"""
      )
      raise ValueError(_UpperCamelCase							)
   return value * KILOGRAM_CHART[to_type] * WEIGHT_TYPE_CHART[from_type]


if __name__ == "__main__":
 import doctest

 doctest.testmod()












'''simple docstring'''
UpperCamelCase__	=     (1, 153, 370, 371, 1634, 24678051, 115132219018763992565095597973971522401)
UpperCamelCase__	=     (-153, -1, 0, 1.2, 200, "A", [], {}, None)




def 						__SCREAMING_SNAKE_CASE   (					_UpperCamelCase							):


   """simple docstring"""




   if not isinstance(_UpperCamelCase  ,						_UpperCamelCase							) or n < 1:
      return False

   # Initialization of sum and number of digits.
   lowercase_		:      Optional[int]          =       0
   lowercase_		:      Any          =       0
   lowercase_		:      Optional[Any]          =       n
   # Calculation of digits of the number
   while temp > 0:
      number_of_digits += 1
      temp //= 10
   # Dividing number into separate digits and find Armstrong number
   lowercase_		:      int          =       n
   while temp > 0:
      lowercase_		:      Any          =       temp % 10
      total += rem**number_of_digits
      temp //= 10
   return n == total




def 						__SCREAMING_SNAKE_CASE   (					_UpperCamelCase							):


   """simple docstring"""




   if not isinstance(_UpperCamelCase  ,						_UpperCamelCase							) or n < 1:
      return False

   # Init a "histogram" of the digits
   lowercase_		:      Optional[Any]          =       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
   lowercase_		:      Tuple          =       0
   lowercase_		:      Any          =       0
   lowercase_		:      Tuple          =       n
   while temp > 0:
      lowercase_      ,						lowercase_		:      Optional[Any]          =       divmod(_UpperCamelCase  ,						10							)
      digit_histogram[rem] += 1
      digit_total += 1

   for cnt, i in zip(_UpperCamelCase  ,						range(len(_UpperCamelCase							)							)							):
      total += cnt * i**digit_total

   return n == total




def 						__SCREAMING_SNAKE_CASE   (					_UpperCamelCase							):


   """simple docstring"""




   if not isinstance(_UpperCamelCase  ,						_UpperCamelCase							) or n < 1:
      return False
   lowercase_		:      List[str]          =       len(str(_UpperCamelCase							)							)  # the power that all digits will be raised to
   # check if sum of each digit multiplied expo times is equal to number
   return n == sum(int(_UpperCamelCase							) ** expo for i in str(_UpperCamelCase							)							)




def 						__SCREAMING_SNAKE_CASE   (					):


   """simple docstring"""




   lowercase_		:      Dict          =       int(input("Enter an integer to see if it is an Armstrong number: "							).strip()							)
   print(F"""{num} is {"" if armstrong_number(_UpperCamelCase							) else "not "}an Armstrong number."""							)
   print(F"""{num} is {"" if narcissistic_number(_UpperCamelCase							) else "not "}an Armstrong number."""							)
   print(F"""{num} is {"" if pluperfect_number(_UpperCamelCase							) else "not "}an Armstrong number."""							)


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 main()




