#python #python_3x
вводится последовательность целых чисел в первой строке вводится целое число во второй строке путем расстановки знаков + и - получить из последовательности чисел первой строки число со второй строки пример: вводятся 123456789 200 и как итог получаем все возможные варианты получения числа со второй строки при помощи чисел с первой и знаков “+” и “-”: 123-4+5-6-7+89 123+4+5+67-8+9 1+234-5-6-7-8-9 посоветовали использовать itertools.product для этого, но так как использовать сторонние модули не могу, пришлось вынести ее в отдельную функцию # -*- coding: utf-8 -*- def product(*args, repeat = 1): pools = [tuple(pool) for pool in args] * repeat result = [[]] for pool in pools: result = [x+[y] for x in result for y in pool] for prod in result: yield tuple(prod) # itertools.product(*iterables, repeat=1) print(result) return result Input = input() number = input() for combination in product([['+','-','']]*8): combination = str(combination) expression = combination.join(Input) answer = eval(expression) if answer == number: print(expression) break else: print('NONE') Помогите подкорректировать код, чтобы он работал.Заранее спасибо
Ответы
Ответ 1
Блок в else выполняется, если из цикла не сделан выход через break, то есть ваш else выполняется всегда. Как передать параметры в функцию из списка, как перемешать цифры со знаками: for combination in product(*([['+','-','']] * (len(digits)-1))): d = [None]*(len(digits)+len(combination)) d[0::2] = digits d[1::2] = combination expression = ''.join(d) answer = eval(expression) if answer == number: print(expression) found = True if not found: print("NONE")
Комментариев нет:
Отправить комментарий