itertools no python [RESOLVIDO]

1. itertools no python [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/03/2010 - 19:29h

queria saber como usa o product() no python

http://docs.python.org/library/itertools.html

andei tentando mas nao consegui

aki meu script

============================================================

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import sys
from itertools import *

# Exibição do manual
def manual():
print 'DGF sistens'
print 'dgfbrute 1.0 FINAL'
print 'Usage: dgfbrute.py <option> <repetition>'
print ''
print ' OPTIONS:'
print ' 1 = a-z'
print ' 2 = A-Z'
print ' 4 = 0-9'
print ' 8 = space'
print ''
print ' To make the combinations, you should add the numbers <options> you want to combine'
print ''
print ' Ex:'
print ' For the combination of a-z and A-Z calculate the numbers of options chosen'
print ' 1 + 2 = 3 for a-z and A-Z'
print ' 2 + 4 = 6 for A-Z and 0-9'
print ''
print ' For all possible combinations choose the number 15'
print ''
print ''
print ' REPETITION:'
print ''
print ' Repetition is the number of columns'
print ' Ex:'
print ' $ python dgfbrute.py 4 2'
print ' 0'
print ' 00'
print ' 01'
print ' 02'
print ' 03'
print ' 04'
print ' 05'
print ' 06'
print ' 07'
print ' 08'
print ' 09'
print ' 10'
print ' 11'
print ' 12'
print ' 13'
print ' 14'
print ' 15'
print ' .'
print ' .'
print ' .'
print ' '
print 'CREATED BY: Douglas Giorgio Fim '
print ''

## Definição das variaveis
# VALOR: 1
letra1 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
# VALOR: 2
letra2 = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
# VALOR: 4
letra3 = ['0','1','2','3','4','5','6','7','8','9']
# VALOR: 8
letra4 = [' ']

caractere=['']
volta=1
programa=(sys.argv)

# Verifica a existencia da <option> e <repetition>
if sys.argv == ['dgfbrute.py']:
manual()
sys.exit()
else:
try:
tipo=int(sys.argv[1])
try:
argumento=int(sys.argv[2])
try:
repeticao=int(sys.argv[3])
except:
sys.exit()
except:
sys.exit()
except:
print 'Wrong Parameter'
sys.exit()

# E aqui onde faz as combinações
def funcao(arg1,arg2):
ANTERIOR=arg1
TOTAL=arg2
TOTAL=TOTAL-1
for num in range(volta):
for LETRA in caractere[num]:
MOSTRA=ANTERIOR+LETRA
print MOSTRA
if (TOTAL != 0):
funcao(MOSTRA,TOTAL) # E aqui a chamada da recursividade
# E aqui onde verifica as <options>
if argumento <= 15:
if argumento == 15:
caractere=letra1+letra2+letra3+letra4
volta=63
else:
if argumento >= 8:
caractere=letra4+caractere
volta=volta+1
argumento=argumento-8
if argumento >= 4:
caractere=letra3+caractere
volta=volta+10
argumento=argumento-4
if argumento >= 2:
caractere=letra2+caractere
volta=volta+26
argumento=argumento-2
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
if argumento >= 2:
caractere=letra2+caractere
volta=volta+26
argumento=argumento-2
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
if argumento >= 4:
caractere=letra3+caractere
volta=volta+10
argumento=argumento-4
if argumento >= 2:
caractere=letra2+caractere
volta=volta+26
argumento=argumento-2
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
if argumento >= 2:
caractere=letra2+caractere
volta=volta+26
argumento=argumento-2
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
if argumento == 1:
caractere=letra1+caractere
volta=volta+26
else:
print 'Invalid <option> number'

# Chama a função 'funcao' com os valores <repetition>
if tipo == 0:
if repeticao != 0:
funcao("",repeticao)
elif tipo == 1:
product(caractere, repeat=repeticao)
else:
print 'Invalid <type> number'

=========================================================

um pouco grandinho e é meiu dificil entender logo de cara, tao vo colcoar dnovo mas soh a parte que queria saber bem resumido


==========================================

caractere = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

repeticao=2

product(caractere, repeat=repeticao)

=======================================

nesse caso seria p fazer combinações de a-z


  


2. atualização

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/03/2010 - 19:43h

import sys
import itertools

caractere = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

repeticao=2

for i in itertools.product(caractere, repeat=repeticao):
print(i)

========================================

pelo menos agr está mostrando um resultado

mas é algo assim

.
.
.
.
.
('i', 'o')
('i', 'p')
('i', 'q')
('i', 'r')
('i', 's')
('i', 't')
('i', 'u')
('i', 'v')
('i', 'w')
('i', 'x')
('i', 'y')
('i', 'z')
('j', 'a')
.
.
.
.
.

como tira os parenteses e as aspas e deixar somente a combinação??


3. RESOLVIDO

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/03/2010 - 20:31h

import sys
from itertools import product

caractere = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

repeticao=2

for i in itertools.product(caractere, repeat=repeticao):
print ''.join(i)

=============================================

nao sei como o join funciona, mas resolveu

vi esse exemplo aki

http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=16732&start=0

flw






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts