Autor
|
Tema: [Python] - Menú con While. (Leído 21,796 veces)
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Si crees que no debes de usarlo entonces no vas a hacer nunca el ejercicio Crees que una tupla o lista sirve solo con el for? Se usa con el while también (por hacer referencia a tu ejercicio) Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Que indica? ... Que tienes que tener dos vectores "Deseamos confeccionar un programa que permita operar con dos vectores". "Introducir el primer vector" "Introducir el segundo vector" Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Meta
|
Que indica? ... Que tienes que tener dos vectores Si, y eso me da vueltas a la cabeza, que supuestamente debe ser while, no un tem apor delante como indica en la página 109 del pdf http://marmota.act.uji.es/mtp/pdf/python.pdf . Con razón que siempre me faltaba ideas que luego veía."Deseamos confeccionar un programa que permita operar con dos vectores". "Introducir el primer vector" "Introducir el segundo vector" Entonces seguiré practicando en el pdf a ver si encuentro la solución.Saludos Gracias por tu tiempo.
|
|
|
En línea
|
|
|
|
@Sthéfano
Desconectado
Mensajes: 98
Security & Programming ~
|
Solo un pequeño dato mas # Importar arcoseno. from math import acos vector1 = float(raw_input('Introduce el primer vector: ')) vector2 = float(raw_input('Introduce el segundo vector: ')) opcion = '' while opcion < 'a' or opcion > 'g': print 'Selecciona una opción: \n' print 'a) Calcular la suma.' print 'b) Calcular la diferencia.' print 'c) Calcular el producto escalar.' print 'd) Calcular el producto vectorial.' print 'e) Calcular el ángulo (en gastos) entre ellos.' print 'f) Calcular la longitud.' print 'g) Finalizar. ' opcion = raw_input('Pulsa a, b, c, d, e, f o g, luego pulsa retorno de carro: ') if opcion == 'a': x1 = float(raw_input('Introduce el primer vector: '))
En vez de tantos print, podrias usar comillas triples. # Importar arcoseno. from math import acos vector1 = float(raw_input('Introduce el primer vector: ')) vector2 = float(raw_input('Introduce el segundo vector: ')) opcion = '' while opcion < 'a' or opcion > 'g': print ''' Selecciona una opcion: a) Calcular la suma. b) Calcular la diferencia. c) Calcular el producto escalar. d) Calcular el producto vectorial. e) Calcular el ángulo (en gastos) entre ellos. f) Calcular la longitud. g) Finalizar. ''' opcion = raw_input('Pulsa a, b, c, d, e, f o g, luego pulsa retorno de carro: ') if opcion == 'a': x1 = float(raw_input('Introduce el primer vector: '))
Te ahorras muchos print por hacer Saludos
|
|
|
En línea
|
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Meta, retiro lo dicho ya que puede ser que estuviese equivocado Puede ser que cuando en el libro se refieren a vectores, se refieren a vectores matemáticos sin hacer referencia a listas o tuplas, quiero pensar que no te van a pedir hacer algo sin explicartelo A ver, volviendo al código que tenías antes de que yo dijera esto ... Los vectores del principio los ves inútil porque estas metiendo las variables a mano ... x1, x2, x3, y1, y2 e y3 son los elementos de los dos vectores, empieza por eso, no por las operaciones. En tu código asignas los valores de las variables a mano, y lo que debes de hacer es tener un input por cada variable, y todo eso metido dentro de la opción "introducir el primer vector" e "introducir el segundo vector" Si opcion 1 var1 = pido dato var2 = pido dato var3 = pido dato Si opcion 2 var4 = pido dato . . . A ver si lo solucionamos Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Meta
|
Ya decía yo. Rectificar es de sabio. Hay algo que no entiendo. Añado estás líneas de código. # Introducir vectores. vector1 = float(raw_input('Introduce el primer vector: ')) vector2 = float(raw_input('Introduce el segundo vector: '))
Por lo que te entiendo pregunta por más variables en cada vector que sería así supuestamente. from math import acos, pi, sqrt opcion = '' while opcion < 'a' or opcion > 'i': print '''Selecciona una opción: a) Introducir el primer vector. b) Introducir el segundo vector. c) Calcular la suma. d) Calcular la diferencia. e) Calcular el producto escalar. f) Calcular el producto vectorial. g) Calcular el ángulo (en gastos) entre ellos. h) Calcular la longitud. i) Finalizar. ''' opcion = raw_input('Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: ') # Primer vector. if opcion == 'a': x1 = float(raw_input('Introduce valor x1: ')) y1 = float(raw_input('Introduce valor y1: ')) z1 = float(raw_input('Introduce valor z1: ')) # Segundo vector. elif opcion == 'b': x2 = float(raw_input('Introduce valor x2: ')) y2 = float(raw_input('Introduce valor y2: ')) z2 = float(raw_input('Introduce valor z2: ')) # Suma. elif opcion == 'c': suma = (x1 + x2, y1 + y2, z1 + z2) print suma # Diferencia. elif opcion == 'd': diferencia = (x1 - x2, y1 - y2, z1 - z2) print diferencia # Producto escalar. elif opcion == 'e': producto = (x1 * x2 + y1 * y2 + z1 * z2) print producto # Producto vectorial. elif opcion == 'f': vectorial = (y1 * z2 - z1 * y2, z1 * x2 - x1 * z2, x1 * y2 - y1 * x2) print vectorial # Ángulo. elif opcion == 'g': print (180 / pi) * arcos * ((x1 * x2 + y1 * y2 + z1 * z2) / (sqrt(x1**2 + y1**2 + z1**2) * (sqrt(x2**2 + y2**2 + z2**2)) # Longitud. elif opcion == 'h': x = 56 y = 92 z = 50 longitud = sqrt(x**2+y**2+z**2) print longitud elif opcion == 'i': print 'Sólo hay sietes opciones: a, b, c, d, e, f o g. Usted has tecleado', opcion print 'Gracias por usar el programa.'
¿Te refieres algo así? Ahora mismo no lo puedo ejecutar para hacer pruebas porque me da fallos. File "/home/user/NetBeansProjects/kam/src/kam.py", line 90 elif opcion == 'h': ^ SyntaxError: invalid syntax
|
|
« Última modificación: 16 Octubre 2010, 02:53 am por Meta »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Revisa paréntesis en g Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Meta
|
Gracias por el error, sólo es el del paréntesis. En su salida me ha dado este resultado. Selecciona una opción: a) Introducir el primer vector. b) Introducir el segundo vector. c) Calcular la suma. d) Calcular la diferencia. e) Calcular el producto escalar. f) Calcular el producto vectorial. g) Calcular el ángulo (en gastos) entre ellos. h) Calcular la longitud. i) Finalizar. Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: a Introduce valor x1: 3 Introduce valor y1: 4 Introduce valor z1: 5 Gracias por usar el programa. Por fin me funciona algo. Por ahora me falta que vuelta al menú para hacer la opción b). He leído por Internet que los goto están prohibidos usarlos para el aprendizaje o sino cogeré malos hábitos en programación. Deja ver como me sale. Edito:from math import acos, pi, sqrt opcion = '' while opcion < 'a' or opcion > 'i': print '''Selecciona una opción: a) Introducir el primer vector. b) Introducir el segundo vector. c) Calcular la suma. d) Calcular la diferencia. e) Calcular el producto escalar. f) Calcular el producto vectorial. g) Calcular el ángulo (en gastos) entre ellos. h) Calcular la longitud. i) Finalizar. ''' opcion = raw_input('Pulsa a, b, c, d, e, f, g, h o i, luego pulsa retorno de carro: ') # Primer vector. if opcion == 'a': x1 = float(raw_input('Introduce valor x1: ')) y1 = float(raw_input('Introduce valor y1: ')) z1 = float(raw_input('Introduce valor z1: ')) # Segundo vector. elif opcion == 'b': x2 = float(raw_input('Introduce valor x2: ')) y2 = float(raw_input('Introduce valor y2: ')) z2 = float(raw_input('Introduce valor z2: ')) # Suma. elif opcion == 'c': suma = (x1 + x2, y1 + y2, z1 + z2) print suma # Diferencia. elif opcion == 'd': diferencia = (x1 - x2, y1 - y2, z1 - z2) print diferencia # Producto escalar. elif opcion == 'e': producto = (x1 * x2 + y1 * y2 + z1 * z2) print producto # Producto vectorial. elif opcion == 'f': vectorial = (y1 * z2 - z1 * y2, z1 * x2 - x1 * z2, x1 * y2 - y1 * x2) print vectorial # Ángulo. elif opcion == 'g': print (180 / pi) * arcos * (x1 * x2 + y1 * y2 + z1 * z2) / (sqrt(x1**2 + y1**2 + z1**2) * sqrt(x2**2 + y2**2 + z2**2)) # Longitud. elif opcion == 'h': x = float(raw_input('Introduce valor x: ')) y = float(raw_input('Introduce valor y: ')) z = float(raw_input('Introduce valor z: ')) longitud = sqrt(x**2+y**2+z**2) print longitud elif opcion == 'i': print 'Sólo hay sietes opciones: a, b, c, d, e, f o g. Usted has tecleado', opcion print 'Gracias por usar el programa.'
Debo hacer algo para que cuando acabe una operación vuelva al menú principal automáticamente, cuando pulse i) para finalizar es cuando debe aparecer el mensaje "Gracias por usar el programa." y se acaba el programa o... ...¿hay que dejarlo así en este ejercicio? Edito 2:El programa me debe funcionar de esta manera sin usar GOTOssssssssssssss. Si pulso a), te pide introducir el primer vector. Luego se acaba el programa y no se puede continuar para rellenar el vector 2. Desde que introduzca los datos de la opción a), que vuelva almenú principal, así con cada opción excepto la opción i) que es cuando realmente se acaba el programa.
|
|
« Última modificación: 16 Octubre 2010, 05:29 am por Meta »
|
En línea
|
|
|
|
|
|