Python - Módulos y variables.

 
Vista:
sin imagen de perfil
Val: 34
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Módulos y variables.

Publicado por diego (19 intervenciones) el 17/04/2020 08:29:09
Ante todo gracias a todos por vuestra ayuda.
Estoy haciendo un pequeño programa creados con módulos pero tengo un problema cuando llamo a una función
de un determinado módulo me ejecuta el módulo entero y no la función que he llamado:
modulo hectareas.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
tamanoParcela = 0
 
def hectarea():
 
    while(True):
        try:
            global tamanoParcela
            tamanoParcela = float(input('Introduzca el tamaño en hectareas: '))
            print(f'el tamaño de la parcela es: {tamanoParcela}')
 
            break#debemos interrumpir la iteración si todo ha salido bien
 
        except:
            print('ha ocurrido introduce un número')
hectarea()
def resultados():
    print(f'el tamaño de la parcelas es : {tamanoParcela}')
 
resultados()

módulo info_cultivos.py:

1
2
3
4
5
from hectareas import resultados
pregunta = input('que desa simular asignar cultivos (a) o paso de días (b) :' )
if pregunta == 'a':
 
    resultados()


Adjunto los archivos y de nuevo muchas gracias.
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Módulos y variables.

Publicado por tincopasan (1082 intervenciones) el 17/04/2020 10:26:58
hola:
fijate que después del except está el print y estás llamando a hectarea(), probá comentándola:
1
 #hectarea()
y comentá si es ese tu problema.

igual en el módulo deberías usar:
1
2
3
if __name__=="__main__":   #buscá info sobre esto sino me entendés.
    hectarea()
    resultados()
o sea poniendo las funciones que quieras y no se ejecutarán solas si las invocas desde el archivo info_cultivos, solo lo harán si ejecutas hectareas como principal.

Saludos
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: 34
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Módulos y variables.

Publicado por diego (19 intervenciones) el 17/04/2020 12:03:25
hola ante todo muchas muchas gracias.

1
2
3
if __name__=="__main__":   #buscá info sobre esto sino me entendés.
    hectarea()
    resultados()

esto está en la función hectareas al final .

cuando ejecuto el otro script solo me hace la función resultados pero siempre me dice que el número de hectareas es cero, es decir , no me guarda la variable.
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: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Módulos y variables.

Publicado por tincopasan (1082 intervenciones) el 17/04/2020 12:22:32
la verdad no entiendo que estás haciendo y se ve que no entendés lo que te digo, de la forma simple :

hectareas.py #módulo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
tamanoParcela = 0
 
def hectarea():
 
    while(True):
        try:
            global tamanoParcela
            tamanoParcela = float(input('Introduzca el tamaño en hectareas: '))
            print(f'el tamaño de la parcela es: {tamanoParcela}')
 
            break#debemos interrumpir la iteración si todo ha salido bien
 
        except:
            print('ha ocurrido introduce un número')
 
def resultados():
    print(f'el tamaño de la parcelas es : {tamanoParcela}')

info_cultivos.py: no es un módulo es el main
1
2
3
4
5
from hectareas import resultados,hectarea
pregunta = input('que desa simular asignar cultivos (a) o paso de días (b) :' )
if pregunta == 'a':
    hectarea()
    resultados()    #no sé para que si ya lo hace hectarea

sino llamás a hectarea obvio que te va devolver 0 , en todo caso también se puede

1
2
3
def resultados():
    hectarea()
    print(f'el tamaño de la parcelas es : {tamanoParcela}')

pero en donde sea hay que llamar a hectarea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 34
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Módulos y variables.

Publicado por diego (19 intervenciones) el 17/04/2020 12:33:08
perdona de nuevo , a ver si me puedo explicar, necesito trasladar ese dato a un archivo a parte.y me sale el tamaño =0
Disculpas y gracias
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: 34
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Módulos y variables.

Publicado por diego (19 intervenciones) el 17/04/2020 14:23:57
Está claro que es el scope de las variables, pero yo pensaba que al llevarme la función no tendría ese problema
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