elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] - Menú con While.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] - Menú con While.  (Leído 21,610 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: [Python] - Menú con While.
« Respuesta #20 en: 16 Octubre 2010, 17:00 pm »

Esta función no me funciona.

Código
  1. #
  2. angulo  = (180 / pi) * acos * (x1 * x2 + y1 * y2 + z1 * z2) / (sqrt(x1**2 + y1**2 + z1**2) * sqrt(x2**2 + y2**2 + z2**2))
  3. #
  4.            print angulo

¿Por qué?


En línea

.:WindHack:.

Desconectado Desconectado

Mensajes: 167

Prisionero de mi propia mente...


Ver Perfil WWW
Re: [Python] - Menú con While.
« Respuesta #21 en: 16 Octubre 2010, 21:13 pm »

Para que el programa retorne al menú debes de organizar éstas líneas al igual que la indentación:

Código
  1. opcion = '' #Esta linea no es necesaria, ya que mas adelante especificas todo en el raw_input()...
  2. while opcion < 'a' or opcion > 'i': #Crea un bucle infinito para el menu y no hagas referencia a susodicha variable...
  3.    print '''Selecciona una opción:
  4.            a) Introducir el primer vector.
  5.            b) Introducir el segundo vector.
  6.            c) Calcular la suma.
  7.            d) Calcular la diferencia.
  8.            e) Calcular el producto escalar.
  9.            f) Calcular el producto vectorial.
  10.            g) Calcular el ángulo (en gastos) entre ellos.
  11.            h) Calcular la longitud.
  12.            i) Finalizar. '''
  13.  
  14.    opcion = raw_input('Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: ')
  15.  
  16. # Modifica la indentacion para acomodarla al bucle.
  17. if  opcion == 'a':

Algo así es a lo que me refiero:

Código
  1. while True: #Bucle infinito del menu...
  2.    print '''Selecciona una opción:
  3.            a) Introducir el primer vector.
  4.            b) Introducir el segundo vector.
  5.            c) Calcular la suma.
  6.            d) Calcular la diferencia.
  7.            e) Calcular el producto escalar.
  8.            f) Calcular el producto vectorial.
  9.            g) Calcular el ángulo (en gastos) entre ellos.
  10.            h) Calcular la longitud.
  11.            i) Finalizar. '''
  12.  
  13.    opcion = raw_input('Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: ')
  14.  
  15. # Indentacion perteneciente al bucle.
  16.    if  opcion == 'a':
  17. #  [... Code ... ]
  18.    elif opcion == 'i':
  19.        print 'Sólo hay sietes opciones: a, b, c, d, e, f o g. Usted has tecleado', opcion
  20.        print 'Gracias por usar el programa.'
  21.        exit() #Para salir
  22.  

También recuerda que dispones del else cuando usas: if-elif-else



En línea

Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com

"The only thing they can't take from us are our minds."
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: [Python] - Menú con While.
« Respuesta #22 en: 17 Octubre 2010, 07:02 am »

He hecho algunas modificaciones.

Código
  1. from math import acos, pi, sqrt
  2.  
  3.  
  4.  
  5. opcion = ''
  6. while opcion < 'a' or opcion > 'i':
  7. #while opcion in 'abcdefghi':
  8.    print '''Selecciona una opci&#243;n:
  9.            a) Introducir el primer vector.
  10.            b) Introducir el segundo vector.
  11.            c) Calcular la suma.
  12.            d) Calcular la diferencia.
  13.            e) Calcular el producto escalar.
  14.            f) Calcular el producto vectorial.
  15.            g) Calcular el &#225;ngulo (en gastos) entre ellos.
  16.            h) Calcular la longitud.
  17.            i) Finalizar. '''
  18.  
  19.    opcion = raw_input('Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: ')
  20.  
  21. # Primer vector.
  22. if  opcion == 'a':
  23.    x1 = float(raw_input('Introduce valor x1: '))
  24.    y1 = float(raw_input('Introduce valor y1: '))
  25.    z1 = float(raw_input('Introduce valor z1: '))
  26.    print 'Haz ingresado estos valores', x1, y1, z1, 'del primer vector.'
  27.  
  28. # Segundo vector.
  29. elif opcion == 'b':
  30.    x2 = float(raw_input('Introduce valor x2: '))
  31.    y2 = float(raw_input('Introduce valor y2: '))
  32.    z2 = float(raw_input('Introduce valor z2: '))
  33.    print 'Haz ingresado estos valores', x2, y2, z2, 'del segundo vector.'
  34.  
  35. # Suma.
  36. elif opcion == 'c':
  37.  
  38.        suma = (x1 + x2, y1 + y2, z1 + z2)
  39.        print suma
  40.  
  41. # Diferencia.
  42. elif opcion == 'd':
  43.  
  44.        diferencia = (x1 - x2, y1 - y2, z1 - z2)
  45.        print diferencia
  46.  
  47. # Producto escalar.
  48. elif opcion == 'e':
  49.  
  50.        producto = (x1 * x2 + y1 * y2 + z1 * z2)
  51.        print producto
  52.  
  53. # Producto vectorial.
  54. elif opcion == 'f':
  55.  
  56.        vectorial = (y1 * z2 - z1 * y2, z1 * x2 - x1 * z2, x1 * y2 - y1 * x2)
  57.        print vectorial
  58.  
  59. # &#193;ngulo.
  60. elif opcion == 'g':
  61.        angulo  = (180 / pi) * acos * (x1 * x2 + y1 * y2 + z1 * z2) / (sqrt(x1**2 + y1**2 + z1**2) * sqrt(x2**2 + y2**2 + z2**2))
  62.        print angulo
  63.  
  64. # Longitud.
  65. elif opcion == 'h':
  66.  
  67.        x = float(raw_input('Introduce valor x: '))
  68.        y = float(raw_input('Introduce valor y: '))
  69.        z = float(raw_input('Introduce valor z: '))
  70.  
  71.        longitud = sqrt(x**2+y**2+z**2)
  72.        print longitud
  73.  
  74. elif opcion == 'i':
  75.        print 'Gracias por usar el programa.'
  76.  
  77. else:
  78.        print 'Puedes teclear estas siguientes opciones: a, b, c, d, e, f, g, h o i. Usted haz tecleado', opcion
  79.  
  80.  

Me da error técnico. Si pulsto la opción a), puedo rellenar los datos pero no puedo volver al menú automaticamente. Es como si el programa acabó.

