Найти - Пользователи
Полная версия: Помогите с задачей
Начало » Центр помощи » Помогите с задачей
1 2
Straik32423
Задача с pythontutor. Не могу придумать решение. Буду благодарен за подсказку или решение. (Лучше подсказка )

Даны два целых числа A и В, A>B. Выведите все нечётные числа от A до B включительно. В этой задаче нельзя использовать инструкцию if.


Самое банальное:
a = int(input())
b = int(input())
for i in range(a, b-1, -2):
    print(i)
Подходит только, если а - нечетное число. А если a будет четным, то программа выведет все четные числа до b.

Так же была идея перевернуть ряд и начать отсчитывать нечетные числа с еденицы.
a = int(input())
b = int(input())
for i in range(b, a+1, 2):
    print(i)
Тогда действительно программа выводит их правильно, но не в том порядке.
То есть, например 1,3,5,7. А нужно 7,5,3,1.
В общем, я в тупике. Прошу помощи.
JOHN_16
Ну не совсем круто конечно, но может подскажет что нибудь
>>> a = 10
>>> b = 2
>>> result = []
>>> for i in range(a, b, -1):
...     c = i % 2
...     not c or result.append(i)
... 
True
True
True
>>> for i in result:
...     print(i)
... 
9
7
5
3
Straik32423
JOHN_16
Ну не совсем круто конечно, но может подскажет что нибудь
Да нет, не подскажет)
Я только начал учить, так что понимаю далеко не все, что у тебя там написано. Чуть позже попробую разобраться с помощью гугла.
Думаю, эта задача должна решаться проще, так как, по-сути, на данном этапе я должен знать только ввод-вывод, условную конструкцию, математические действия и цикл for.
Все равно благодарю.
marvellik
Straik32423
Задача с pythontutor
с какой темы задача? я что то не нашел такую.
marvellik
все нашел. это из условной инструкции.самое интересное что эталонное решение использует if хотя в условии сказано иначе. вот эталонное решение
a = int(input())
b = int(input())
if a % 2 == 0:
    a -= 1
if b % 2:
    b -= 1
for i in range(a, b, -2):
    print(i, end=' ')
ну а так написал я
print(*(i for i in range(int(input()),int(input())-1,-1) if i%2!=0))
но как без if решить я так и не понял
Straik32423
marvellik
a = int(input())
b = int(input())
if a % 2 == 0:
a -= 1
if b % 2:
b -= 1
for i in range(a, b, -2):
print(i, end=' ')
О боже, это я зря себе мозг столько времени насиловал? Мда… Спасибо, очень благодарен.
Stright
А если так?
def print_odd(a, b):
    return filter((lambda x: x % 2), range(a, b-1, -1))
print(*print_odd(49, 9))
marvellik
Stright
А если так?
это начальный уровень обучения. до этой задачи даже списки не изучаются не то что лямбда функция. это я эту задачу переписал код после изучения списка,распаковки.
а так решение соответствует условию (мне понравилось) но не соответствует изученному материалу с сайта если начинать с нуля на нем
Stright
Да, действительно, но, с другой стороны, и функция range до этой задачи не изучается
Ну будет повод немного вперед заглянуть
Straik32423
Stright
Да, действительно, но, с другой стороны, и функция range до этой задачи не изучается Ну будет повод немного вперед заглянуть
Изучается. Прямо в этой теме. Цикл For, задача 3 “Ряд-3”.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB