[PYTHON] Menu opciones ¿Con funciones es lo correcto?

Iniciado por Yidu, 28 Marzo 2013, 18:42 PM

0 Miembros y 3 Visitantes están viendo este tema.

Yidu

Cita de: 0x5d en 30 Marzo 2013, 01:56 AM
Pues es porque las variables num1 y num2 que pides los datos no son accesibles desde otro def, pues no son globales... Y usa input() no int(raw_input())

Creo que no leíste nada de lo que escribí más arriba u_u

Saludos, Javier.

Si que he leído lo que has escrito. Pero es normal que tenga dudas. En todo caso, siempre recomiendan usar los menos posible el input. Yo utilizo la versión 2.7.3. Dicen, que usando el input se puede liar un follón. Osea, código malicioso y tal. Yo intento aprender con lo que leo en los manuales o tutoriales.

Un saludo!

daryo

#11
corregido :
si te fijas solo cambie dos lineas de codigo del programa asi que vas por buen camino
si no entiendes lee algo sobre listas  ;D

el return no les da nombre el a las variables num1 y num2 eso es algo que uno se lo da luego

siempre que retornes un valor de una funcion guardalo en una variable (o lista que es un conjunto de variables)
Código (python) [Seleccionar]

def cinconum():
return 5

cinco=cinconum()


claro esto a menos que quieras imprimir directamente la funcion

Código (python) [Seleccionar]

def cinconum():
return 5

print cinconum()


Código (python) [Seleccionar]

def escojo ():
   num1 = int (raw_input ('> Dime el primer numero: '))
   num2 = int (raw_input ('> Dime el segundo numero: '))
   return num1,num2

def suma (a,b):
   return a + b
def opcion():
   opc = int(raw_input ('Escoge una opcion "q" salir'))
   if opc == 1:
       numeros=escojo()
       print suma(numeros[0],numeros[1])

def menu():
   print '''Menu\n
   1. Suma
   2. Resta
   3. Multiplicacion
   4. Division
   Q. Salir'''
while 1:
menu()
opcion()



PD:no te preocupes por la seguridad del code hasta mas adelante diria yo... ademas de eso piensa en input y raw_input como funciones...
buenas

Yidu

#12
Muchas gracias daryo. Como se nota que para ti es coser y cantar. Pero al principio, esto de las funciones, se me atraganta un poco. Como bien recomienda todo el mundo...practicar y practicar. Ya veremos cuando llegue a la POO   :silbar:

Me estudiaré bien tu modificación al código que posteé. Es mas o menos lo que quería hacer. Me ha gustado el tema de incluir dentro de la función [suma] los indices a que hacen referencia la variable [numeros]. Es decir, la variable se transforma en parámetro.

Cuando tenga la calculadora pondré en este post. Un saludo!

EDITO:

Código (python) [Seleccionar]
def escojo ():
    num1 = int (raw_input ('> Dime el primer numero: '))
    num2 = int (raw_input ('> Dime el segundo numero: '))
    return num1,num2


Ah...! , ya lo entiendo.

Cuando ejecutamos la función escojo(), esta, nos devuelve una tupla. Es por este motivo que podemos recurrir a sus indices ¡Muy bueno! Supongo que esto luego se puede modificar. Es decir, que esta tupla que nos devuelve el return se puede convertir en objeto list o lo que se nos ocurra.

Yidu

Pues ahora me ha surgido una duda. Es decir, que le veo lagunas al tema de las funciones dentro del bucle while.

Como dentro del while está la función opcion(), no me deja salir de ella. Osea, si escojo la opción Q del menu (que es salir), se me repite el bucle. Por lo tanto, hay algo que se me escapa...

0x5d

Cita de: Yidu en 30 Marzo 2013, 11:13 AM
Si que he leído lo que has escrito. Pero es normal que tenga dudas. En todo caso, siempre recomiendan usar los menos posible el input. Yo utilizo la versión 2.7.3. Dicen, que usando el input se puede liar un follón. Osea, código malicioso y tal. Yo intento aprender con lo que leo en los manuales o tutoriales.

Un saludo!
Usar input() es más limpio que utilizar int(raw_input()) y es igual que usar input() , de una manera más sucia.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !