

_lowerCamelCase							:  Optional[int]     =				(1, 1_5_3, 3_7_0, 3_7_1, 1_6_3_4, 2_4_6_7_8_0_5_1, 1_1_5_1_3_2_2_1_9_0_1_8_7_6_3_9_9_2_5_6_5_0_9_5_5_9_7_9_7_3_9_7_1_5_2_2_4_0_1)
_lowerCamelCase							:  tuple     =				(-1_5_3, -1, 0, 1.2, 2_0_0, "A", [], {}, None)

def      a__	(						UpperCAmelCase				:     List[str]     )    ->		bool:
  if not isinstance(_UpperCAmelCase							,					_UpperCAmelCase     ) or n < 1:
    return False

  # Initialization of sum and number of digits.
  UpperCAmelCase			:				Optional[Any]										=					0
  UpperCAmelCase			:				int										=					0
  UpperCAmelCase			:				List[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
  UpperCAmelCase			:				List[Any]										=					n
  while temp > 0:
    UpperCAmelCase			:				Optional[int]										=					temp % 10
    total += rem**number_of_digits
    temp //= 10
  return n == total

def      a__	(						UpperCAmelCase				:     List[str]     )    ->		bool:
  if not isinstance(_UpperCAmelCase							,					_UpperCAmelCase     ) or n < 1:
    return False

  # Init a "histogram" of the digits
  UpperCAmelCase			:				int										=					[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  UpperCAmelCase			:				Optional[int]										=					0
  UpperCAmelCase			:				List[str]										=					0
  UpperCAmelCase			:				List[Any]										=					n
  while temp > 0:
    UpperCAmelCase					,		UpperCAmelCase			:				List[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      a__	(						UpperCAmelCase				:     Optional[Any]     )    ->		bool:
  if not isinstance(_UpperCAmelCase							,					_UpperCAmelCase     ) or n < 1:
    return False
  UpperCAmelCase			:				Dict										=					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      a__	(						)    ->		Optional[int]:
  UpperCAmelCase			:				Optional[int]										=					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()












def   _lowercase       (    _UpperCAmelCase					)    ->	bool:
				if not isinstance(_UpperCAmelCase      ,   _UpperCAmelCase					):
								lowerCamelCase									=F"""Input value of [number={number}] must be an integer"""
								raise TypeError(_UpperCAmelCase					)
				if number < 0 or number % 2 == 1:
								return False
				lowerCamelCase									=int(number**0.5					)
				return number == number_sqrt * (number_sqrt + 1)


if __name__ == "__main__":
							import doctest

							doctest.testmod()





