Выход не является ошибочным. 5556.4 % 2
не равен нулю, таким образом, вы получаете в else
случае:
>>> 5556.4 % 2
0.3999999999996362
Это ваше предположение, что любое число, которое даже не должно быть нечетным, что это неправильно. Фактически, такие категории, как «четный» и «нечетный», не имеют столь большого смысла для десятичных чисел. Из Wikipedia (курсив)
Четность представляет собой математический термин, который описывает свойство включения целого «с в одной из двух категорий: четным или нечетным. [...] Формальное определение четного числа является то, что оно является целым числом вида п = 2k, гдек является целым числом .
Вместо этого, вы можете, например, изменить способ что-то вроде этого:
def eoo(a):
if a % 2 == 0:
print("Entered value is even")
elif a % 2 == 1:
print("Entered value is odd")
else:
print("Entered value is neither even nor odd")
Или, если вы заинтересованы только в целой части числа, используйте int(a) % 2
или round(a) % 2
проверить число, округленное до ближайшего целого, четное или нечетное.
Что вы ожидали от '% 2'? – melpomene
Проверьте значение '5556.4% 2', и вы увидите, что оно не равно нулю. – glibdud
'5556.4% 2'' '0.4'. Такие категории, как «четный» и «нечетный», на самом деле не имеют большого значения для десятичных чисел. Из [Википедии] (https://en.wikipedia.org/wiki/Parity_ (математика)): «Формальное определение четного числа состоит в том, что оно является целым числом вида n = 2k, где k - целое число" –