Форум сайта python.su
0
Кирилл хочет выбирать из последовательности чисел те, которые удовлетворяют заданному условию и перемножить их.условие такое числа не должны входить в заданную окрестность (Включая границы).
ФОРМАТ ВВОДА: В первой строке через пробел записаны целые числа, которые требуются проанализировать . Во второй строке записаны два целых числа: центр и радиус окрестности.
Формат Вывода: Одно число - рузультат работы программы
Пример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)
Офлайн
294
ArtemDav поместите код в теги:
[code python][/code]
[code python][/code]
Офлайн
0
PEHDOMИсправил
ArtemDav поместите код в теги:
Офлайн
294
ArtemDavнеа
Исправил
... n_n = ...
[code python][/code]
Отредактировано PEHDOM (Дек. 22, 2018 20:57:32)
Офлайн
294
также непонятно условие задачи , если выбирать те, которые удовлетворяют заданному условию и перемножить их. А числа не должны входить в заданную окрестность (Включая границы). то
Пример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)
Офлайн
0
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? либо условие неправильное, либо ответ.
Офлайн
294
ArtemDavну хоть чтото,но в любом случае там какаято ересь в коде, я не могу понять что вы делаете и для чего в практически эталонной задаче на произведение элементов массива, где нужно всегото добавить условие на невхождение
Можете пересмотреть?
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 >>>
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)
Офлайн
0
PEHDOM\
Отредактировано ArtemDav (Дек. 24, 2018 17:40:07)
Офлайн
294
ArtemDavпотому что 1+7 = 8, по условию задачи числа не должны входить в заданную окрестность (Включая границы), тоесть 8 не входит, остаються 9 * 10 = 90
Почему при вводе: 1 2 3 4 5 6 7 8 9 10 -Enter- 1 7 -> Я получаю не 720, а 90?
[code python][/code]
Офлайн