Código generador discurso (python) sin repeticion

Iniciado por sergiolo428, 16 Enero 2019, 22:51 PM

0 Miembros y 1 Visitante están viendo este tema.

sergiolo428

[Deleted]

Guarrino

#1
Esto te puede servir:

http://www.mclibre.org/consultar/python/lecciones/python-biblioteca-random.html

Código (python) [Seleccionar]
from random import choice

print(choice((9, 5, 2, 15.......))) 


No sé si es justamente lo que quieres, alomejor quieres reproducir luego lo que antes an elegido?

sergiolo428

#2
[Deleted]

Guarrino

Esta noche si puedo te lo paso. Estoy aprendiendo igual que tú y me voy a entretener. Lo hice correr y no se trata solo de ese fallo.

- Si introduces .append  mejor  importar os
- No sé si estás identando bien.


No llegó a entender cómo lo haces o que quieres hacer. Si tú ya escribiste las frases, porque haces un archivo de texto?

Porque no introduces las frases en un archivo de texto y las lees llamandolas desde tu programa? Luego las llamarías por líneas y el generador sería utilizar random y hacer un mayor que 15, y menor que 30.

En tu código directamente no se puede leer ninguna frase, ya que no están dentro de una lista.



sergiolo428

#4
[Deleted]

Serapis

#5
Es muy sencillo...

tienes 15 frases en 4 partes...

Se trata simplemente de tomar un indice en cada array de parte al azar entre los no elegidos aún, que es el que se toma...
y un índice para todas que al comienzo apunta al último, éste se va reduciendo con cada llamada.
Cada vez que se eleige un texto, este se remplaza por el del final, y el final se reduce en 1... cuando solo queda el 0, este se toma si o sí, luego el final vuelve a ser el 14.
como los valores se eligen al azar, se van deositando (cada array), tambien al azar al final, por lo que siempre estarán constantemente barajados...

El pseudocódigo para esto es muy simple...

entero max= 14

string = funcion Generarfrase
   string f
 
   f = TomarParte(Array1, max)
   f =f + TomarParte(Array2, max)
   f =f + TomarParte(Array3, max)
   f = f+ TomarParte(Array4, max)
   
    max = (max -1)
   si max= -1 luego max = 14
 
   devolver f
fin funcion

string = Funcion TomarParte(array de string ArrayX, entero  max)
    entero x
    string tmp

   // elegir un índice al azar entre 0 y los restantes disponibles.
   x=random entre 0 y max
   // remplezar el elegido por el último disponible (en este momento)
   tmp = ArrayX(x)
   ArrayX(x) = ArrayX(max)
   ArrayX(max) = tmp
   
   devolver tmp
fin funcion

sergiolo428

#6
[Deleted]

MCKSys Argentina

Cita de: sergiolo428 en 19 Enero 2019, 20:11 PM
Tampoco quiero pedir el codigo, pero no lo entiendo muy bien con el "pseudocódigo" (otra expresión que nunca he escuchado).

Hola!

No te ofendas, pero lo que dices demuestra que desconoces lo básico de la programación. La noción de pseudocódigo es una de las primeras cosas que aprendes antes de lanzarte a programar.

Te dejo lo que es el pseudocódigo: https://es.wikipedia.org/wiki/Pseudoc%C3%B3digo

De ahí, deberías también leer los enlaces relacionados (por ej., algoritmo).

Seguro que luego de leer eso, tendrás una mejor vista del panorama.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Serapis

#8
Hum Sergiolo428... entonces tienes que estudiar un poquito más... paciencia.

p.d.:perdón me había comido una r en tu alias.

sergiolo428

#9
[Deleted]