Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2017 21:21:10

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы?

привет ребята))))
только начинаю и прочитал несколько страница учебника этого замечатолького языка.
но вот в голову пришла мысль, которую не могу реализовать: хочу чтобы методом перебора было саставлено слово. участсвуют все буквы алфавита.
что для этого нужно? что использовать, циклы?
то есть например слова python. нужно чтобы программа перебрала все буквы, все варианты с ними и когда получится это слово, она осановилась.
подскажите, что и как

Офлайн

#2 Июль 6, 2017 21:38:52

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы?

ну вот если бы вы вдруг решили такое написать, как бы вы это сделали?

Офлайн

#3 Июль 6, 2017 23:10:17

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

циклы?

pythonmaks
то есть например слова python. нужно чтобы программа перебрала все буквы, все варианты с ними и когда получится это слово, она осановилась.
В слове “python” 6 букв. Всего будет 6! = 720 возможных сочетаний из 6 букв по 6 в каждом с учетом перестановок.
В учебных целях можно, конечно, попробовать изобрести свой велосипед. Но вообще-то есть готовая функция в модуле itertools. С ней задача решается очень просто:

 # импортируем нужную нам функцию
from itertools import permutations
# создаем счетчик, просто для нумерации слов в распечатке
i = 1 
for elem in permutations('python', 6):
    print(i, ''.join(elem))
    i += 1 
Будет выведено 720 возможных сочетаний, здесь приведены только несколько первых и последних:
1 python
2 pythno
3 pytohn
4 pytonh
5 pytnho
6 pytnoh
7 pyhton
8 pyhtno
9 pyhotn
10 pyhont

715 nohpyt
716 nohpty
717 nohypt
718 nohytp
719 nohtpy
720 nohtyp

Примечание: эту идею можете взять за основу, и перебирать весь алфавит (как у вас сказано в условии). Если ваш комп задымится от неимоверного количества вариантов, я не виноват
Чтобы программа остановилась, когда получится слово “python”, просто добавьте в цикл проверку (if result == ‘python’) и прерывание цикла break.

Отредактировано old_monty (Июль 6, 2017 23:28:54)

Офлайн

#4 Июль 6, 2017 23:24:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

циклы?

old_monty
В слове “python” 6 букв. Всего будет 6! = 720 возможных сочетаний из 6 букв по 6 в каждом с учетом перестановок.
n! даёт количество перестановок.
Есть три понятия там: размещение, сочетание и перестановка.

old_monty
Будет выведено 720 возможных сочетаний
1 python
2 pythno
...
Это одно сочетание, так как в сочетании порядок элементов не важен.



Отредактировано py.user.next (Июль 6, 2017 23:24:34)

Офлайн

#5 Июль 6, 2017 23:33:39

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы?

спасибо огромное))))))

old_monty
old_monty
очень выручили)))))))))))))
а вот если бы вы писали без библиотек, то чтобы вы попытались реализовать эту идею?

Офлайн

#6 Июль 6, 2017 23:34:52

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

циклы?

py.user.next
n! даёт количество перестановок.
Да, я не посмотрел, как это точно называется. Но по условию задачи, вроде бы как раз и нужны перестановки?

Офлайн

#7 Июль 6, 2017 23:35:17

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы?

py.user.next
а у вас есть идеи по этому поводу, как это провернуть без библиотек?

Офлайн

#8 Июль 6, 2017 23:43:01

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

циклы?

pythonmaks
спасибо огромное))))))
Пожалуйста.
pythonmaks
очень выручили)))))))))))))
А зачем столько смайликов, что тут смешного? Если “спасибо, выручил” - значит, ставь “+” мне в репутацию (а то у py.user.next'a уже 451 балл, а у меня всего каких-то жалких 18
pythonmaks
а вот если бы вы писали без библиотек, то чтобы вы попытались реализовать эту идею?
Через циклы, исходя из того, что каждая буква в слове может сочетаться со всеми остальными. Но это будет работать очень медленно.

Офлайн

#9 Июль 7, 2017 00:04:09

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы?

old_monty
смайлы это не смех -это выражение радости))))

Офлайн

#10 Июль 7, 2017 00:08:22

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы?

old_monty
через циклы , как например?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version