Autor
|
Tema: Dudas en Python (Leído 3,872 veces)
|
Fyrox
Desconectado
Mensajes: 35
|
Saludos, he decidido empezar a aprender Python como mi primer lenguaje de programación, y tras leerme unos capítulos de la guía de Raul González Duque (muy buena por cierto) he decidido lanzarme e intentar hacer algo "útil": una calculadora. Bien, aquí está: #! /usr/bin/python # Funcion def calculator(p1, p2, p3): if p1 == "1": print "El resultado es " + str(int(p2) + int(p3)) + "." elif p1 == "2": print "El resultado es " + str(int(p2) - int(p3)) + "." elif p1 == "3": print "El resultado es " + str(int(p2) * int(p3)) + "." elif p1 == "4": print "El cociente es " + str(int(p2) / int(p3)) + " y el resto " + str(int(p2) % int(p3)) + "." # Menu print "1) Suma \n2) Resta \n3) Producto \n4) Division \n5) Ayuda" # Variables opcion = raw_input("Introduzca su opcion: ") if opcion == "5": print "Para utilizar la calculadora, debe escribir el numero de la opcion elegida en el campo 'Introduzca su opcion'. A continuacion, introduzca los dos operandos en sus respectivos campos." op1 = raw_input("Primer operando: ") op2 = raw_input("Segundo operando: ") # Ejecucion calculator(opcion, op1, op2)
Ahora bien, tengo los siguientes problemas: 1) Si introduces la opción 5 te muestra correctamente la ayuda, pero salta a introducir los operandos, por lo que al final la función no hará ninguna operación. 2) Me gustaría que si introduces una opción que no esté en la lista no continúe y vuelva al campo de elegir opción. Sé que estas cosas se consiguen con un bucle, y de hecho lo he intentado: #! /usr/bin/python # Funcion def calculator(p1, p2, p3): if p1 == "1": print "El resultado es " + str(int(p2) + int(p3)) + "." elif p1 == "2": print "El resultado es " + str(int(p2) - int(p3)) + "." elif p1 == "3": print "El resultado es " + str(int(p2) * int(p3)) + "." elif p1 == "4": print "El cociente es " + str(int(p2) / int(p3)) + " y el resto " + str(int(p2) % int(p3)) + "." # Menu print "1) Suma \n2) Resta \n3) Producto \n4) Division \n5) Ayuda" # Variables while True: opcion = raw_input("Introduzca su opcion: ") if opcion == "5": print "Para utilizar la calculadora, debe escribir el numero de la opcion elegida en el campo 'Introduzca su opcion'. A continuacion, introduzca los dos operandos en sus respectivos campos." if opcion == "1" or "2" or "3" or "4": break else: print "La opcion introducida no es valida" op1 = raw_input("Primer operando: ") op2 = raw_input("Segundo operando: ") # Ejecucion calculator(opcion, op1, op2)
Es evidente que no sé crear un bucle correctamente, ya que escriba lo que escriba salta a pedir los operandos. ¿Algún entendido me puede echar un cable? Gracias de antemano .
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Las últimas 4 líneas van dentro del segundo if.
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
|
|
|
Fyrox
Desconectado
Mensajes: 35
|
He probado metiendo las 4 últimas líneas (eliminando el comentario) dentro del segundo if, de la siguiente forma: #! /usr/bin/python # Funcion def calculator(p1, p2, p3): if p1 == "1": print "El resultado es " + str(int(p2) + int(p3)) + "." elif p1 == "2": print "El resultado es " + str(int(p2) - int(p3)) + "." elif p1 == "3": print "El resultado es " + str(int(p2) * int(p3)) + "." elif p1 == "4": print "El cociente es " + str(int(p2) / int(p3)) + " y el resto " + str(int(p2) % int(p3)) + "." # Menu print "1) Suma \n2) Resta \n3) Producto \n4) Division \n5) Ayuda" # Variables while True: opcion = raw_input("Introduzca su opcion: ") if opcion == "5": print "Para utilizar la calculadora, debe escribir el numero de la opcion elegida en el campo 'Introduzca su opcion'. A continuacion, introduzca los dos operandos en sus respectivos campos." if opcion == "1" or "2" or "3" or "4": op1 = raw_input("Primer operando: ") op2 = raw_input("Segundo operando: ") calculator(opcion, op1, op2) else: print "La opcion introducida no es valida"
Pero al pulsar 5 me devuelve la ayuda, sí, pero también me pide los operandos luegos. Si pulso un número que no esté en la lista, me sigue pidiendo los operandos. También lo he probado siguiendo este vídeo, pero tampoco funciona. El código queda de la siguiente manera: #! /usr/bin/python # Funcion def calculator(p1, p2, p3): if p1 == "1": print "El resultado es " + str(int(p2) + int(p3)) + "." elif p1 == "2": print "El resultado es " + str(int(p2) - int(p3)) + "." elif p1 == "3": print "El resultado es " + str(int(p2) * int(p3)) + "." elif p1 == "4": print "El cociente es " + str(int(p2) / int(p3)) + " y el resto " + str(int(p2) % int(p3)) + "." # Variables opcion = 0 while opcion < 1 or opcion > 5: print "1) Suma \n2) Resta \n3) Producto \n4) Division \n5) Ayuda" opcion = raw_input("Introduzca su opcion: ") if opcion >= "1" or opcion <= "4": op1 = raw_input("Primer operando: ") op2 = raw_input("Segundo operando: ") calculator(opcion, op1, op2) ## Llamamos a la funcion elif opcion == "5": print "Para utilizar la calculadora, debe escribir el numero de la opcion elegida en el campo 'Introduzca su opcion'. A continuacion, introduzca los dos operandos en sus respectivos campos." else: print "La opcion introducida no es valida"
Gracias de nuevo.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
No me había fijado bien, las comprobaciones deben de ser de tipo "if opcion == '1' or opcion == '2'"
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
|
|
|
Fyrox
Desconectado
Mensajes: 35
|
No hay manera: #! /usr/bin/python # Funcion def calculator(p1, p2, p3): if p1 == 1: print "El resultado es " + str(int(p2) + int(p3)) + "." elif p1 == 2: print "El resultado es " + str(int(p2) - int(p3)) + "." elif p1 == 3: print "El resultado es " + str(int(p2) * int(p3)) + "." elif p1 == 4: print "El cociente es " + str(int(p2) / int(p3)) + " y el resto " + str(int(p2) % int(p3)) + "." # Menu print "1) Suma \n2) Resta \n3) Producto \n4) Division \n5) Ayuda" # Variables while True: opcion = int(raw_input("Introduzca su opcion: ")) if opcion == 5: print "Para utilizar la calculadora, debe escribir el numero de la opcion elegida en el campo 'Introduzca su opcion'. A continuacion, introduzca los dos operandos en sus respectivos campos." break if opcion >= 1 or opcion <= 4: op1 = raw_input("Primer operando: ") op2 = raw_input("Segundo operando: ") calculator(opcion, op1, op2) else: print "La opcion introducida no es valida"
#! /usr/bin/python # Funcion def calculator(p1, p2, p3): if p1 == "1": print "El resultado es " + str(int(p2) + int(p3)) + "." elif p1 == "2": print "El resultado es " + str(int(p2) - int(p3)) + "." elif p1 == "3": print "El resultado es " + str(int(p2) * int(p3)) + "." elif p1 == "4": print "El cociente es " + str(int(p2) / int(p3)) + " y el resto " + str(int(p2) % int(p3)) + "." # Variables opcion = 0 while opcion < 1 or opcion > 5: print "1) Suma \n2) Resta \n3) Producto \n4) Division \n5) Ayuda" opcion = int(raw_input("Introduzca su opcion: ")) if opcion == 5: print "Para utilizar la calculadora, debe escribir el numero de la opcion elegida en el campo 'Introduzca su opcion'. A continuacion, introduzca los dos operandos en sus respectivos campos." elif opcion >= 1 or opcion <= 4: op1 = raw_input("Primer operando: ") op2 = raw_input("Segundo operando: ") calculator(opcion, op1, op2) ## Llamamos a la funcion else: print "La opcion introducida no es valida"
En ambos códigos al poner 5 me muestra la ayuda y después me pide los operandos. Si pongo el if de la ayuda después del de la funcion directamente no me enseña la ayuda, y en ningun caso si pongo un numero que no vaya del 1 al 5 me muestra el print del else. Siento tantas molestias, es la primera vez que programo. Muchisimas gracias por responder tan rapido.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Ahora que estas utilizando mayor/menor te estas equivocando una vez más, le estas diciendo si el número es mayor o igual a 1, o menor o igual a 4, el 6 es mayor a 1, así que se cumple AND 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
|
|
|
Fyrox
Desconectado
Mensajes: 35
|
¡Al fin! Muchisimas gracias Novlucker. La proxima vez tendre que tener más cuidado jeje.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Dudas con comandos [PYTHON]
Scripting
|
.ANTRAX.
|
2
|
3,643
|
10 Marzo 2010, 15:14 pm
por .ANTRAX.
|
|
|
<Python> Regexp? Dudas con peticiones web
Scripting
|
xassiz_
|
2
|
4,028
|
13 Abril 2010, 01:16 am
por Shell Root
|
|
|
[PYTHON] 2 dudas
Scripting
|
sunicomi
|
3
|
3,492
|
11 Septiembre 2012, 22:13 pm
por Eleкtro
|
|
|
dudas de python
Scripting
|
arkaneix
|
1
|
2,412
|
25 Octubre 2012, 06:49 am
por Eleкtro
|
|
|
Dudas en aprendizaje python
Scripting
|
dairus20
|
4
|
3,019
|
15 Mayo 2014, 04:25 am
por dairus20
|
|