Количество столбцов и заполнителей значений в операторах SQL должно соответствовать указанным числовым значениям. В этом случае столбцы не указываются - это означает, что все столбцы должны быть заполнены, указаны три заполнителя значений, но указаны только два значения.
Измените SQL, чтобы принимать только заполненные столбцы
c.execute("INSERT INTO checkit (number, even) VALUES(:a,:b)",{
'a':n,
'b':n
})
Или укажите значение для «пропущенного» значения
c.execute("INSERT INTO checkit (number, even, odd) VALUES(:a,:b,:c)",{
'a':n,
'b':n,
'c':0
})