Python - Dada una palabra probar combinaciones de caracteres hasta encontrarla

 
Vista:

Dada una palabra probar combinaciones de caracteres hasta encontrarla

Publicado por Víctor (2 intervenciones) el 13/07/2012 18:14:25
Hola gente! soy nuevo en este foro, y parece muy interesante..
El caso es que estoy probando la librería random en Python, y quiero encontrar la forma de que dada una palabra ingresada por el usuario, el programa busque combinaciones aleatorias de palabras hasta encontrar una que coincida.. Por lo visto mi programita realiza las combinaciones y las va mostrando, pero el problema es que no termina nunca, y sé que está andando mal porque si la palabra que yo le ingreso es solo la letra "a".. Debería encontrarla en segundos y nunca termina..

El código es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import string
import random
import sys
 
 
palabra = str(raw_input("Ingrese una palabra: "))
tam = len(palabra)
caracter = ''
car = {}
 
 
while True:
	if palabra != caracter:
		for i in range (0, tam-1):
			car[i] = random.choice(string.letters)
			caracter = caracter + car[i]
 
		print caracter
	else:
		print "Se encontro"
		print caracter
		os.system("pause")
		sn = int(raw_input("ingrese 0 para salir"))
		if sn == 0:
			sys.exit(1)

Que puede estar mal?
Un saludo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Dada una palabra probar combinaciones de caracteres hasta encontrarla

Publicado por xve (1646 intervenciones) el 23/11/2012 09:18:41
Hola Victor, he probado tu código y he visto algunos errores... te adjunto el código que funciona correctamente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import string
import random
import sys,os
 
palabra = str(raw_input("Ingrese una palabra: "))
tam = len(palabra)
caracter = ''
car = {}
contador=0
 
while True:
    if palabra != caracter:
        caracter=""
        contador+=1
        for i in range (0, tam):
            caracter += random.choice(string.letters)
 
        print caracter+"\n"
    else:
        print "Se encontro %s en %s veces" % (caracter,contador)
        sys.exit(1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar