- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- РњРѕР№ Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР‚ВВВВВВВВРЎР‚
- Viber
- Skype
- Telegram
Вывести на экран все двухзначные числа в записи которых есть хотя бы одна цифра N
Вывести на экран все двухзначные числа в записи которых есть хотя бы одна цифра N Написал следующий код :
a = int(input())
for i in range(10, 99):
if ((i / 10 == a) or (i % 10 == a)):
print(i, end=' ')
Но он почему то не выводит цифру 21 при a=2
Ответы (2 шт):
N = input("Введите цифру N: ")
print([i for i in range(10, 100) if N in str(i)])
Проблема в том, что вы использовали не целочисленное деление для проверки (/
вместо //
).
А вообще можно короче проверить сразу оба условия, используя встроенную функцию divmod
:
a = int(input())
print(*(i for i in range(10, 100) if a in divmod(i, 10)))
# 12 20 21 22 23 24 25 26 27 28 29 32 42 52 62 72 82 92
a in divmod(i, 10)
- это одновременная проверка, что a
либо равно целочисленному результату деления i//10
, либо a
равно остатку от деления i
на 10
.
P.S. range
не включает конечное значение в перебор, поэтому нужно задавать диапазон до 100, а не до 99.
P.P.S. Спасибо rotabor за идею, ещё одно решение, которое не перебирает весь диапазон 10-99 (т.е. 90 чисел) и не проверяет результаты деления и взятия остатка, а перебирает и выводит только те числа, где действительно есть искомая цифра, таких чисел всегда будет не более 18.
a = int(input())
for i in range(1, 10):
if i == a:
for j in range(10):
print(f'{i}{j}', end=' ')
else:
print(f'{i}{a}', end=' ')