elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 07:04  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  Dudas en Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas en Python  (Leído 567 veces)
Fyrox

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Dudas en Python
« en: 23 Agosto 2011, 21:22 »

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á:
Código
#! /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:
Código
#! /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 ;D.


En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Dudas en Python
« Respuesta #1 en: 23 Agosto 2011, 21:26 »

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
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Fyrox

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Dudas en Python
« Respuesta #2 en: 23 Agosto 2011, 23:16 »

He probado metiendo las 4 últimas líneas (eliminando el comentario) dentro del segundo if, de la siguiente forma:
Código
#! /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:
Código
#! /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
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Dudas en Python
« Respuesta #3 en: 23 Agosto 2011, 23:18 »

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
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Fyrox

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Dudas en Python
« Respuesta #4 en: 23 Agosto 2011, 23:48 »

No hay manera:

Código
#! /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"
 
Código
#! /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
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Dudas en Python
« Respuesta #5 en: 24 Agosto 2011, 00:21 »

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 :silbar: AND


Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Fyrox

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Dudas en Python
« Respuesta #6 en: 24 Agosto 2011, 00:49 »

¡Al fin! Muchisimas gracias Novlucker. La proxima vez tendre que tener más cuidado jeje.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
MARAVILLADO CON PYTHON, pero con algunas dudas!!!
Scripting
winfuck 0 488 Último mensaje 10 Octubre 2006, 01:50
por winfuck
(Python)Existen ventanas de entrada y salida de datos en python
Scripting
tonilogar 11 4,346 Último mensaje 29 Noviembre 2009, 00:49
por tonilogar
Dudas con comandos [PYTHON]
Scripting
.ANTRAX. 2 1,435 Último mensaje 10 Marzo 2010, 15:14
por .ANTRAX.
<Python> Regexp? Dudas con peticiones web
Scripting
xassiz_ 2 1,010 Último mensaje 13 Abril 2010, 01:16
por Shell Root
[Dudas] Tkinter, programando aplicaciones con GUI en Python
Scripting
invisible_hack 7 3,491 Último mensaje 6 Julio 2010, 14:54
por braulio--
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines