Найти - Пользователи
Полная версия: расстановка математических знаков
Начало » Python для новичков » расстановка математических знаков
1 2
shiroi
Добрый вечер. Как расписать программу, которая на вход получает две строки:
первая строка с целыми числами
вторая целое число

и надо расписать, используя цифры из первой строки все варианты получения числа со второй строки
ввод:
123456789
200

результаты:
123-4+5-6-7+89
123+4+5+67-8+9
1+234-5-6-7-8-9

только + и -, не должно быть повторяющихся строк и если нет решения, то none
Заранее спасибо за помощь
FishHook
shiroi
первая строка с обычными цифрами
Начнем сразу, с начала предлагаю дать ссылку на определение “обычной цифры” или предоставить такое определение самостоятельно.

shiroi
FishHook
целые числа
FishHook
FishHook
целые числа
первая строка с обычными цифрами
вторая целое число



Не, нифига, в вашем мире, целые числа и обычные цифры - это одно и то же


shiroi
FishHook
я уже исправил, первая строка это целые числа, вторая целое число
FishHook
shiroi
я уже исправил
А вот теперь, сформируй Техническое Задание, потому что то что ты напридумывал, понятно только тебе.
shiroi
FishHook
вводится последовательность целых чисел в первой строке
вводится целое число во второй строке

путем расстановки знаков + и - получить из последовательности чисел первой строки число со второй строки

пример:
вводятся
123456789
200

и как итог получаем все возможные варианты получения числа со второй строки при помощи чисел с первой и знаков “+” и “-”:
123-4+5-6-7+89
123+4+5+67-8+9
1+234-5-6-7-8-9
scidam
Пока несколько наводящих строк кода…

 from itertools import product
product(*[['+','-','']]*8)

Далее, остается рассмотреть list('123456789') и расставить знаки из всех комбинаций из product.

shiroi
scidam
спасибо большое, если я правильно понял, то функция product возвращает нам все возможные комбинации введенной нами последовательности?а что делает вот эта часть
 (*[['+','-','']]*8)
scidam
shiroi
scidamспасибо большое, если я правильно понял, то функция product возвращает нам все возможные комбинации введенной нами последовательности?а что делает вот эта часть

Это чтобы не писать 8 аргументов функции product, т.е. вместо этого:

  product(['+', '-', ''],['+', '-', ''], repeat  this 8 times)

Далее, нужен цикл по всем возможным комбинациям, возвращаемым product, т.е.
 for combination in product(...):
   expression = ... # Here we need to construct the expression to be evaluated: e.g. use ''.join(...) and list comprehension concept
   answer = ast.literal_eval(expression) # tested in Python 3.5.x, import ast first!
   if anser == number: # compare the result and the target value
       print('Target expression is: ', expression)
       break
else:  #see for-else docs for details... 
    print('Sorry... Target expression wasn't found.')
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