Autor
|
Tema: [Python] Calculadora (Leído 8,468 veces)
|
lDanny
Desconectado
Mensajes: 21
|
Hola, acabo de empezar hace un par de dias y he hecho esta calculadora: Tiene algunas limitaciones ya que tienes que meter una secuencia de operaciones ejemplo: 1+2+3+4 , es por eso que solo acepta numeros de 1 digito, y ademas es con parentesis 1+2*(3+4) daria un mal resultado, para que te de bien tendrias q poner 1+(2*(3+4)) Bueno aqui pongo el codigo para que lo vean, Si ven que puese hacerse mejoras o hacer un codigo mas pequeño ps genial, me lo comentan para seguir aprendiendo. def calcula(a): total=int(a[0]) i=1 while (i<len(a)): if (a[i]=='+'): if (a[i+1]=='('): M=calcula(a[i+2:len(a)-1]) total = total+ M[0] i+=M[1] else: total=total+int(a[i+1]) i=i+1 elif (a[i]=='-'): if (a[i+1]=='('): M=calcula(a[i+2:len(a)-1]) total = total- M[0] i+=M[1] else: total=total-int(a[i+1]) i=i+1 elif (a[i]=='*'): if (a[i+1]=='('): M=calcula(a[i+2:len(a)-1]) total = total*M[0] i+=M[1] else: total=total*int(a[i+1]) i=i+1 elif (a[i]=='/'): if (a[i+1]=='('): M=calcula(a[i+2:len(a)-1]) total = total/M[0] i+=M[1] else: total=total/int(a[i+1]) i=i+1 elif (a[i]==')'): break i+=1 return [total,i+2] opcion=0 while opcion!=2: print 'Las opciones de la Calculador son: ' print '1)Calcular la secuencia de datos' print '2)Salir' opcion=input('Escoga la opcion q desea: ') if (opcion==2): break else: a = list (raw_input('Dame la secuencia: ')) print 'El resultado de la secuencia es: ',calcula(a)[0] opcion=input('Si desea salir pulse 2 en caso contrario cualquier tecla: ') print 'Gracias por usar la Calculadora lDanny :)'
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Mucho más corta opera = raw_input('Ingrese cantidad de divisores: ') print('Resultado: ' + str(eval(opera)))
Naaaa, es broma, el tuyo realmente revisa la operación y este otro se lo tira a python Se me ocurre hacerlo con un diccionario en lugar de los IF Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
lDanny
Desconectado
Mensajes: 21
|
Novlucker, jejeje es verdad es mas corta, la mia es mas larga xDDDDDD Bueno lo he probado y es verdad que es buena, pero la verdad por lo que yo hice este code era por esto 5+3+4*3(2+3)+5 aunque mi code lo hace, pero para ello ahi que meter parentesis Y lo de diccionario no lo he mirado todavía, lo mirare para que se me hagan mas cortos los programas Gracias Novlucker
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Claro, eso si no lo hace python Mira: http://foro.elhacker.net/net/calculadora_por_jerarquia_c-t262744.0.htmlCreo que en realidad con eso te lo estoy empeorando, además de que el code esta en C#, pero si lo entiendes ligeramente (creo que no vas a tener problemas) puedes tomar nuevas ideas Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
lDanny
Desconectado
Mensajes: 21
|
Gracias, lo voy a mirar, aunque este calculadora recien lo hice hace 2 horas, solo queria hacer mi calculadora ya que veo, q varios novatos hacen una, solo q queria hacerla un poco mejor xDDD Ahora estoy resolviendo los ejercicios de project euler, tratare de mejorar la calculadora (cuando aprenda mas cosas) y cuando la tengo mejorada lo volvere a poner el code para que vena q tal. Gracias por responder y por las ayudas.
|
|
|
En línea
|
|
|
|
lDanny
Desconectado
Mensajes: 21
|
Hola, aqui pongo el codigo de la calculadora pero mejorada, aunque sigue teniendo la limitacion de que es solo para numeros de 1 digito, Gracias Novlucker, por el link que me pasaste ya que en ese link se discutia como podria mejorarse la calculadora y pusieron una idea sobre una pila, y de ahi he mejorado mi funcion. Usando la lista como pila, ya que lo ultimo que entra es lo primero en salir. Bueno mi codigo, si ven que se puede mejorar diganlo me ayudaran a mejorar. def Calculadora(L): cal=0 M=[] while (len(L)>0): total=len(L) if (L[total-1]==')'): L=L[:total-1] M=Calculadora(L) L=M[1] cal = cal+M[0] elif (L[total-1]=='+'): cal=cal+int(L[total-2]) L=L[:total-2] elif (L[total-1]=='-'): cal=cal-int(L[total-2]) L=L[:total-2] elif (L[total-1]=='*'): cal=cal*int(L[total-2]) L=L[:total-2] elif (L[total-1]=='/'): cal=cal/int(L[total-2]) L=L[:total-2] elif (L[total-1]=='('): L=L[:total-1] break else: cal=cal+int(L[total-1]) L=L[:total-1] return [cal,L] opcion=0 while opcion!=2: print 'Las opciones de la Calculador son: ' print '1)Calcular la secuencia de datos' print '2)Salir' opcion=input('Escoga la opcion q desea: ') if (opcion==2): break else: a = list (raw_input('Dame la secuencia: ')) print 'El resultado de la secuencia es: ',Calculadora(a)[0] opcion=input('Si desea salir pulse 2 en caso contrario cualquier tecla: ') print 'Gracias por usar la Calculadora lDanny :)'
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Python] - Calculadora sencilla
Scripting
|
Meta
|
5
|
8,390
|
31 Enero 2011, 08:54 am
por Yeison.Eng
|
|
|
Crear calculadora subneting [Python]
Scripting
|
s3v3n
|
2
|
5,668
|
11 Abril 2011, 18:33 pm
por s3v3n
|
|
|
[Código-Python-Android]Calculadora por secuencia - JaAViEr(0x5d)
Scripting
|
0x5d
|
0
|
3,367
|
27 Diciembre 2011, 02:22 am
por 0x5d
|
|
|
Duda de como hacer una Calculadora (PYTHON)
Scripting
|
Tuplado
|
1
|
3,515
|
16 Enero 2012, 01:59 am
por Leyer
|
|
|
Duda Calculadora (python)
Scripting
|
Tuplado
|
4
|
3,495
|
20 Enero 2012, 13:15 pm
por fallout20xx
|
|