Python - pregunta novata sobre funciones

   
Vista:
Imágen de perfil de delfin

pregunta novata sobre funciones

Publicado por delfin (4 intervenciones) el 02/12/2015 17:39:12
Hola!
aprendiendo a programar y tengo una duda sobre funciones

como puedo hacer para utilizar un valor de retorno de una funcion para utilizarla como argumento en otra?
este es elejercicio que estoy haciendo. Quisiera en la ultima parte, en la funcion segundosxhoras, utilizar el retorno de la funcion calculo.
Pero de esta manera la funcion vuelve a ser llamada y no necesito eso. Muchas gracias


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
26
27
28
29
print "introduzca a continuacion los datos de llamadas"
 
def totalsegundos (ho,mi,se):
	ts= ho*3600 + mi*60 + se
	return ts
 
def calculo ():
	qcom= input ("cantidad de comunicaciones?")
	txs= input ("tarifa por segundo?")
	for x in range (qcom):
		h= input ("horas: ")
		m= input("minutos: ")
		s= input("segundos: ")
		calculosegundos = totalsegundos (h,m,s)
 
		calculoporsegundo = calculosegundos * txs
		print "duracion" , calculosegundos, "segundos. Costo " , calculoporsegundo,"$"
	tfacturado= qcom * calculoporsegundo
	return tfacturado
	print tfacturado
 
print calculo ()
 
segundosxhoras = calculo
def segundosxhoras (x):
	hs =x /3600
	ms = (x %3600) / 60  #modulo 
	ss = (x / 3600) % 60
	print(hs, ms, ss)
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

pregunta novata sobre funciones

Publicado por xve (1229 intervenciones) el 02/12/2015 20:45:21
Hola Delfin, prueba así:

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
26
27
28
print "introduzca a continuacion los datos de llamadas"
 
def totalsegundos (ho,mi,se):
	ts= ho*3600 + mi*60 + se
	return ts
 
def calculo ():
	qcom= input ("cantidad de comunicaciones?")
	txs= input ("tarifa por segundo?")
	for x in range (qcom):
		h= input ("horas: ")
		m= input("minutos: ")
		s= input("segundos: ")
		calculosegundos = totalsegundos (h,m,s)
 
		calculoporsegundo = calculosegundos * txs
		print "duracion" , calculosegundos, "segundos. Costo " , calculoporsegundo,"$"
	tfacturado= qcom * calculoporsegundo
	return tfacturado
 
def segundosxhoras (x):
	hs =x /3600
	ms = (x %3600) / 60  #modulo 
	ss = (x / 3600) % 60
	print(hs, ms, ss)
 
resultado=calculo()
segundosxhoras(resultado)

Te funciona?
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

pregunta novata sobre funciones

Publicado por Pablo (5 intervenciones) el 02/12/2015 23:53:10
Hola, no se si entendi bien tu pregunta, pero ¿te serviría quizas creando una variable fuera de las funciones (en tu caso seria "ts") y luego utilizarla como variable global en las funciones que desees?. Me refiero a esta manera:

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
26
27
28
29
30
31
32
print "introduzca a continuacion los datos de llamadas"
 
ts = 0
 
def totalsegundos (ho,mi,se):
        global ts
	ts= ho*3600 + mi*60 + se
	return ts
 
def calculo ():
	qcom= input ("cantidad de comunicaciones?")
	txs= input ("tarifa por segundo?")
	for x in range (qcom):
		h= input ("horas: ")
		m= input("minutos: ")
		s= input("segundos: ")
		calculosegundos = totalsegundos (h,m,s)
 
		calculoporsegundo = calculosegundos * txs
		print "duracion" , calculosegundos, "segundos. Costo " , calculoporsegundo,"$"
	tfacturado= qcom * calculoporsegundo
	return tfacturado
	print tfacturado
 
print calculo ()
 
segundosxhoras = calculo
def segundosxhoras (x):
	hs =x /3600
	ms = (x %3600) / 60  #modulo 
	ss = (x / 3600) % 60
	print(hs, ms, ss)

De esta forma, modificas el valor de ts y puedes llamarla luego en otra funcion, usando nuevamente "global".
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