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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Función en Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Función en Python  (Leído 3,954 veces)
Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Función en Python
« en: 3 Marzo 2015, 01:18 am »

Hace un buen tiempo empezé a estudiar Python. Lo dejé porque no entendía las funciones ni las dominaba. Ahora me he animado a terminar de entender este lenguaje de programación.

Escribí esta calculadora básica.

Código
  1. # -⁻- coding: UTF-8 -*-
  2.  
  3. import sys
  4.  
  5. # Inicia presentación
  6.  
  7. print " "
  8. print "######################"
  9. print "# Calculadora Básica #"
  10. print "######################"
  11. print " "
  12. print "# Escrita por bubble #"
  13. print " "
  14.  
  15. # Finaliza presentación
  16.  
  17. # La función de la calculadora que contiene las 4 operaciones fundamentales.
  18.  
  19. def Calculadora():
  20.  
  21. num1 = int(raw_input("Número 1: "))
  22. num2 = int(raw_input("Número 2: "))
  23.  
  24. print " "
  25. print "1. Sumar"
  26. print "2. Restar"
  27. print "3. Multiplicar"
  28. print "4. Dividir"
  29. print " "
  30.  
  31. opcion = raw_input("Su respuesta: ")
  32.  
  33. if opcion == "1":
  34.  
  35. resSuma = num1 + num2
  36. print "Su resultado es", resSuma
  37. print " "
  38.  
  39. if opcion == "2":
  40.  
  41. resResta = num1 - num2
  42. print "Su resultado es", resResta
  43. print " "
  44.  
  45. if opcion == "3":
  46.  
  47. resMulti = num1 * num2
  48. print "Su resultado es", resMulti
  49. print " "
  50.  
  51. if opcion == "4":
  52.  
  53. resDiv = num1 / num2
  54. print "Su resultado es", resDiv
  55. print " "
  56.  
  57. Calculadora()
  58.  
  59. # Aquí terminaría la función de la calculadora que contiene las 4 operaciones fundamentales.
  60.  
  61. # Para repetir
  62.  
  63. print "¿Desea efectuar otra operación?
  64. repetir = raw_input("Su respuesta: )
  65.  
  66. # Condición: "Sí" ejecuta la función Calculadora(), "No" termina el programa.
  67.  
  68. if repetir == "si" or "Si" or "SI" or "sí" or "Sí" or "SÍ" or "s" or "S"
  69.  
  70. Calculadora()
  71.  
  72. if repetir == "no" or "No" or "No" or "n" or "N"
  73.  
  74. sys.exit()
  75.  
  76. # Fin de la condición.

Al ejecutarla, me arroja un error:

Citar
SyntaxError: EOL while scanning string literal
[bubble@bubble bubble]$ python Calculadora.py
  File "Calculadora.py", line 63
    print "¿Desea efectuar otra operación?
                                           ^
SyntaxError: EOL while scanning string literal

Como parece, el error de la sintaxis se debe porque la función Calculadora() llega hasta allí.
¿Habría alguna forma de indicar cuando termina una función?

Ah, y otra cosa. Si no agrego la opción de repetir, la consola me presenta primero el raw_input y no los print, que serían las opciones 1, 2, 3 y 4. Tampoco los print iniciales (presentación).

Necesito ayuda. Agradecería bastante si me indicaran sin decirme la respuesta o el código. Al fin y al cabo, soy un poco torpe en la lógica de un algoritmo :(

Modifico:

Error mío.
En las líneas 63 y 64 me faltaba cerrar el String con comillas.

De igual forma, en las condiciones if de las líneas 68  y 72 me faltaban los dos puntos.

Igual sigue el problema del raw_input, eso sería lo más importante.


« Última modificación: 3 Marzo 2015, 01:27 am por bubble1 » En línea

Namasté, criatura.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Función en Python
« Respuesta #1 en: 3 Marzo 2015, 01:25 am »

el error es porque nunca cerraste la comilla... fijate el codigo aquí en el foro en la linea 63 lo que es morado (representa el string) y en donde deja de serlo

te recomiendo que si vas a capturar numeros, no uses raw_input, usa input, raw es para capturarlo en formato string y nada más, así que a num1 y num2 le estás haciendo un casting de entero innecesario (ese int(....))... input captura y retorna en el formato más coherente a lo capturado, si es una palabra string, si es un numero int, si es un decimal, float...

y cuando hagas divisiones, siempre comprueba que el divisor no sea 0


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: Función en Python
« Respuesta #2 en: 3 Marzo 2015, 01:26 am »

Gracias, engel lex, mientras escribías tu respuesta modifiqué el Post.

Voy a cambiar el raw_input por el input y haber que pasa.
En línea

Namasté, criatura.
Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: Función en Python
« Respuesta #3 en: 3 Marzo 2015, 01:36 am »

El código me ha quedado así:

Código
  1. # -⁻- coding: UTF-8 -*-
  2.  
  3. import sys
  4.  
  5. # Inicia presentación
  6.  
  7. print " "
  8. print "######################"
  9. print "# Calculadora Básica #"
  10. print "######################"
  11. print " "
  12. print "# Escrita por bubble #"
  13. print " "
  14.  
  15. # Finaliza presentación
  16.  
  17. # La función de la calculadora que contiene las 4 operaciones fundamentales.
  18.  
  19. def Calculadora():
  20.  
  21. num1 = input("Número 1: ")
  22. num2 = input("Número 2: ")
  23.  
  24. print " "
  25. print "1. Sumar"
  26. print "2. Restar"
  27. print "3. Multiplicar"
  28. print "4. Dividir"
  29. print " "
  30.  
  31. opcion = raw_input("Su respuesta: ")
  32.  
  33. if opcion == "1":
  34.  
  35. resSuma = num1 + num2
  36. print "Su resultado es", resSuma
  37. print " "
  38.  
  39. if opcion == "2":
  40.  
  41. resResta = num1 - num2
  42. print "Su resultado es", resResta
  43. print " "
  44.  
  45. if opcion == "3":
  46.  
  47. resMulti = num1 * num2
  48. print "Su resultado es", resMulti
  49. print " "
  50.  
  51. if opcion == "4":
  52.  
  53. resDiv = num1 / num2
  54. print "Su resultado es", resDiv
  55. print " "
  56.  
  57. Calculadora()
  58.  
  59. # Aquí terminaría la función de la calculadora que contiene las 4 operaciones fundamentales.
  60.  
  61. # Para repetir
  62.  
  63. print "¿Desea efectuar otra operación?"
  64. repetir = raw_input("Su respuesta: ")
  65.  
  66. # Condición: "Sí" ejecuta la función Calculadora(), "No" termina el programa.
  67.  
  68. if repetir == "si" or "Si" or "SI" or "sí" or "Sí" or "SÍ" or "s" or "S":
  69.  
  70. Calculadora()
  71.  
  72. if repetir == "no" or "No" or "No" or "n" or "N":
  73.  
  74. sys.exit()
  75.  
  76. # Fin de la condición.

Por alguna razón, me presenta en esta secuencia.

Presentación
Línea 63: raw_input
Función Calculadora()

Y se hizo un revoltorio, al final ni me da el resultado. ¿En que la cagé?
En línea

Namasté, criatura.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Función en Python
« Respuesta #4 en: 3 Marzo 2015, 01:42 am »

dejaste
Código
  1. if opcion == "1":

y debe ser == 1, eh hecho, creo que "1" es como 43...
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: Función en Python
« Respuesta #5 en: 3 Marzo 2015, 01:47 am »

Nada, igual.

El problema es la secuencia.

Aquí dejo el Log de la terminal donde ejecuté el Script.

Citar
[bubble@bubble bubble]$ python Calculadora.py
 
######################
# Calculadora Básica #
######################
 
# Escrita por bubble #
 
Su respuesta: s
Número 1: 10
Número 2: 10
 
1. Sumar
2. Restar
3. Multiplicar
4. Dividir
 
¿Desea efectuar otra operación?
Su respuesta: s
Número 1: 10
Número 2: 10
 
1. Sumar
2. Restar
3. Multiplicar
4. Dividir
 
[bubble@bubble bubble]$

¿!Dooh!? :o ¿Y eso?
En línea

Namasté, criatura.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Función en Python
« Respuesta #6 en: 3 Marzo 2015, 01:57 am »

ya vi el error! XD es lo que odio de python... los espacios a la izquierda...

al poner "opcion" en linea 31 sin tabular, el asume que ahí finaliza la función... lo mismo para los if
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: Función en Python
« Respuesta #7 en: 3 Marzo 2015, 02:11 am »

Bien. La secuencia está solucionada y el código final es así:

Código
  1. # -⁻- coding: UTF-8 -*-
  2.  
  3. import sys
  4.  
  5. print " "
  6. print "######################"
  7. print "# Calculadora Básica #"
  8. print "######################"
  9. print " "
  10. print "# Escrita por bubble #"
  11. print " "
  12.  
  13. def Calculadora():
  14.  
  15. num1 = input("Número 1: ")
  16. num2 = input("Número 2: ")
  17.  
  18. print " "
  19. print "1. Sumar"
  20. print "2. Restar"
  21. print "3. Multiplicar"
  22. print "4. Dividir"
  23. print " "
  24.  
  25. opcion = raw_input("Su respuesta: ")
  26.  
  27. if opcion == "1":
  28.  
  29. resSuma = num1 + num2
  30. print "Su resultado es", resSuma
  31. print " "
  32.  
  33. if opcion == "2":
  34.  
  35. resResta = num1 - num2
  36. print "Su resultado es", resResta
  37. print " "
  38.  
  39. if opcion == "3":
  40.  
  41. resMulti = num1 * num2
  42. print "Su resultado es", resMulti
  43. print " "
  44.  
  45. if opcion == "4":
  46.  
  47. resDiv = num1 / num2
  48. print "Su resultado es", resDiv
  49. print " "
  50.  
  51. Calculadora()
  52.  
  53. def repeticion():
  54.  
  55. print "¿Desea efectuar otra operación?"
  56. repetir = raw_input("Su respuesta: ")
  57.  
  58. if repetir == "si" or "Si" or "SI" or "sí" or "Sí" or "SÍ" or "s" or "S":
  59.  
  60. Calculadora()
  61.  
  62. if repetir == "no" or "No" or "No" or "n" or "N":
  63.  
  64. sys.exit()
  65. repeticion()

Ah, perdón, borré los comentarios. Es que me estorbaban.
Como dijiste, tabulé el raw_input de opcion y los if, junto a sus bloques. También le añadí comillas a los números de opción que, por alguna razón, al tipearlos en la terminal no me regresaba el resultado.

Diría yo que ya está solucionado. Todavía tengo problemas con una nueva función llamada "repeticion" que dependiendo de la respuesta del usuario, vuelve a ejecutar la funcion Calculadora() o sale del programa. En eso ya me las apaño yo.

¡Muchas gracias!
En línea

Namasté, criatura.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Funcion isprime() [Python]
Scripting
isseu 9 5,910 Último mensaje 12 Junio 2009, 13:49 pm
por link87
Evaluar Una Funcion dentro de otra funcion Python
Scripting
cristiantorres 1 10,719 Último mensaje 14 Abril 2012, 06:20 am
por cristiantorres
Ayuda, python, función.
Python
Anonymatrix 2 2,434 Último mensaje 7 Enero 2014, 18:04 pm
por Anonymatrix
Invertir una función en Python.
Scripting
jam man 4 3,546 Último mensaje 14 Octubre 2015, 14:44 pm
por jam man
MOVIDO: Invertir una función en Python.
Programación General
Eleкtro 0 1,770 Último mensaje 13 Octubre 2015, 18:14 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines