Autor
|
Tema: Función en Python (Leído 3,954 veces)
|
Br1ant
Desconectado
Mensajes: 791
Incluso la "nada" es un "algo"
|
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. # -⁻- coding: UTF-8 -*- import sys # Inicia presentación print " " print "######################" print "# Calculadora Básica #" print "######################" print " " print "# Escrita por bubble #" print " " # Finaliza presentación # La función de la calculadora que contiene las 4 operaciones fundamentales. def Calculadora(): num1 = int(raw_input("Número 1: ")) num2 = int(raw_input("Número 2: ")) print " " print "1. Sumar" print "2. Restar" print "3. Multiplicar" print "4. Dividir" print " " opcion = raw_input("Su respuesta: ") if opcion == "1": resSuma = num1 + num2 print "Su resultado es", resSuma print " " if opcion == "2": resResta = num1 - num2 print "Su resultado es", resResta print " " if opcion == "3": resMulti = num1 * num2 print "Su resultado es", resMulti print " " if opcion == "4": resDiv = num1 / num2 print "Su resultado es", resDiv print " " Calculadora() # Aquí terminaría la función de la calculadora que contiene las 4 operaciones fundamentales. # Para repetir print "¿Desea efectuar otra operación? repetir = raw_input("Su respuesta: ) # Condición: "Sí" ejecuta la función Calculadora(), "No" termina el programa. if repetir == "si" or "Si" or "SI" or "sí" or "Sí" or "SÍ" or "s" or "S" Calculadora() if repetir == "no" or "No" or "No" or "n" or "N" sys.exit() # Fin de la condición.
Al ejecutarla, me arroja un error: 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
|
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
Mensajes: 791
Incluso la "nada" es un "algo"
|
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
Mensajes: 791
Incluso la "nada" es un "algo"
|
El código me ha quedado así: # -⁻- coding: UTF-8 -*- import sys # Inicia presentación print " " print "######################" print "# Calculadora Básica #" print "######################" print " " print "# Escrita por bubble #" print " " # Finaliza presentación # La función de la calculadora que contiene las 4 operaciones fundamentales. def Calculadora(): num1 = input("Número 1: ") num2 = input("Número 2: ") print " " print "1. Sumar" print "2. Restar" print "3. Multiplicar" print "4. Dividir" print " " opcion = raw_input("Su respuesta: ") if opcion == "1": resSuma = num1 + num2 print "Su resultado es", resSuma print " " if opcion == "2": resResta = num1 - num2 print "Su resultado es", resResta print " " if opcion == "3": resMulti = num1 * num2 print "Su resultado es", resMulti print " " if opcion == "4": resDiv = num1 / num2 print "Su resultado es", resDiv print " " Calculadora() # Aquí terminaría la función de la calculadora que contiene las 4 operaciones fundamentales. # Para repetir print "¿Desea efectuar otra operación?" repetir = raw_input("Su respuesta: ") # Condición: "Sí" ejecuta la función Calculadora(), "No" termina el programa. if repetir == "si" or "Si" or "SI" or "sí" or "Sí" or "SÍ" or "s" or "S": Calculadora() if repetir == "no" or "No" or "No" or "n" or "N": sys.exit() # 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
|
dejaste 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
Mensajes: 791
Incluso la "nada" es un "algo"
|
Nada, igual. El problema es la secuencia. Aquí dejo el Log de la terminal donde ejecuté el Script. [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!? ¿Y eso?
|
|
|
En línea
|
Namasté, criatura.
|
|
|
engel lex
|
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
Mensajes: 791
Incluso la "nada" es un "algo"
|
Bien. La secuencia está solucionada y el código final es así: # -⁻- coding: UTF-8 -*- import sys print " " print "######################" print "# Calculadora Básica #" print "######################" print " " print "# Escrita por bubble #" print " " def Calculadora(): num1 = input("Número 1: ") num2 = input("Número 2: ") print " " print "1. Sumar" print "2. Restar" print "3. Multiplicar" print "4. Dividir" print " " opcion = raw_input("Su respuesta: ") if opcion == "1": resSuma = num1 + num2 print "Su resultado es", resSuma print " " if opcion == "2": resResta = num1 - num2 print "Su resultado es", resResta print " " if opcion == "3": resMulti = num1 * num2 print "Su resultado es", resMulti print " " if opcion == "4": resDiv = num1 / num2 print "Su resultado es", resDiv print " " Calculadora() def repeticion(): print "¿Desea efectuar otra operación?" repetir = raw_input("Su respuesta: ") if repetir == "si" or "Si" or "SI" or "sí" or "Sí" or "SÍ" or "s" or "S": Calculadora() if repetir == "no" or "No" or "No" or "n" or "N": sys.exit() 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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Funcion isprime() [Python]
Scripting
|
isseu
|
9
|
5,910
|
12 Junio 2009, 13:49 pm
por link87
|
|
|
Evaluar Una Funcion dentro de otra funcion Python
Scripting
|
cristiantorres
|
1
|
10,719
|
14 Abril 2012, 06:20 am
por cristiantorres
|
|
|
Ayuda, python, función.
Python
|
Anonymatrix
|
2
|
2,434
|
7 Enero 2014, 18:04 pm
por Anonymatrix
|
|
|
Invertir una función en Python.
Scripting
|
jam man
|
4
|
3,546
|
14 Octubre 2015, 14:44 pm
por jam man
|
|
|
MOVIDO: Invertir una función en Python.
Programación General
|
Eleкtro
|
0
|
1,770
|
13 Octubre 2015, 18:14 pm
por Eleкtro
|
|