14 comentarios en «Python y los frameworks de desarrollo web»

  1. El mejor lenguaje de script sin duda :), increíblemente más intuitivo que ruby y aunque para scripts prefiero perl, para hacer una aplicación de 2kloc para arriba, ni se me ocurriría usar perl, así que python wins 😀

  2. Un saludo, Zootropo.

    Me gusta tu página, paso todos los días por aquí, aunque no me entero de casi nada, porque soy muy nuevo en el tema, pero con mucho interés, eso si.

    Pero la entrada de hoy me ha desconcertado como para que escriba, es demasiado corta, críptica, en los comentarios se ve que los que pasaís por aquí, estais en el tema y os puede venir bien.

    Pero si piensas un poco, en los novatos, aunque el nivel de los temas que tratas sea alto, y no quiero que lo bajes, pero si danos la posibilidad de apoyandonos en algo, algún día si Dios quiere, entenderte perfectamente.

    No se si me he explicado, pero de todos modos un saludo a todos.

    Y a ti gracias por tu trabajo.

  3. Phyton me llama la atención, no se no he sacado o tenido el tiempo de sentarme a aprenderlo, pero esta en mi lista de cosas pendientes aprender Phyton y Pearl 😛

    Zootropo algun manual o sitio que recomiendes?

  4. Gracias por la respuesta, Zootropo.

    Pero sería imposible decirte concretamente el qué, es lo que no entiendo.

    No llegué a ser un buen usuario de Windows, cuando por repugnancia hacía Gates, me pase a GNU/Linux, en concreto Ubuntu. O sea que imagina, no tengo idea de nada.

    Mi idea es aprender a desarrollar webs, como un cambio de trabajo, una vez pasados los 40, pero es que la cosa es imposible, cuando más leo, menos entiendo, y cada vez parezco tener menos claro por donde tirar, y cuando ayer me enfrenté a tu post, pues se ve que tuve un bajón, mayor de lo habitual, y me descentré.

    Pero como dije, no se trata de bajar el nivel, sino de poner algunos asideros de ayuda, para los muy nuevos. Por ejemplo, el consejo que le das a juancho sobre el Python, aunque este en inglés, y tambien en estoy en ello, pues ya es algo.

    Bueno lo dicho gracias por la respuesta, y seguiré pasando por aquí.

  5. Muchisimas gracias Zootropo, por la respuesta.

    Tomo nota y miro a ver si me entero, con tiempo y paciencia.

    Con respecto a J2EE, es la primera vez que lo he oido nombrar, y el PHP, pues es una de las cosas sobre las que más estoy leyendo, estudiando, mejor dicho.

    Pero aquí viene una ampliación sobre el tema, para que tanto tu, como los que paseís por aquí, me entendais, a mí y a los nuevos, que a veces, parece que hacemos preguntas estúpidas.

    He leido muchisimo de PHP, pero se ve que a la versión 4, le queda poco de vida, con lo cual estoy intentando centrarme en el 5, porque ya he visto por ahí, que pronto llegará el 6, y del 5 hay poquísimo en la red, vamos casí lo único, cuando busco en Google, es de DesarrolloWeb, que es una ampliación sobre su tutorial del 4, pero es que la mayoría de los manuales que aparecen de cualquier otra página te redireccionan a este.

    Tambien estoy liado con HTML, pero te pones con el, y ahora parece que lo supera el DHTML, y ya por fín, el XHTML, que es el que veo como el más claro ganador en esta otra batalla.

    Y para remate, pues CSS, bases de datos parece que la más adecuada es MySQL, he leido un par de manuales de SQL, pero el último al que le metí mano de MySQL concretamente, me hizo despistarme aún más, porque no estaba relacionado con la programación, no se si me explico.

    Resumiendo y perdonar por la extensión del post, la sensación que tiene un aprendiz, es como si te lanzaran en paracaidas en mitad de una selva con la orden de tomar una posición, que casi tienes que inventarte tu mismo, pero una vez que aterrizas, sobre tí, hay 50 metros de altura cubiertos por los arboles, no ves ni el sol, no sabes ni puedes orientarte, por que la brújula que te suministran, parece no ser fiable, o sea para llorar.

    Y a esto de remate le unes empezar en GNU/Linux.

    Bueno lo dicho, gracias y se agradecen y aceptan todos los consejos.

    P.D. Creo que con todo este rollo, que he puesto, puedes sacar temas para más de un post.

  6. alhendin J2EE es la versión de Java orientada a las necesidad de las empresas, como computación distribuida. En cristiano, te estoy hablando de páginas JSP y Servlets.

    Hace tiempo escribí un poco sobre este tema, lo mismo te interesa: JSP, Servlets.

    También te puede interesar JDBC , que es un API para trabajar con bases de datos en Java o Hibernate, gracias al cual no es necesario escribir una sola línea de SQL 🙂

  7. Bueno, como todavía no he podido hacer ejecutables porque mis directorios son un desastre dejo aquí mi primer programa más o menos decente en Phyton, espero que no moleste que reviente la barra de desplazamiento, necesitan descargar las bibliotecas nzmath y mpmath, después va sólo y algunas partes se pueden optimizar mucho(sobran mpf´s, pero bueno;

    #! -*- coding: iso-8859-15 -*-

    ##############################################
    # Calculadora de precisión arbitraria #
    # Promueve el software libre, coño!!! #
    ##############################################

    from Tkinter import *
    from mpmath import *
    import tkMessageBox
    import tkSimpleDialog
    import math
    import random
    import string
    import time
    import nzmath.factor.methods
    import nzmath.combinatorial
    import nzmath.prime
    import nzmath.gcd
    mp.dps = 200

    # Funciones para operar sobre una cantidad

    def millerTest(a,i,n):
    if i == 0:
    return 1
    x = millerTest(a,i / 2,n)
    if x == 0:
    return 0
    y = (x*x) % n
    if ((y == 1) and (x != 1) and (x != (n-1))):
    return 0
    if (i % 2) != 0:
    y = (a * y) % n
    return y

    def factoriza(n):
    s = nzmath.factor.methods.rhomethod(n)
    return s

    def factorial(n):
    t = nzmath.combinatorial.factorial(n)
    return t

    def criba(n):
    C=[0]+(n)*[0]
    LC=len(C)
    M=range(2,n)
    P=[]
    for m in M:
    if C[m]: continue
    P+=[m]
    for k in range(m,LC,m): C[k]=1
    return P

    def raiz(n):
    return sqrt(mpf(n))

    def cuadrado(n):
    return mpf(n)*mpf(n)

    def cubo(n):
    return mpf(n)*mpf(n)*mpf(n)

    def seno(n):
    return mpf(sin(n))

    def coseno(n):
    return mpf(cos(n))

    def tangente(n):
    return mpf(tan(n))

    def nume(n):
    return mpf(e)**mpf(n)

    def lognatural(n):
    return mpf(log(n)) / mpf(log(e))

    ### Creación de botones

    class MainApp:

    def __init__(self):
    self.root = Tk()
    self.initGui()
    self.root.title(«PHYMAT 0.0»)
    self.root.resizable(0,0)
    self.root.update()
    self.root.mainloop()

    def initGui(self):
    body = Frame(self.root)
    body.pack(padx = 10, pady = 10)
    Label(body, text = «»).grid(row = 0, sticky = E)
    self.ent1 = Entry(body)
    self.ent1.grid(row = 0, column = 1)

    body = Frame(self.root)
    body.pack(padx = 10, pady = 10)
    Label(body, text =»»).grid(row = 0, sticky = E)
    self.ent2 = Entry(body)
    self.ent2.grid(row = 0, column = 4)

    body = Frame(self.root)
    body.pack(padx = 10, pady = 10)
    Label(body, text =»»).grid(row = 1, sticky = E)
    self.ent3 = Entry(body)
    self.ent3.grid(row = 0, column = 0)

    Button(body, text = «Primalidad», command = self.primalidad).grid(row = 1, sticky = E, column = 2, pady = 3)
    Button(body, text = «Factorizaje», command = self.factorizar).grid(row = 1, sticky = E, column = 1, pady = 3)
    Button(body, text = » n !», command = self.factorial).grid(row = 2, sticky = E, column = 1, pady = 3)
    Button(body, text = «Eratóstenes», command = self.lisprimos).grid(row = 1, sticky = E, column = 3, pady = 3)
    Button(body, text = «sqrt», command = self.sqrt).grid(row = 2, sticky = E, column = 2, pady = 3)
    Button(body, text = «x^2 «, command = self.cuadr).grid(row = 2, sticky = E, column = 3, pady = 3)
    Button(body, text = «x^3 «, command = self.cub).grid(row = 3, sticky = E, column = 3, pady = 3)
    Button(body, text = » sin «, command = self.se).grid(row = 4, sticky = E, column = 1, pady = 3)
    Button(body, text = «cos», command = self.co).grid(row = 4, sticky = E, column = 2, pady = 3)
    Button(body, text = » tan «, command = self.ta).grid(row = 4, sticky = E, column = 3, pady = 3)
    Button(body, text = «e^x», command = self.e).grid(row = 3, sticky = E, column = 1, pady = 3)
    Button(body, text = «ln n», command = self.ln).grid(row = 3, sticky = E, column = 2, pady = 3)
    Button(body, text = » + » , command = self.su).grid(row = 1, sticky = E, column = 6, pady =3)
    Button(body, text = » – » , command = self.re).grid(row = 2, sticky = E, column = 6, pady =3)
    Button(body, text = » * » , command = self.mu).grid(row = 3, sticky = E, column = 6, pady =3)
    Button(body, text = » / » , command = self.di).grid(row = 4, sticky = E, column = 6, pady =3)
    Button(body, text = «x^y «, command = self.po).grid(row = 1, sticky = E, column = 7, pady = 3)
    Button(body, text = » % «, command = self.ta).grid(row = 2, sticky = E, column = 7, pady = 3)
    Button(body, text = «mod», command = self.mo).grid(row = 3, sticky = E, column = 7, pady = 3)
    Button(body, text = «mcd», command = self.eu).grid(row = 4, sticky = E, column = 7, pady = 3)
    Button(body, text = «Pre», command = self.pr).grid(row = 0, sticky = E, column = 0, pady = 3)

    # Funciones comunes para operar sobre dos cantidades.

    def primalidad(self):
    n = string.atoi(self.ent1.get())
    if millerTest(random.randint(2, n-2), n-1, n) == 1:
    tkMessageBox.showinfo(message = «%d es primo» % n)
    else:
    tkMessageBox.showinfo(message = «%d es compuesto» % n)

    def factorizar(self):
    n = string.atoi(self.ent1.get())
    if millerTest(random.randint(2, n-2), n-1, n) != 1:
    tkMessageBox.showinfo(message = factoriza(n))
    else:
    tkMessageBox.showinfo(message = «%d es primo» % n)

    def factorial(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = factorial(n))

    def lisprimos(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = criba(n))

    def sqrt(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = raiz(n))

    def cuadr(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = cuadrado(n))

    def cub(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = cubo(n))

    def se(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = seno(n))

    def co(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = coseno(n))

    def ta(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = tangente(n))

    def e(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = nume(n))

    def ln(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = lognatural(n))

    def su(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a+b)

    def su(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a+b)

    def re(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a-b)

    def mu(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = mpf(a)*mpf(b))

    def di(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = mpf(a)/b)

    def po(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = (a)**(b))

    def ta(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = (0.01*a) * (b))

    def mo(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a % b)

    def eu(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = nzmath.gcd.binarygcd(a,b))

    def pr(self):
    mp.dps = string.atoi(self.ent3.get())

    ################################################################################
    if __name__ == «__main__» : MainApp()

  8. Perdón por lo anterior me he confundido y he puesto la que no era, aquí está la normal por si alguién la quiere;#! -*- coding: iso-8859-15 -*-

    ############################################################
    # Calculadora de precisión arbitraria, especialmente útil #
    # para comprobar la primalidad de grandes enteros y #
    # realizar su factorización. #
    ############################################################

    from Tkinter import *
    from mpmath import *
    import tkMessageBox
    import tkSimpleDialog
    import math
    import random
    import string
    import nzmath.factor.methods
    import nzmath.combinatorial
    import nzmath.prime
    import nzmath.gcd
    mp.dps = 200

    # Funciones para operar sobre una cantidad

    def millerTest(n):
    return nzmath.prime.millerRabin(n, times = 20)

    def factoriza(n):
    return nzmath.factor.methods.rhomethod(n)

    def factorial(n):
    return nzmath.combinatorial.factorial(n)

    def raiz(n):
    return sqrt(mpf(n))

    def cuadrado(n):
    return mpf(n)**2

    def cubo(n):
    return mpf(n)**3

    def seno(n):
    return mpf(sin(n))

    def coseno(n):
    return mpf(cos(n))

    def tangente(n):
    return mpf(tan(n))

    def nume(n):
    return mpf(e)**n

    def lognatural(n):
    return mpf(log(n)) / mpf(log(e))

    def cuadrat(n):
    res = [x**2 % n for x in range(n/2 + 1)]
    return res

    ### Creación de botones

    class MainApp:

    def __init__(self):
    self.root = Tk()
    self.initGui()
    self.root.title(«PHYMAT 0.0»)
    self.root.resizable(0,0)
    self.root.update()
    self.root.mainloop()

    def initGui(self):
    body = Frame(self.root)
    body.pack(padx = 10, pady = 10)
    Label(body, text = «»).grid(row = 0, sticky = E)
    self.ent1 = Entry(body)
    self.ent1.grid(row = 0, column = 1)

    body = Frame(self.root)
    body.pack(padx = 10, pady = 10)
    Label(body, text =»»).grid(row = 0, sticky = E)
    self.ent2 = Entry(body)
    self.ent2.grid(row = 0, column = 4)

    body = Frame(self.root)
    body.pack(padx = 10, pady = 10)
    Label(body, text =»»).grid(row = 1, sticky = E)
    self.ent4 = Entry(body)
    self.ent4.grid(row = 0, column = 0)

    body = Frame(self.root)
    body.pack(padx = 10, pady = 10)
    Label(body, text =»»).grid(row = 1, sticky = E)
    self.ent3 = Entry(body)
    self.ent3.grid(row = 0, column = 0)

    Button(body, text = «Primo n dig.»,foreground = «green», background = «black»,width=»10″,command = self.primodigit).grid(row = 3, sticky = E, column = 1)
    Button(body, text = «Miller-Rabin»,foreground = «green», background = «black», width=»10″,command = self.primalidad).grid(row = 1, sticky = E, column = 1)
    Button(body, text = «Factorizaje», foreground = «green»,background = «black»,width=»10″,command = self.factorizar).grid(row = 2, sticky = E, column = 1)
    Button(body, text = «Sig. primo «, foreground = «green»,background = «black»,width=»10″,command = self.nextp).grid(row = 4, sticky = E, column = 1)
    Button(body, text = » n ! «,foreground = «blue»,background = «gray»,width=»4″,command = self.factorial).grid(row = 2, sticky = E, column = 8)
    Button(body, text = «sqrt»,foreground = «blue»,background = «gray»,width=»4″, command = self.sqrt).grid(row = 3, sticky = E, column = 8)
    Button(body, text = «x^2 «,foreground = «blue»,background = «gray»,width=»4″, command = self.cuadr).grid(row = 1, sticky = E, column = 11)
    Button(body, text = «x^3 «,foreground = «blue»,background = «gray»,width=»4″, command = self.cub).grid(row = 2, sticky = E, column = 11)
    Button(body, text = » sin «,foreground = «blue»,background = «gray»,width=»4″, command = self.se).grid(row = 2, sticky = E, column = 10)
    Button(body, text = » cos «,foreground = «blue»,background = «gray»,width=»4″, command = self.co).grid(row = 3, sticky = E, column = 10)
    Button(body, text = » tan «,foreground = «blue»,background = «gray»,width=»4″, command = self.ta).grid(row = 4, sticky = E, column = 10)
    Button(body, text = «e^x»,foreground = «blue»,background = «gray»,width=»4″,command = self.e).grid(row = 1, sticky = E, column = 8)
    Button(body, text = «ln n»,foreground = «blue»,background = «gray»,width=»4″,command = self.ln).grid(row = 1, sticky = E, column = 9)
    Button(body, text = » + » ,foreground = «blue»,background = «gray»,width=»4″, command = self.su).grid(row = 1, sticky = E, column = 6)
    Button(body, text = » – » ,foreground = «blue»,background = «gray»,width=»4″, command = self.re).grid(row = 2, sticky = E, column = 6)
    Button(body, text = » * «,foreground = «blue»,background = «gray»,width=»4″ ,command = self.mu).grid(row = 3, sticky = E, column = 6)
    Button(body, text = » / » ,foreground = «blue»,background = «gray»,width=»4″ ,command = self.di).grid(row = 4, sticky = E, column = 6)
    Button(body, text = «x^y «,foreground = «blue»,background = «gray»,width=»4″ ,command = self.po).grid(row = 1, sticky = E, column = 7)
    Button(body, text = » % «,foreground = «blue»,background = «gray»,width=»4″ ,command = self.ta).grid(row = 2, sticky = E, column = 7)
    Button(body, text = «mod»,foreground = «blue»,background = «gray»,width=»4″ ,command = self.mo).grid(row = 3, sticky = E, column = 7)
    Button(body, text = «mcd»,foreground = «blue»,background = «gray»,width=»4″ ,command = self.eu).grid(row = 4, sticky = E, column = 7)
    Button(body, text = «Ros»,foreground=»blue»,background = «gray»,width=»4″,command = self.ros).grid(row = 4,sticky = E, column = 8 )
    Button(body, text = «(n m)»,foreground = «blue»,background = «gray», width=»4″,command = self.co).grid(row = 1, sticky = E, column = 10)
    Button(body, text = «E 1 «,foreground = «blue»,background = «gray», width=»4″,command = self.ecu).grid(row = 2, sticky = E, column = 9)
    Button(body, text = «E 2 «,foreground = «blue»,background = «gray»,width=»4″, command = self.ecd).grid(row = 3, sticky = E, column = 9)
    Button(body, text = «Sum»,foreground = «blue»,background = «gray»,width=»4″ ,command = self.sum).grid(row = 4, sticky = E, column = 9)
    Button(body, text = «Sis 2»,foreground = «blue»,background = «gray»,width=»4″ ,command = self.sum).grid(row = 3, sticky = E, column = 11)
    Button(body, text = «Sis 3»,foreground = «blue»,background = «gray»,width=»4″ ,command = self.sum).grid(row = 4, sticky = E, column = 11)
    Button(body, text = «Pre»,foreground = «orange»,background = «brown»,width=»2″ ,command = self.pr).grid(row = 0, sticky = E, column = 0)

    # Funciones comunes para operar sobre dos cantidades.

    def primodigit(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = nzmath.prime.randPrime(n))

    def primalidad(self):
    n = string.atoi(self.ent1.get())
    if millerTest(n) == 1:
    tkMessageBox.showinfo(message = «%d es primo» % n)
    else:
    tkMessageBox.showinfo(message = «%d es compuesto» % n)

    def factorizar(self):
    n = string.atoi(self.ent1.get())
    if millerTest(n) != 1:
    tkMessageBox.showinfo(message = factoriza(n))
    else:
    tkMessageBox.showinfo(message = «%d es primo» % n)

    def nextp(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = nzmath.prime.nextPrime(n))
    def factorial(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = factorial(n))

    def sqrt(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = raiz(n))

    def cuadr(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = cuadrado(n))

    def cub(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = cubo(n))

    def se(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = seno(n))

    def co(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = coseno(n))

    def ta(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = tangente(n))

    def e(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = nume(n))

    def ln(self):
    n = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = lognatural(n))

    def su(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a+b)

    def su(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a+b)

    def re(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a-b)

    def mu(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = mpf(a)*mpf(b))

    def di(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = mpf(a)/b)

    def po(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = (a)**(b))

    def ta(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = (0.01*a) * (b))

    def mo(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = a % b)

    def eu(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = nzmath.gcd.binarygcd(a,b))

    def ros(self):
    a = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = cuadrat(a))

    def combinatoria(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    tkMessageBox.showinfo(message = nzmath.combinatorial.binomial(a,b))

    # Funciones para operar sobre tres cantidades

    def ecu(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    c = string.atoi(self.ent4.get())
    tkMessageBox.showinfo(message = mpf(c-b)/a)

    def ecd(self):
    a = string.atoi(self.ent1.get())
    b = string.atoi(self.ent2.get())
    c = string.atoi(self.ent4.get())
    tkMessageBox.showinfo(message = mpf(-b + sqrt(b**2 -4*a*c)/(2*a)))
    tkMessageBox.showinfo(message = mpf(-b – sqrt(b**2 -4*a*c)/(2*a)))

    def sum(self):
    a = string.atoi(self.ent1.get())
    tkMessageBox.showinfo(message = mpf(a**2+a)/2)

    def pr(self):
    mp.dps = string.atoi(self.ent3.get())

    ################################################################################
    if __name__ == «__main__» : MainApp()

  9. Saludos,
    Pueden ayudarme, necesito desarrollar un GIS para la WEB y quiero hacerlo con pyton. cual es un framework que me puede ayudar con esto?

    Gracias

Responder a alhendin Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.