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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Calculadora básica de consola
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Calculadora básica de consola  (Leído 2,904 veces)
flacc


Desconectado Desconectado

Mensajes: 854


Ver Perfil WWW
[Python] Calculadora básica de consola
« en: 23 Octubre 2012, 00:25 am »

Hola, esta es una calculadora que hice hace algún tiempo, y que creo les será útil a los que aprendan python sobre todo para aprender sobre string y listas, y a funciones, esta hecha bajo el paradigma estructurado estilo C, creo que se puede mejorar pero esta bien para que los que aprender python se entretengan un rato. Cabe decir que no soy un master en python y que con gusto aceptaré consultas y correcciones. La sintaxis puedes ser algo compleja para los que empiezan pero esta bastante comentada.
Espero le sirva a alguien. Saludos

Código
  1. #Programado por Mini_Nauta, protohey.blogspot.com
  2. #Version 1.0
  3. #Este software esta licenciado bajo GNU V3
  4. #http://www.gnu.org/licenses/gpl-3.0.html
  5. #El propósito de este software es aprender y deglosar el software
  6.  
  7. #Modulos ---------------------------------
  8. import os
  9.  
  10. #Funciones ---------------------------------
  11. def trozar_lista(lista, operador):
  12. """Didive la lista a partir del operador
  13. ya sea +, -, /, * para procesar los valores.
  14. Retorna una tupla con los valores de tipo matematico
  15. en ambos lados de la expresion.
  16. trozar_lista(list lista, str operador): return tuple(a, b)"""
  17.  
  18. #se dividen la lista de 2 trozos marcando como centro el operador
  19. #el if corresponde a un parchepara cuando se ingresan 2 signos -
  20. #este funciona mientras existan mas de 2 signos -, entonces al cortar
  21. #con index el primer signo - que corresponde a un signo negativo y no de resta
  22. #se corta el string a partir del segundo signo - que corresponde a la resta
  23. if lista.count('-') > 1:
  24. trozo_izquierda = ''.join( lista[0 : buscar(lista, 2, operador)] )
  25. else:
  26. trozo_izquierda = ''.join( lista[0 : lista.index(operador)] )
  27. trozo_derecha = ''.join( lista[(lista.index(operador) + 1) : len(lista)] )
  28.  
  29. #tratado de numeros negativos
  30. if '-' in trozo_izquierda:
  31. #eliminacion de signo -
  32. trozo_izquierda = float( trozo_izquierda[1:len(trozo_izquierda)] )
  33. #conversion a negativo
  34. trozo_izquierda = trozo_izquierda * -1
  35.  
  36. if '-' in trozo_derecha:
  37. #eliminacion de signo -
  38. trozo_derecha = float( trozo_derecha[1:len(trozo_derecha)] )
  39. #conversion a negativo
  40. trozo_derecha = trozo_derecha * -1
  41.  
  42. #conversion a float si fuera necesario
  43. if type(trozo_izquierda) != float:
  44. trozo_izquierda = float(trozo_izquierda)
  45. if type(trozo_derecha) != float:
  46. trozo_derecha = float(trozo_derecha)
  47.  
  48. #conversion a entero si fuese necesario
  49. if (trozo_izquierda - int(trozo_izquierda)) == 0:
  50. trozo_izquierda = int(trozo_izquierda)
  51.  
  52. if (trozo_derecha - int(trozo_derecha)) == 0:
  53. trozo_derecha = int(trozo_derecha)
  54.  
  55. #retorno de los 2 trozos de la lista
  56. return (trozo_izquierda, trozo_derecha)
  57.  
  58. def sumar(lista):
  59. """Operacion de suma."""
  60. trozos = trozar_lista(lista, '+')
  61. print trozos[0] + trozos[1]
  62.  
  63. def restar(lista):
  64. """Operacion de resta."""
  65. trozos = trozar_lista(lista, '-')
  66. print trozos[0] - trozos[1]
  67.  
  68. def dividir(lista):
  69. """Operacion de division."""
  70. trozos = trozar_lista(lista, '/')
  71. if(trozos[1] == 0):
  72.                print "Math Error!"
  73.        else:
  74.                print trozos[0] / trozos[1]
  75.  
  76. def multiplicar(lista):
  77. """Operacion de multiplicar."""
  78. trozos = trozar_lista(lista, '*')
  79. print trozos[0] * trozos[1]
  80.  
  81. def Clear():
  82. """Limpia la consola."""
  83. #windows
  84. if os.name == "nt":
  85. os.system("cls")
  86. #unix
  87. elif os.name == "posix":
  88. os.system("clear")
  89.  
  90. def buscar(lista, index_num, to_index):
  91. """Busca el caracter indicado en una lista"""
  92. a = 0
  93. for i in lista:
  94. if i == to_index:
  95. a = a + 1
  96. if a == index_num:
  97. break
  98. return a
  99.  
  100.  
  101. #Programa ---------------------------------
  102. #no se permiten operandos al principio
  103. while(True):
  104. #expresion a calcular
  105. expresion = raw_input()
  106.  
  107. #mismo principio de las casio con el syntax error
  108. if len(expresion) == 1:
  109. if(expresion[0] == '+') or (expresion[0] == '-') or (expresion[0] == '/') or (expresion[0] == '*'):
  110. print "Syntax error!"
  111. else:
  112. #in retorna true si encuentra lo que se busca en la lista
  113.  
  114. #no modificar orden de prescedencia de sentencias if-elif
  115. #ya que estan en orden de prescedencia matematica para
  116. #un correcto funcionamiento logico del programa.
  117. #division
  118. try:
  119. if '/' in expresion:
  120. dividir(expresion)
  121. #multiplicacion
  122. elif '*' in expresion:
  123. multiplicar(expresion)
  124. #suma
  125. elif '+' in expresion:
  126. sumar(expresion)
  127. #resta
  128. elif '-' in expresion:
  129. restar(expresion)
  130. #ayuda
  131. elif ''.join(expresion) == "help":
  132. Clear()
  133. print "Basic Calculator by Mini_Nauta 1.0\n"
  134. print "clear: clean the screen"
  135. print "quit: close the calculator"
  136. print "help: show the help menu"
  137. #borrar pantalla
  138. elif ''.join(expresion) == "clear":
  139. Clear()
  140. #salir
  141. elif ''.join(expresion) == "quit":
  142. break
  143. else:
  144. print "Invalid operation. You can write help for help menu!"
  145. except:
  146. print "Syntax Error!"


« Última modificación: 23 Octubre 2012, 00:27 am por Mini_Nauta » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calculadora básica by swik
Scripting
.:Swik:. 1 3,037 Último mensaje 20 Abril 2010, 02:49 am
por BloodyDark
Calculadora básica con interfaz [Win API][Terminada]
Programación C/C++
Alien-Z 1 6,530 Último mensaje 26 Septiembre 2011, 14:52 pm
por тαптяα
Problema con calculadora basica!!!!!!!!!!
Programación C/C++
prometheus48 4 3,402 Último mensaje 9 Octubre 2011, 14:48 pm
por prometheus48
Calculadora basica en visual basic
.NET (C#, VB.NET, ASP)
Sarachan 5 5,509 Último mensaje 5 Diciembre 2011, 14:09 pm
por Sarachan
Ayuda con calculadora básica en C
Programación C/C++
wazausky 2 2,484 Último mensaje 12 Marzo 2013, 03:03 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines