|
322
|
Programación / Python / [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 #Programado por Mini_Nauta, protohey.blogspot.com #Version 1.0 #Este software esta licenciado bajo GNU V3 #http://www.gnu.org/licenses/gpl-3.0.html #El propósito de este software es aprender y deglosar el software #Modulos --------------------------------- import os #Funciones --------------------------------- def trozar_lista(lista, operador): """Didive la lista a partir del operador ya sea +, -, /, * para procesar los valores. Retorna una tupla con los valores de tipo matematico en ambos lados de la expresion. trozar_lista(list lista, str operador): return tuple(a, b)""" #se dividen la lista de 2 trozos marcando como centro el operador #el if corresponde a un parchepara cuando se ingresan 2 signos - #este funciona mientras existan mas de 2 signos -, entonces al cortar #con index el primer signo - que corresponde a un signo negativo y no de resta #se corta el string a partir del segundo signo - que corresponde a la resta if lista.count('-') > 1: trozo_izquierda = ''.join( lista[0 : buscar(lista, 2, operador)] ) else: trozo_izquierda = ''.join( lista[0 : lista.index(operador)] ) trozo_derecha = ''.join( lista[(lista.index(operador) + 1) : len(lista)] ) #tratado de numeros negativos if '-' in trozo_izquierda: #eliminacion de signo - trozo_izquierda = float( trozo_izquierda[1:len(trozo_izquierda)] ) #conversion a negativo trozo_izquierda = trozo_izquierda * -1 if '-' in trozo_derecha: #eliminacion de signo - trozo_derecha = float( trozo_derecha[1:len(trozo_derecha)] ) #conversion a negativo trozo_derecha = trozo_derecha * -1 #conversion a float si fuera necesario if type(trozo_izquierda) != float: trozo_izquierda = float(trozo_izquierda) if type(trozo_derecha) != float: trozo_derecha = float(trozo_derecha) #conversion a entero si fuese necesario if (trozo_izquierda - int(trozo_izquierda)) == 0: trozo_izquierda = int(trozo_izquierda) if (trozo_derecha - int(trozo_derecha)) == 0: trozo_derecha = int(trozo_derecha) #retorno de los 2 trozos de la lista return (trozo_izquierda, trozo_derecha) def sumar(lista): """Operacion de suma.""" trozos = trozar_lista(lista, '+') print trozos[0] + trozos[1] def restar(lista): """Operacion de resta.""" trozos = trozar_lista(lista, '-') print trozos[0] - trozos[1] def dividir(lista): """Operacion de division.""" trozos = trozar_lista(lista, '/') if(trozos[1] == 0): print "Math Error!" else: print trozos[0] / trozos[1] def multiplicar(lista): """Operacion de multiplicar.""" trozos = trozar_lista(lista, '*') print trozos[0] * trozos[1] def Clear(): """Limpia la consola.""" #windows if os.name == "nt": os.system("cls") #unix elif os.name == "posix": os.system("clear") def buscar(lista, index_num, to_index): """Busca el caracter indicado en una lista""" a = 0 for i in lista: if i == to_index: a = a + 1 if a == index_num: break return a #Programa --------------------------------- #no se permiten operandos al principio while(True): #expresion a calcular expresion = raw_input() #mismo principio de las casio con el syntax error if len(expresion) == 1: if(expresion[0] == '+') or (expresion[0] == '-') or (expresion[0] == '/') or (expresion[0] == '*'): print "Syntax error!" else: #in retorna true si encuentra lo que se busca en la lista #no modificar orden de prescedencia de sentencias if-elif #ya que estan en orden de prescedencia matematica para #un correcto funcionamiento logico del programa. #division try: if '/' in expresion: dividir(expresion) #multiplicacion elif '*' in expresion: multiplicar(expresion) #suma elif '+' in expresion: sumar(expresion) #resta elif '-' in expresion: restar(expresion) #ayuda elif ''.join(expresion) == "help": Clear() print "Basic Calculator by Mini_Nauta 1.0\n" print "clear: clean the screen" print "quit: close the calculator" print "help: show the help menu" #borrar pantalla elif ''.join(expresion) == "clear": Clear() #salir elif ''.join(expresion) == "quit": break else: print "Invalid operation. You can write help for help menu!" except: print "Syntax Error!"
|
|
|
323
|
Programación / Programación General / Re: Que hicieron para volverse programadores C++?
|
en: 22 Octubre 2012, 23:56 pm
|
para aprender c++ puedes o no aprender c y después c++, yo empecé con c y por causas del destino quede en estructuras, en fin, estoy con python y por el instituto me pasan java, pero lo principal es aprender a programar y relativamente c++ no es tan difícil, lo que te parece dificil es que no lo sabes, tienes que meditarlo y pensar, aprender a deducir, aprender a pensar, hay varios libros que tienen mas de 150 páginas y aunque te aburra leer encontrarás que los libros explican mediante conceptos fáciles la lógica de c++, por que es c++ para que se usa, cuando se usa y demás, lo que no pasa cuando empiezas a aprender solo leyendo las instrucciones de código, escribir código es una cosa, entenderlo es otra. Curiosamente aprender a programar no es escribir código si no aprender a crear soluciones en formas de programas, aprender a expresarlas en forma clara, sencilla y mientras mas practicas mas fácil se te hace, el escribir código solo se hace una vez que tienes el algoritmo, como nos dijo un profesor una vez, no debes caer al punto de pensar desde el código, sino al revés, piensa en la solución, como implementaras una solución para solucionar el problema, luego que tienes la que transcribir la solución en forma de programa, y todo eso enseñan los libros xD... saludos
|
|
|
325
|
Programación / Programación General / ¿como documentar el código fuente?
|
en: 21 Octubre 2012, 08:22 am
|
Hola, pues verán, yo voy en primero informática pero formo parte de un grupo en el que a veces hay que programar en grupo, no entraré en detalles, e aprendido mucho y todo el cuento en el grupo, el tema es que no me queda claro como documentar mi código, compañeros de cuarto año de ingeniería me han dicho que tengo que comentar todo aquello que no sea habitual, porque use eso y bla bla bla, pero como lo veo yo el programador necesita saber la lógica del programa no porque use cada cosa o cada instrucción, salvo algunas que ayuden y que creo que tiene razón en eso, pero como no me pasarán eso hasta dentro de algunos años les pregunto a ustedes...
el tema en particular se trató de un algoritmo para un robot, no todos programábamos en el lenguaje para el robot, además olvide entregar el código documentado y no entendieron nada del code original, mi punto es que yo cuando documente lo hice explicando la lógica del programa y en algunos casos instrucciones argumentando su uso, soy nuevo en esto, pero se me hace de que por ejemplo en otra situación, todos debiéramos saber programar en ese lenguaje, y no estar preguntando para que significa cada cosa no?... la verdad tengo un lio con esto de la documentación... lo que entiendo hasta ahora es que se tiene que documentar la lógica del programa... en fin... saludos
|
|
|
328
|
Foros Generales / Foro Libre / Re: ¿Cuales son vuestros sistemas operativos favoritos?
|
en: 5 Octubre 2012, 20:17 pm
|
como usuario de windows 7 home premium el cual venia con el laptop, te digo que no me gusta ni me disgusta, puedo jugar, hacer mis tareas, trabajos y demás cosas del instituto, pero para trabajar uso ubuntu, lo mas básico para un usuario linux poco experimentado con eso me basta y me sobra por ahora, ya que no soy un experto en esos temas, a mi me vale que funcione todo bien...saludos
|
|
|
329
|
Informática / Hardware / Re: me parece que la ram esta dañada...
|
en: 21 Septiembre 2012, 03:26 am
|
de hecho si, me dio unos cuantos pitidos al inicio, pero la saque y la coloque de nuevo y se pasaron, también leí en internet que podría ser estática pero quería consultarles a ustedes...saludos
|
|
|
330
|
Informática / Hardware / Re: me parece que la ram esta dañada...
|
en: 19 Septiembre 2012, 05:58 am
|
no inicia en modo seguro, tampoco carga los live cd, probé con backtrack 3 que era lo mas liviano que tengo pero nada, y el otro slot para ram no funciona, la verdad no se como le podría hacer funcionar, quizás con un pincel... saludos y gracias
|
|
|
|
|
|
|