Python

Помогите с программой на Python. Сколько существует десятичных трёхзначных чисел, в которых только одна цифра кратна 3?

Вот вроде сделал, но всё равно неверно считает, или вообще это задание на питоне не получится решить? Подскажите, где ошибся

count = 0
for i in range(100, 999):
-if (i // 1) % 3 == 0:
--count += 1
elif (i // 10) % 3 == 0:
--count += 1
elif (i // 100) % 3 == 0:
--count += 1
print(count)

P.S. отступы верно соблюдены, отметил их "-"
(i % 10) - 3 цифра числа, (i // 10 % 10) - 2 цифра, (i // 100) - 1 цифра.
 count = 0 
for i in range(100, 1000):
if (i % 10) % 3 == 0 and (i // 10 % 10) % 3 != 0 and (i // 100) % 3 != 0:
count += 1
elif (i % 10) % 3 != 0 and (i // 10 % 10) % 3 == 0 and (i // 100) % 3 != 0:
count += 1
elif (i % 10) % 3 != 0 and (i // 10 % 10) % 3 != 0 and (i // 100) % 3 == 0:
count += 1
print(count)
Валерий Дадаев
Валерий Дадаев
2 589
Лучший ответ
Вроде так:
 print(sum(1 for i in range(100, 1000) if sum(j % 3 == 0 for j in map(int, str(i))) == 1)) 
Ответ получился 396. Сами числа: https://pastebin.com/LLt7NpxB
WF
War Facer
88 187
Талгат Бисеналиев Проверил беглым взглядом числа, в числах, такие как 880 или 870 (и др.) ни одна из цифр не кратна 3. Ноль же не может быть кратен, поэтому либо придётся убрать эти числа уже вручную, либо ещё одно какое нибудь условие создать
Зачем тебе py, если это 9^3...
Вот так вычислится количество таких натуральных чисел:
 l = 0 
for n in range(100, 1000):
m, k = n, 0
while m:
if (m % 10) % 3 == 0: k += 1
m //= 10
if k == 1: l += 1
print(l, 'натуральных чисел'); input()
А вообще-то всего трехзначных чисел ровно в два раза больше нежели одних только натуральных, так что в конце лучше сделать print(2 * l)
 123 // 1 = 123
123 // 10 = 12
123 // 100 = 1
Это первая ошибка.

Вторая это то, что ты в каждой из проверок увеличиваешь значение на единицу. То есть в одном числе count может сразу на 3 увеличиться
War Facer
count может сразу на 3 увеличиться
Не может быть такого, тк у него конструкция if-elif-elif
А вот в range ошибка - range(100, 1000)