1 Востаннє редагувалося koala (23.06.2022 16:32:10)

Тема: Генератор речень

Доброго дня, треба ваша допомога є скрипт який бере речення з словника і видаляє по 1му символу на початку а потім вкінці, поки не буде усіх варіантів, потім з того що вийшло повторити обробку (все це в рамках 1 речення що взятий зі списку)

скрипт:

import sys
try:
 for line in sys.stdin:
  s = (line.rstrip('\n'))
  sas = s.count('')
  print (s)
  for nom in range(sas):
   a = s[:-nom]#[:-nom]
   b = s[nom:]#[nom:]
   print (a)
   print (b)
   sas1 = a.count('')
   for nom1 in range(sas1):
    aa = a[nom1:]#[nom1:]
    bb = b[:-nom1]
    print (aa)
    print (bb)
except (UnicodeDecodeError, IOError):
    pass

треба теж самий варіант тільки теперь з пробелом і збереженням послідовності

print

сруский корабль иди на.уй
корабль иди на.уй
иди на.уй
на.уй
корабль иди на.уй
иди на.уй
на.уй
корабль иди

маємо усі варіанти із збереженням послідовності
потім наступна строка

2

Re: Генератор речень

я дам гроші!

3

Re: Генератор речень

Поділіть стрічку на слова за допомогою .split() і робіть те саме, тільки перед виведенням об'єднуйте назад за допомогою ' '.join().
У вас там стільки незрозумілих дій у коді, що таке враження, ніби ви москалів хочете заплутати.

...#s - наша стрічка
words = s.split()
for i in range(len(words)):
    print(' '.join(words[i:]))

І, будь ласка, більше не порушуйте п.1.1 Правил.

Подякували: stalker00071

4

Re: Генератор речень

koala написав:

Поділіть стрічку на слова за допомогою .split() і робіть те саме, тільки перед виведенням об'єднуйте назад за допомогою ' '.join().
У вас там стільки незрозумілих дій у коді, що таке враження, ніби ви москалів хочете заплутати.

...#s - наша стрічка
words = s.split()
for i in range(len(words)):
    print(' '.join(words[i:]))

І, будь ласка, більше не порушуйте п.1.1 Правил.


а як що я маю 3 print

  for i in range(len(words)):
   aa1 =(' '.join(words[:i]))
   aa2 =(' '.join(words[i:]))
   print (aa1)
   print (aa2)
   print (aa1)

иди на.уй
иди на.уй
корабль иди на.уй
корабль иди на.уй
на.уй
на.уй
сруский
сруский
сруский корабль
сруский корабль
сруский корабль иди
сруский корабль иди
сруский корабль иди на.уй
сруский корабль иди на.уй

як мені видалити дублі?  - не використовуючи sort -u  ( тільки python функции у рамках проекту)

дуже дякую вам за скрипт вище!!!!

5

Re: Генератор речень

Вам ті 3 print-и від прадіда дісталися, що ви боїтеся один з них видалити?

Подякували: wander1

6

Re: Генератор речень

koala написав:

Вам ті 3 print-и від прадіда дісталися, що ви боїтеся один з них видалити?


ні, це приклад.  В мене буде багато принтів і я гадки не маю як їх поєднати ї видалити дублікати


 for i in range(len(words)):
   aa1 =(' '.join(words[:i]))
   aa2 =(' '.join(words[i:]))
   print (aa1)
   print (aa2)
   words1 = aa1.split()
   for p in range(len(words1)):
    aa11 =(' '.join(words1[:p]))
    aa22 =(' '.join(words1[p:]))
    print(aa11)
    print(aa22)

це для того щоб зробити багато різних варіантів

7

Re: Генератор речень

Спробуйте спершу сформулювати, що саме вам треба, а потім пишіть код. "багато різних варіантів" - це поганий опис того, як має працювати програма.

8

Re: Генератор речень

koala написав:

Спробуйте спершу сформулювати, що саме вам треба, а потім пишіть код. "багато різних варіантів" - це поганий опис того, як має працювати програма.

гаразд, ось код:

import sys
try:
 for line in sys.stdin:
  s = (line.rstrip('\n'))
  sas = s.count('')
  words = s.split()
  for i in range(len(words)):
   aa1 =(' '.join(words[:i]))
   aa2 =(' '.join(words[i:]))
   print (aa1)
   print (aa2)
   words1 = aa1.split()
   for p in range(len(words1)):
    aa11 =(' '.join(words1[:p]))
    aa22 =(' '.join(words1[p:]))
    print(aa11)
    print(aa22)
    words2 = aa2.split()
    for ii in range(len(words2)):
     aa111 =(' '.join(words2[:ii]))
     aa222 =(' '.join(words2[ii:]))
     print(aa111)
     print(aa222)

except (UnicodeDecodeError, IOError):
    pass

видає мені ось це

сруский корабль иди на.уй
сруский
корабль иди на.уй

сруский

корабль иди на.уй
корабль
иди на.уй
корабль иди
на.уй
сруский корабль
иди на.уй

сруский корабль

иди на.уй
иди
на.уй
сруский
корабль

иди на.уй
иди
на.уй
сруский корабль иди
на.уй

сруский корабль иди

на.уй
сруский
корабль иди

на.уй
сруский корабль
иди

на.уй

треба все що видало в термінал (видалити дублікати) як це зробити?

ось вірний результат

иди
иди на.уй
корабль
корабль иди
корабль иди на.уй
на.уй
сруский
сруский корабль
сруский корабль иди
сруский корабль иди на.уй


Скрипт бере по строчно кожну строку ( for line in sys.stdin)  ї оброблює як я написав спочатку ( не видава усі print а тільки без дублікатів)

теперь бере друге строку із іншим змістом..... так до кінця мого словника for line in sys.stdin



навіщо це все ви спитаєте!  я роблю всі варіаціі строк( но не втрачаюічи послідовності)

9

Re: Генератор речень

Тобто і починати, і закінчувати можна будь-яким словом, а не лише з початку чи до кінця?

words = s.split()
for i in range(len(words)):
  for j in range(i+1,len(words)+1):
      print(' '.join(words[i:j]))
Подякували: stalker0007, leofun012

10

Re: Генератор речень

koala написав:

Тобто і починати, і закінчувати можна будь-яким словом, а не лише з початку чи до кінця?

words = s.split()
for i in range(len(words)):
  for j in range(i+1,len(words)+1):
      print(' '.join(words[i:j]))

як ви це зробили!!! дуже добре працює!!  дуже дякую!!!!

11 Востаннє редагувалося koala (24.06.2022 13:25:01)

Re: Генератор речень

Я насправді неправильно зрозумів про послідовність - спершу думав, вам важлива саме така послідовність рядків, і не міг зрозуміти навіщо. А послідовність слів з речення/масиву - це просто слайс.

Подякували: stalker00071

12

Re: Генератор речень

я вам дуже дякую!! профі нашого часу