Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Canariolp21 en 30 Noviembre 2010, 08:22 am



Título: Imprimir valor de una funcion en python
Publicado por: Canariolp21 en 30 Noviembre 2010, 08:22 am
Buenos dias:

Tengo un problema a ver si alguien puede ayudarme.

El ejercicio es el siguiente:

Define una función llamada area_circulo que, a partir del radio de un círculo, devuelva el valor de su área. Utiliza el valor 3.1416 como aproximación de PI o importa el valor de que encontrarás en el módulo math. (Recuerda que el área de un círculo es PI r2.).

El ejercicio ya lo tengo echo, pero lo que quiero es dividirlo en 2 funciones, una en la que ingrese los datos y la otra en la que se calcule. De momento lo tengo de esta manera:
Código:
# Importar librerias del sistema
import os
from math import pi

# Declarar variables e inicializarlas
sistema = (os.name)

if sistema=="nt":
    os.system("cls")
else:
    os.system("clear")

#Pedir los datos para ejecutar el programa
def pedida_datos():
    while True:
        try:
            radio=float(raw_input('Introduce el radio del circulo para calcular su area: '))
            if radio<0:
                print 'Debe introducir un numero positivo'
            else:
                return
           
        except ValueError:
            print "Debe introducir un numero entero o decimal."
    return

# Definición de la funcion del cálculo del área
def area_circulo():
    pi*(radio**2)
    print 'El radio es de',radio
    return

#Llamada a las funciones e impresión del resultado
pedida_datos()
area_circulo()
#print 'El area del circulo es de',area_circulo(radio)
raw_input()
print 'Fin del programa'
quit()

El problema que se puede ver en el codigo es que en el apartado de llamada a las funciones, vemos como ejecuta correctamente pedida_datos, pero no me guarda la variable radio, que la necesito usar para la funcion area_circulo.

No se si hay alguna manera de hacerlo, si alguien tiene idea que me diga algo.

Gracias de antemano a todos.


Título: Re: Imprimir valor de una funcion en python
Publicado por: Dnk! en 30 Noviembre 2010, 11:21 am
Creo tener entendido, no me hagas demasiado caso, que para guardar tipos numericos se utiliza input en vez de raw_input. Has probado con eso?

xDnk!


Título: Re: Imprimir valor de una funcion en python
Publicado por: Novlucker en 30 Noviembre 2010, 12:28 pm
Eso es porque tienes la variable radio declarada como local (dentro de la función), y los return estan vacíos.

Código
  1. def suma(a,b):
  2.    c = a+b
  3.    return c

Saludos


Título: Re: Imprimir valor de una funcion en python
Publicado por: Dnk! en 30 Noviembre 2010, 12:39 pm
Encontre el problema:

Aqui te dejo la solucion:

Código
  1. # Importar librerias del sistema
  2. import os
  3. from math import pi
  4.  
  5. # Declarar variables e inicializarlas
  6. sistema = (os.name)
  7. radio = 0.0
  8. if sistema=="nt":
  9.    os.system("cls")
  10. else:
  11.    os.system("clear")
  12.  
  13. #Pedir los datos para ejecutar el programa
  14. def pedida_datos():
  15.    while True:
  16.        try:
  17.            radio=float(input('Introduce el radio del circulo para calcular su area: '))
  18.            if radio<0:
  19.                print 'Debe introducir un numero positivo'
  20.            else:
  21.                return radio  
  22.        except ValueError:
  23.            print "Debe introducir un numero entero o decimal."
  24.  
  25. # Definición de la funcion del cálculo del área
  26. def area_circulo(radio):
  27.    radio = pi*(radio**2)
  28.    return radio
  29.  
  30. #Llamada a las funciones e impresión del resultado
  31.  
  32.  
  33. radio = pedida_datos()
  34. print 'radio:',area_circulo(radio)
  35. raw_input()
  36. print 'Fin del programa'
  37. quit()
  38.  
  39.  

El problema es el comentado por Novlucker


Título: Re: Imprimir valor de una funcion en python
Publicado por: Canariolp21 en 30 Noviembre 2010, 16:48 pm
Efectivamente, gracias a todos.

El programa lo tenia casi terminado, pero como me habéis indicado el problema era la devolución de la variable.

Gracias, para la proxima ya se que es lo que tengo que hacer.

Muchas gracias a todos.