Entry 3021

helloworld.py

   

Submitted by anonymous on Jan. 16, 2010 at 7:29 p.m.
Language: Python. Code size: 4.3 KB.

import  math, decimal, timeit
    
def pi():
    decimal.getcontext().prec += 2 
    three = decimal.Decimal(3)
    lasts, t, s, n, na, d, da = 0, three, 3, 1, 0, 0, 24
    while s != lasts:
        lasts = s
        n, na = n+na, na+8
        d, da = d+da, da+32
        t = (t * n) / d
        s += t
    decimal.getcontext().prec -= 2
    return +s 


def get_unordered_trigrams(ain):
    a="  "+ain+"  "
    trigrams = [a[i:i+3] for i in range(len(a) - 2)]
    hist = dict()
    for i in trigrams:
        if i in hist:
            hist[i]+=1
        else:
            hist[i]=1
    return hist
    
    
    
def comparetris(ain, bin):
    a=get_unordered_trigrams(ain)
    b=get_unordered_trigrams(bin)
        
    overlap = 0    
    for i in a:
        if i in b:
            overlap += min(a[i],b[i])    
    
    total = len(ain) + len(bin)+4
    dice  = overlap * 2.0 / total
    
    return dice
    
    
import cgi

from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class IndexPage(webapp.RequestHandler):
    def get(self):
        self.response.out.write("""
          <html>
            <body>
              <a href="/pi">Hier wird Pi berechnet</a>
              <br><br>
              <a href="/tri">
                Hier werden W&ouml;rter verglichen</a>
            </body>
          </html>""")


class PiPage(webapp.RequestHandler):   
    def get(self):
        from timeit import Timer
        t = Timer("pi()",'from __main__ import pi') 
        self.response.out.write('<html><body> Zeit um Pi 1000x zu berechnen (ohne Response-Zeit) betr&auml;gt: ')
        self.response.out.write(t.timeit(number=1000))
        self.response.out.write('</body></html>')

class Inputstring(db.Model):
    value = db.StringProperty(multiline=False)
    date = db.DateTimeProperty(auto_now_add=True)

class TrigramPage(webapp.RequestHandler):
    def get(self):
        self.response.out.write("""
          <html>
            <body><a href='/'>zur&uuml;ck</a><br><br>
              Tragen sie hier die W&ouml;rter ein die zu vergleichen sind:
              <form action="/triout" method="post">
                <div><textarea name="content" rows="3" cols="60"></textarea></div>
                <div><input type="submit" value="Vergleiche"></div>
              </form>
              zuletzt eingegeben:
              <br>""")
        
        last = db.GqlQuery("SELECT * "
                            "FROM Inputstring "
                            "ORDER BY date DESC LIMIT 10")
        for i in last:
            self.response.out.write(i.value)
            self.response.out.write("<br>")
        self.response.out.write("""</body>
          </html>""")



class TrigramOutputPage(webapp.RequestHandler):
    def post(self):
        import re
        inputs=cgi.escape(self.request.get('content'))
        result = re.sub(r"(?simx)(?:[^\w])+", " ", inputs).split()        
        
        self.response.out.write('<html><body>&Auml;hnlichkeiten &uuml;ber Trigramme berechnet:<br>')
        self.response.out.write('<table border="3"><tr><td />')
        for i in result:
            self.response.out.write('<td>'+i+'</td>')
            inputstring = Inputstring()
            inputstring.value = i
            inputstring.put()
        self.response.out.write('</tr>')
        
        
        for i in result:
            self.response.out.write('<tr><td>'+i+'</td>')
            for j in result:
                self.response.out.write('<td>'+str(comparetris(i,j))+'</td>')
            self.response.out.write('</tr>')
        self.response.out.write("</table>"
                                "</br><a href='/tri'>nochmal</a>"
                                "</body></html>")


application = webapp.WSGIApplication(
                                     [('/', IndexPage),
                                      ('/pi', PiPage),
                                      ('/triout', TrigramOutputPage),
                                      ('/tri', TrigramPage)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

This snippet took 0.02 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).