Посчитать четные и нечетные цифры числа (Python)

Тема: 
Циклы

Определить, сколько в введенном пользотелем числе четных цифр, а сколько нечетных.

Если число делится без остатка на 2 (т. е. остаток равен нулю), значит оно четное. Увеличиваем на 1 счетчик четных цифр (even). Иначе число нечетное, увеличиваем счетчик нечетных цифр (odd). В Python операцию нахождения остатка от деления выполняет знак %.

Чтобы избавиться от младшего (уже учтенного) разряда число следует разделить нацело на 10. Деление нацело обозначается так: //.

a = input()
a = int(a)
 
even = 0
odd = 0
 
while a > 0:
	if a % 2 == 0:
		even += 1
	else:
		odd += 1
	a = a // 10
 
print("Even: %d, odd: %d" % (even, odd))

Примерный результат:

65439
Even: 2, odd: 3

# -*- coding: utf-8 -*-#

# -*- coding: utf-8 -*-
# определить сколько четных и нечетных цифр в введенном числе
print('''Программа определит сколько четных и нечетных
цифр во введенном числе''' + '\n')
while 1:
    try:
        a = int(input('введите число и нажмите Enter \n'))
        break
    except ValueError:
        print('Это не число')
a = str(a)    
a = [int(x) for x in a]
chet = 0
nechet = 0
for x in a:
    if x % 2 == 0:
        chet += 1
    else:
        nechet += 1
print('во введенном числе' + '\n' + 'четных цифр -', chet, 'нечетных цифр -', nechet)
 
 
 
print('''
''')
 
 
# ниже вариант без try
'''
a = input('введите число и нажмите Enter \n')
a = [int(x) for x in a]
chet = 0
nechet = 0
for x in a:
    if x % 2 == 0:
        chet += 1
    else:
        nechet += 1
print('во введенном числе' + '\n' + 'четных цифр -', chet, 'нечетных цифр -', nechet)
'''

или так

test_number = str(int(input('input number')))
% int() нужен для фильтрации ввода, пропускает только цифры
even =0
for b in test_number:
    even += 1 if int(b)%2==0 else 0
print("Even: %d, odd: %d" % (even, len(test_number)-even))

python 2 и 3

Почему если в Python 2.7 вводишь строку которая начинается с 0 и кончается 9 выдаёт ошибку? В 3 версии всё нормально работает.

    a = input()
  File "<string>", line 1
    09
     ^
SyntaxError: invalid token

В Python 2 функция input()

В Python 2 функция input() возвращает число, а в Python 3 строку.

потому что в языке существует

потому что в языке существует такое понятие как формат чисел по умолчанию. Числа могут быть представлены в двоичном, восьмеричном, десятеричном, 16-ричном и других форматах. Формат числа определяется по его написанию.

Обычные числа, с которыми мы имеем дело -- десятичные. Тут все просто -- число должно состоять из цифр (от 0 до 9), начинаться со знака минус, плюс или не иметь знака. Число не должно начинаться --ВНИМАНИЕ!-- с нуля.

восьмеричные числа -- это такие числа, которые состоят тоже из цифр, только эти цифры могут от 0 до 7. Присутствие 10-тичных цифр --ВНИМАНИЕ ЕЩЕ РАЗ!-- 8 и 9 в восьмеричном числе недопустимо.

Таким образом число 0234534 -- это правильное восьмеричное число, а числа 02845 и 034392 -- написанные с ошибкой.

Самое главное забыл сказать

Самое главное забыл сказать про 8-ричные числа!

Эти числа должны начинаться с цифры 0 (ноль).

Это сделано специально чтобы различать 10-тичные и 8-ричные числа. Если этого не сделать, то отличить одно от другого будет не возможно в принципе.

Например, если я напишу число 123. Какое это число? 10-тичное или 8-ричное?

Поэтому, во многих языках программирования существует правило -- если число начинается с цифры 0, то это число следует интерпретировать как 8-ричное.

Но если в 8-ричном числе встречается цифра 8 или 9, то это является ошибкой. О чем, собственно, интерпретатор Питона нам и сообщил.