Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
5 / 4 / 3
Регистрация: 21.03.2018
Сообщений: 140
1

Генератор слов

13.06.2019, 05:08. Просмотров 3259. Ответов 5

Имеется генератор слов из указанного алфавита, с переменной длиной слов, т.е. можно менять и алфавит и максимальную длину слов
Python
1
2
3
4
5
6
7
8
import itertools
 
a = 'abcdefghijklmnopqrstuvwxyz1234567890' # алфавит
for ch in a:
    with open('db/' + ch + '.txt', 'w', encoding='utf-8') as f:
        for i in range(1, 10): #  задаем мин. длину и макс. длину слова
            for item in itertools.product(a, repeat=i):
                   f.writelines('%s%s\n' % (ch,''.join(item)))
этот генератор пишет в файлы все сгенерированные слова.

Так вот вопрос , кто знает подскажите как переделать в вывод на консоль , но это естественно не проблема , а вот с записью состояния при остановке , и саму остановку
Python
1
2
3
4
5
6
7
8
import itertools
 
a = 'abcdefghijklmnopqrstuvwxyz1234567890' # алфавит
 
for ch in a:
    for i in range(2, 3):
        for item in itertools.product(a, repeat=i):
            print(ch+''.join(item))
вот а как теперь реализовать :
1.) остановку в любой момент с консоли , т.е. типа нажал букву q вернее ввел с консоли q и цикл остановился
2.) запись состояния цикла при остановке , состояние запись в файл
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2019, 05:08
Ответы с готовыми решениями:

Напечатать эту же последовательность слов, предварительно удалив из нее повторные вхождения слов
Программа. Дана последовательность, содержащая от 1 до 20 слов, в каждом из которых от 1 до 5...

Как из строки слов получить список пар слов?
Доброго времени суток. Вопрос такого рода: как разбить строку вида "100 USD" "100 EUR" "99 eur"...

Генератор слов
Здравствуйте! Хочу написать программу по поиску слов из набора букв, но даже не представляю с чего...

Генератор слов
Я запутался в задаче. Не могу найти работающее решение. Вообщем есть метод, который подставляет в...

5
Просто Лис
Эксперт Python
4236 / 2646 / 910
Регистрация: 17.05.2012
Сообщений: 7,903
Записей в блоге: 9
13.06.2019, 07:53 2
1) Ctrl+C
Python
1
2
3
4
5
6
7
8
9
import signal
 
def handler(s, f):
    print('KeyboardInterrupt has been caught')
 
signal.signal(signal.SIGINT, handler)
 
while True:
    pass
1
5 / 4 / 3
Регистрация: 21.03.2018
Сообщений: 140
13.06.2019, 09:56  [ТС] 3
Рыжий Лис, спасибо получилось вот так , не знаю правильно или нет но работает ,
во время выполнения останавливается по нажатию Ctrl+C
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3
 
import itertools
import signal
 
a = 'abcdefghijklmnopqrstuvwxyz1234567890'  # алфавит
 
def handler(s, f):
    print('Выполнение остановлено')
 
signal.signal(signal.SIGINT, handler)
 
while True:
     for ch in a:
        for i in range(2, 5):
           for item in itertools.product(a, repeat=i):
              print(ch + ''.join(item))
 
pass
посмотрите пожалуйста правильно ?

Добавлено через 1 минуту
хотя и без while True: работает
может не надо while True: ?

Добавлено через 19 минут
осталось как сохранить состояние что бы можно было продолжить на следующий день
первое что приходит в голову ,
сохранить переменные
ch - буква с которой начинается слово
i - цифра размер слова , т.е. кол-во букв в слове
item - вот тут я теряюсь что это , ???????

значит надо открыть файл и записать туда эти переменные

Добавлено через 52 секунды
как то так гляньте
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3
 
import itertools
import signal
 
a = 'abcdefghijklmnopqrstuvwxyz1234567890'  # алфавит
 
def handler(s, f):
    with open('state.txt', 'a', encoding='utf-8') as f:
                print(f'{ch}\n{i}\n{item}', file=f)
 
    print('Выполнение остановлено')
 
signal.signal(signal.SIGINT, handler)
 
for ch in a:
  for i in range(2, 5):
    for item in itertools.product(a, repeat=i):
       print(ch + ''.join(item))
Добавлено через 54 секунды
файл
state.txt
a
4
('f', 'd', 'x', 's')
Добавлено через 2 минуты
а вот теперь как востановить по этим данным циклы , чтобы продолжить как говорится с того же места
0
5 / 4 / 3
Регистрация: 21.03.2018
Сообщений: 140
14.06.2019, 01:05  [ТС] 4
дальше что то у меня стопарнулось , не могу найти как продолжить выполнение программы ,
понимаю что надо так же повесить ХУК на клавиши типа Ctrl+N или Enter , если по аналогии с остановкой
может так
0
5 / 4 / 3
Регистрация: 21.03.2018
Сообщений: 140
14.06.2019, 11:42  [ТС] 5
сделал сохранение и восстановление с номера буквы,
т.е. генерацию начали с начального размера слова в две буквы ,
потом остановили в момент остановки итерация находилась на генерации слов размером 5 букв
записали в файл число 5
потом запускаем опять прогу , читаем из файла число ,
и опять начинается генерация слов размером 5 букв (то что указано в файле)
все бы не чего , но начинается опять с положения "aaaaa"
0
5 / 4 / 3
Регистрация: 21.03.2018
Сообщений: 140
17.06.2019, 06:58  [ТС] 6
вопрос еще актуален,
так и не могу допереть как сделать ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2019, 06:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Генератор слов
Помогите создать генератор слов, или может кто может скинуть что нибудь готовое, нужен генератор...

Генератор слов
Добрый день знатоки. Подскажите как создать генератор слов в цикле вида: aa ab ac .. ba .....

Генератор слов
Нужно зделать генератор слов на C++ или на Visual Basic с учётом правил граматики(не начинать слова...

Генератор слов
Здравствуйте! Хочу написать программу по генерированию слов из набора букв, но даже не представляю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.