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ö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ä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ück</a><br><br> Tragen sie hier die Wö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>Ähnlichkeiten ü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.