Уведомления

Группа в Telegram: @pythonsu

#1 Июль 8, 2016 19:31:38

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачей

Задача с 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.
В общем, я в тупике. Прошу помощи.

Отредактировано Straik32423 (Июль 8, 2016 19:58:55)

Офлайн

#2 Июль 8, 2016 20:21:57

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Помогите с задачей

Ну не совсем круто конечно, но может подскажет что нибудь

>>> 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



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Июль 8, 2016 20:25:41)

Офлайн

#3 Июль 8, 2016 20:31:03

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачей

JOHN_16
Ну не совсем круто конечно, но может подскажет что нибудь
Да нет, не подскажет)
Я только начал учить, так что понимаю далеко не все, что у тебя там написано. Чуть позже попробую разобраться с помощью гугла.
Думаю, эта задача должна решаться проще, так как, по-сути, на данном этапе я должен знать только ввод-вывод, условную конструкцию, математические действия и цикл for.
Все равно благодарю.

Офлайн

#4 Июль 8, 2016 20:59:53

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите с задачей

Straik32423
Задача с pythontutor
с какой темы задача? я что то не нашел такую.

Офлайн

#5 Июль 8, 2016 21:12:35

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите с задачей

все нашел. это из условной инструкции.самое интересное что эталонное решение использует 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 решить я так и не понял

Офлайн

#6 Июль 8, 2016 22:08:24

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачей

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=' ')
О боже, это я зря себе мозг столько времени насиловал? Мда… Спасибо, очень благодарен.

Офлайн

#7 Июль 8, 2016 22:14:13

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Помогите с задачей

А если так?

def print_odd(a, b):
    return filter((lambda x: x % 2), range(a, b-1, -1))
print(*print_odd(49, 9))

Офлайн

#8 Июль 8, 2016 23:44:53

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите с задачей

Stright
А если так?
это начальный уровень обучения. до этой задачи даже списки не изучаются не то что лямбда функция. это я эту задачу переписал код после изучения списка,распаковки.
а так решение соответствует условию (мне понравилось) но не соответствует изученному материалу с сайта если начинать с нуля на нем

Офлайн

#9 Июль 8, 2016 23:54:40

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Помогите с задачей

Да, действительно, но, с другой стороны, и функция range до этой задачи не изучается
Ну будет повод немного вперед заглянуть

Офлайн

#10 Июль 8, 2016 23:58:38

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачей

Stright
Да, действительно, но, с другой стороны, и функция range до этой задачи не изучается Ну будет повод немного вперед заглянуть
Изучается. Прямо в этой теме. Цикл For, задача 3 “Ряд-3”.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version