Con este otro código me funciona algo mejor. he cambiado lo del while por otro, pero prefiero el de tu forma que esta.

Código
  1. # encoding: utf-8
  2.  
  3. from math import acos, pi, sqrt
  4.  
  5. opcion = ''
  6. #while opcion < 'a' or opcion > 'i':
  7. while opcion in 'abcdefghi':
  8.    print '''Selecciona una opci&#243;n:
  9.            a) Introducir el primer vector.
  10.            b) Introducir el segundo vector.
  11.            c) Calcular la suma.
  12.            d) Calcular la diferencia.
  13.            e) Calcular el producto escalar.
  14.            f) Calcular el producto vectorial.
  15.            g) Calcular el &#225;ngulo (en gastos) entre ellos.
  16.            h) Calcular la longitud.
  17.            i) Finalizar. '''
  18.  
  19.    opcion = raw_input('Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: ')
  20.  
  21.    # Primer vector.
  22.    if  opcion == 'a':
  23.        x1 = float(raw_input('Introduce valor x1: '))
  24.        y1 = float(raw_input('Introduce valor y1: '))
  25.        z1 = float(raw_input('Introduce valor z1: '))
  26.        print 'Haz ingresado estos valores', x1, y1, z1, 'del primer vector.'
  27.  
  28.    # Segundo vector.
  29.    elif opcion == 'b':
  30.        x2 = float(raw_input('Introduce valor x2: '))
  31.        y2 = float(raw_input('Introduce valor y2: '))
  32.        z2 = float(raw_input('Introduce valor z2: '))
  33.        print 'Haz ingresado estos valores', x2, y2, z2, 'del segundo vector.'
  34.  
  35.    # Suma.
  36.    elif opcion == 'c':
  37.  
  38.            suma = (x1 + x2, y1 + y2, z1 + z2)
  39.            print suma
  40.  
  41.    # Diferencia.
  42.    elif opcion == 'd':
  43.  
  44.            diferencia = (x1 - x2, y1 - y2, z1 - z2)
  45.            print diferencia
  46.  
  47.    # Producto escalar.
  48.    elif opcion == 'e':
  49.  
  50.            producto = (x1 * x2 + y1 * y2 + z1 * z2)
  51.            print producto
  52.  
  53.     # Producto vectorial.
  54.    elif opcion == 'f':
  55.  
  56.            vectorial = (y1 * z2 - z1 * y2, z1 * x2 - x1 * z2, x1 * y2 - y1 * x2)
  57.            print vectorial
  58.  
  59.    # &#193;ngulo.
  60.    elif opcion == 'g':
  61.            angulo  = (180 / pi) * acos * (x1 * x2 + y1 * y2 + z1 * z2) / (sqrt(x1**2 + y1**2 + z1**2) * sqrt(x2**2 + y2**2 + z2**2))
  62.            print angulo
  63.  
  64.    # Longitud.
  65.    elif opcion == 'h':
  66.  
  67.            x = float(raw_input('Introduce valor x: '))
  68.            y = float(raw_input('Introduce valor y: '))
  69.            z = float(raw_input('Introduce valor z: '))
  70.  
  71.            longitud = sqrt(x**2+y**2+z**2)
  72.            print longitud
  73.  
  74.    elif opcion == 'i':
  75.            print 'Gracias por usar el programa.'
  76.  
  77.    else:
  78.            print 'Puedes teclear estas siguientes opciones: a, b, c, d, e, f, g, h o i. Usted haz tecleado', opcion

Un error que me tiene harto es al pulsar el modo g).

Código:
Traceback (most recent call last):
  File "/home/user/NetBeansProjects/kam/src/kam.py", line 90, in <module>
    angulo  = (180 / pi) * acos * (x1 * x2 + y1 * y2 + z1 * z2) / (sqrt(x1**2 + y1**2 + z1**2) * sqrt(x2**2 + y2**2 + z2**2))
TypeError: unsupported operand type(s) for *: 'float' and 'builtin_function_or_method'
« Última modificación: 17 Octubre 2010, 08:05 am por Meta » En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Menu en python con otro menu dentro
Scripting
AdeLax 2 6,975 Último mensaje 7 Octubre 2012, 21:46 pm
por AdeLax
[Python] Especie de 'Menú' para un Script
Scripting
Geormarsch 4 2,547 Último mensaje 19 Octubre 2016, 19:10 pm
por tincopasan
Python Menu -Tweepy Twitter
Scripting
aspiazu 1 2,388 Último mensaje 10 Diciembre 2016, 20:58 pm
por engel lex
Ejericio 2 python: Menu, cual es el numero del mes
Scripting
xiquipython 1 2,067 Último mensaje 8 Febrero 2019, 14:39 pm
por xiquipython
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines