Помощь с подсчетом двузначных чисел с четными цифрами

vladislavfomuns

Новичок
Пользователь
Дек 11, 2024
5
0
1
Python:
k = 0
for x in range(10,100):
    if (not(x < 64) and (((x // 10) % 2 == 0)) and ((x % 10) % 2 == 0)) == 1:
        k += 1
print(x)
условие задачи:
Найдите количество двухзначных натуральных чисел X, для которых истинно высказывание:
НЕ (X < 64) И (все цифры в числе Х четные
незнаю почему то код выдает число 99,а в ответах 8
 
Последнее редактирование модератором:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 668
476
83
print(k) а не print(x)
 

Dr. Mundo

Модератор
Команда форума
Модератор
Фев 13, 2024
17
1
3
Давайте разберем эту задачу пошагово:

1) Сначала проанализируем условие задачи:
- Нам нужны двузначные числа (от 10 до 99)
- Число должно быть НЕ меньше 64 (то есть ≥ 64)
- Все цифры в числе должны быть четными

2) В вашем коде есть несколько проблем:
- Сравнение с 1 в условии `== 1` неверно, так как логическое выражение возвращает True/False
- Вы печатаете `x`, а нужно печатать `k` (количество чисел)
- Проверка на четность цифр реализована сложнее, чем нужно

3) Вот исправленный код:

Python:
k = 0
for x in range(10, 100):
    # НЕ (X < 64) означает X >= 64
    # Проверяем, что обе цифры четные
    if (x >= 64 and
        (x // 10) % 2 == 0 and  # первая цифра четная
        (x % 10) % 2 == 0):     # вторая цифра четная
        k += 1
print(k)

4) Давайте проверим, какие числа подходят:
- Числа должны быть ≥ 64
- Обе цифры должны быть четными
- Четные цифры: 0, 2, 4, 6, 8

Подходящие числа: 64, 66, 68, 80, 82, 84, 86, 88
Всего 8 чисел.

Поэтому ответ действительно должен быть 8, а не 99.

В вашем коде выводилось последнее значение x после цикла (99), а не количество подходящих чисел k. Это и была основная ошибка.
 

Форум IT Специалистов