Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 22, 2018 15:59:58

ArtemDav
Зарегистрирован: 2018-12-22
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка

Кирилл хочет выбирать из последовательности чисел те, которые удовлетворяют заданному условию и перемножить их.условие такое числа не должны входить в заданную окрестность (Включая границы).

ФОРМАТ ВВОДА: В первой строке через пробел записаны целые числа, которые требуются проанализировать . Во второй строке записаны два целых числа: центр и радиус окрестности.

Формат Вывода: Одно число - рузультат работы программы

Пример1: 1 2 3 4 5 6 7 8 9 10 -Enter- 5 2 -Enter- 1440 (ответ)
Пример2:1 3 5 7 9 11 13 17 19-Enter- 1 7 -Enter- 415701(ответ)

ПРИМЕЧАНИЕ: Где Enter это ввод.

Мой код:

 n = input().split()
n2 = input().split()
n_n = []
count = 0
value = 1
successfull = False
j = n_n
x = 1
for i in n:
    n_n.append(int(i))
for i in n_n:
    if int(n2) != i:
        count += 1
        value += 1
    else:
        j = n_n
        break
while True:
    if not successfull:
        while True:
            if int(n2) - n_n <= 0:
                if int(n2) != n_n:
                    n_n.remove(n_n)
                    value -= 1
                    count -= 1
                else:
                    break
            else:
                break
        while True:
            if int(n2) + n_n != n_n:
                n_n.remove(n_n)
                value += 1
            else:
                n_n.remove(n_n)])
                successfull = True
                break
    else:
        break
for i in n_n:
    x *= i
print(x)
# Если ввести числа из первого примера - все нормально пройдет, а со вторым проблема :(

Отредактировано ArtemDav (Дек. 23, 2018 14:22:49)

Офлайн

#2 Дек. 22, 2018 16:03:48

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Задачка

ArtemDav поместите код в теги:

 [code python][/code]
чтобы сохранилось форматирование



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Дек. 22, 2018 16:06:44

ArtemDav
Зарегистрирован: 2018-12-22
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка

PEHDOM
ArtemDav поместите код в теги:
Исправил

Офлайн

#4 Дек. 22, 2018 20:57:11

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Задачка

ArtemDav
Исправил
неа
 ...
n_n = 
...
что такое n_n? я так понимаю пропали квадратные скобки и все что в них долно быть..



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 22, 2018 20:57:32)

Офлайн

#5 Дек. 22, 2018 21:33:53

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Задачка

также непонятно условие задачи , если выбирать те, которые удовлетворяют заданному условию и перемножить их. А числа не должны входить в заданную окрестность (Включая границы). то
Пример1: 1 2 3 4 5 6 7 8 9 -Enter- 5(центр) 2(“радиус”) получаем окрестность от 3 до 7 включительно , выходит 1*2*8*9 = 144 у вас же 1440
Пример2:1 3 5 7 9 11 13 17 -Enter- 1(центр) 7(“радиус”) , окрестность от -6 до 8, 9*11*13*17 = 21879 у вас же 415701
WTF? либо условие неправильное, либо ответ.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 22, 2018 21:38:50)

Офлайн

#6 Дек. 23, 2018 14:23:24

ArtemDav
Зарегистрирован: 2018-12-22
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка

PEHDOM
также непонятно условие задачи , если выбирать те, которые удовлетворяют заданному условию и перемножить их. А числа не должны входить в заданную окрестность (Включая границы). то Пример1: 1 2 3 4 5 6 7 8 9 -Enter- 5(центр) 2(“радиус”) получаем окрестность от 3 до 7 включительно , выходит 1*2*8*9 = 144 у вас же 1440 Пример2:1 3 5 7 9 11 13 17 -Enter- 1(центр) 7(“радиус”) , окрестность от -6 до 8, 9*11*13*17 = 21879 у вас же 415701WTF? либо условие неправильное, либо ответ.
Извиняюсь, мой косяк, не дописал просто. Можете пересмотреть?

Офлайн

#7 Дек. 23, 2018 15:46:34

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Задачка

ArtemDav
Можете пересмотреть?
ну хоть чтото,но в любом случае там какаято ересь в коде, я не могу понять что вы делаете и для чего в практически эталонной задаче на произведение элементов массива, где нужно всегото добавить условие на невхождение
там решение на 10 строк кода.
 def lst_mult(num_list, cond):
    min_val = int(cond[0]) - int(cond[1]) # нижняя граница
    max_val = int(cond[0]) + int(cond[1]) # верхняя граница
    res = 1  # результат умножения
    for x in num_list:  # перебираем все элементы
        x = int(x) 
        if x < min_val or x > max_val:  # если х меньше нижней границы или больше верхней
            res *= x                               # умножаем результат на элемент списка
    return res
num_list = '1 2 3 4 5 6 7 8 9 10'.split()
cond = '5 2'.split()
print(lst_mult(num_list, cond))
num_list = '1 3 5 7 9 11 13 17 19'.split()
cond = '1 7'.split()
print(lst_mult(num_list, cond))
>>>
1440
415701
>>>
это “школьное” решение, если же использовать reduce из functools то там вообще можно уложиться в три-четыре строки
 def lst_mult(num_list, cond):
    num_lst = [int(x) for x in num_list]
    center, radius = [int(x) for x in cond]
    min_val, max_val = center - radius, center + radius
    return (reduce(lambda res, x: res*x, [x for x in num_lst if not min_val <= x <= max_val ], 1))
или даже в одну, но это уже чистой воды выпендреж, так как код становиться трудночиаемый
 lst_mult = lambda num_lst, cond: reduce(lambda res, x: res*x, [int(x) for x in num_lst if not (int(cond[0]) - int(cond[1])) <= int(x) <= (int(cond[0]) + int(cond[1])) ], 1)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 23, 2018 15:50:42)

Офлайн

#8 Дек. 24, 2018 17:06:18

ArtemDav
Зарегистрирован: 2018-12-22
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка

PEHDOM
\
Почему при вводе: 1 2 3 4 5 6 7 8 9 10 -Enter- 1 7 -> Я получаю не 720, а 90?

Отредактировано ArtemDav (Дек. 24, 2018 17:40:07)

Офлайн

#9 Дек. 24, 2018 18:50:47

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Задачка

ArtemDav
Почему при вводе: 1 2 3 4 5 6 7 8 9 10 -Enter- 1 7 -> Я получаю не 720, а 90?
потому что 1+7 = 8, по условию задачи числа не должны входить в заданную окрестность (Включая границы), тоесть 8 не входит, остаються 9 * 10 = 90



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version