Python - ejecutar funciones aleatoriamente

 
Vista:
sin imagen de perfil

ejecutar funciones aleatoriamente

Publicado por daniel (4 intervenciones) el 15/12/2017 00:16:30
hola tengo conocimiento basico python y tengo problemas con este scrip

1
2
3
4
5
6
7
8
9
10
11
12
13
import random
 
funciones = [ 'funcion1()', 'funcion2()', 'funcion3()' ]
print(random.choice(funciones))
 
def funcion1():
    print('#1')
 
def funcion2():
    print('#2')
 
def funcion3():
    print('#3')

quiero que me ejecute cualquiera de las 3 funciones aleatoriamente la funcion random funciona pero no me ejecuta las funciones solo me imprime en pantalla funcion1() funcion2() o funcion3() aleatoriamente pero la funcion que imprime no se ejecuta, alguna idea
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 Jesus
Val: 6
Ha disminuido su posición en 20 puestos en Python (en relación al último mes)
Gráfica de Python

ejecutar funciones aleatoriamente

Publicado por Jesus (4 intervenciones) el 15/12/2017 00:43:39
Hola Daniel, según he leído tú código el error es muy simple. Como podrás observar en la linea 3 de tu código creaste una lista que contiene solo cadenas de texto recuerda que las comillas ' ' y " " son comprendidas como cadenas, entonces cuando llamas a la función choice solo te devolverá lo que este dentro de la lista.

Una pista para la solución seria que uses estructuras condicionales.
Si, requieres ayuda no dudes en preguntar.
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
sin imagen de perfil

ejecutar funciones aleatoriamente

Publicado por daniel (4 intervenciones) el 15/12/2017 12:07:59
hola jesus gracias por tu respuesta efectivamente ya habia pensado eso y realise el siguiente codigo
1
2
3
4
5
6
7
8
9
10
import random
 
funciones = [ 'funcion1()', 'funcion2()', 'funcion3()' ]
print(random.choice(funciones))
 
if random.choice == 'funcion1()': #primera opcion que se me ocurrio
    print funcion1()
 
if funciones == 'funcion1()': #segunda opcion que se me ocurrio
   print funcion1()

use la condicion if para que verifique si la cadena saliente es funcion1() o cualquiera de las otras pero igual me imprime pero no ejecuta se que me falta algo no se si usar el modulo .sys te aclaro algo estoy aprendiendo python a traves de cursos pdf y por logica hay no te especifican esas cosas y tampoco puedes preguntar esas dudas por lo cual recurro aqui, tengo la cabaza llena de ideas pero no se muy bien como hacer que funcionen agradeceria en lo que me pudieran ayudar
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
sin imagen de perfil
Val: 106
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

ejecutar funciones aleatoriamente

Publicado por Jonay Zevenzui (14 intervenciones) el 15/12/2017 14:46:51
1
2
3
4
5
6
7
8
9
10
import random
 def funcion1():
    return ('#1')
 def funcion2():
    return ('#2')
 def funcion3():
    return ('#3')
 
funciones = (funcion1(), funcion2(), funcion3())
print(random.choice(funciones))

Las funciones deben estar definidas antes de poder llamarlas, con lo que es lo primero que debe aparecer. Luego si utilizas el método print dentro de la función, a la hora de llamar a la función cuando defines la variable funciones, directamente se ejecuta he imprime lo que tenga especificado, por eso he puesto un return. Un saludo
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
sin imagen de perfil

ejecutar funciones aleatoriamente

Publicado por daniel (4 intervenciones) el 16/12/2017 00:03:22
ok ok gracias tenia tiempo con este problema, cierto lo que dices no puedo pretender llamar a alguien por su nombre si no se su nombre primero graciasssss, leccion aprendida las funciones van de primero.
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