Twenty things to do with a python script: Difference between revisions
Line 11: | Line 11: | ||
<source lang="python"> | <source lang="python"> | ||
import turtle | import turtle | ||
import random | |||
def Poly(n,x): | |||
angle = 360/n | |||
for i in range(n): | |||
turtle.forward(x) | |||
turtle.left(angle) | |||
def makeFlower(p): | |||
for i in range(12): | |||
Poly(9,p) | |||
turtle.left(30) | |||
def makeTriple(): | |||
turtle.speed(44) | |||
for i in range(3): | |||
i = (i+1)*5 | |||
turtle.color(random.random(),random.random(),random.random()) | |||
makeFlower(i) | |||
xa = -255 | |||
y = -244 | |||
numberColumns = 5 | |||
numberRows = 5 | |||
turtle.penup() | |||
turtle.setpos(xa,y) | |||
for i in range(numberRows): | |||
for c in range(numberColumns): | |||
c=(c+1)*100 | |||
makeTriple() | |||
turtle.penup() | |||
turtle.sety(y+c) | |||
turtle.pendown() | |||
i=(i+1)*100 | |||
turtle.penup() | |||
turtle.setpos(xa+i,y) | |||
turtle.pendown() | |||
</source> | </source> | ||
Source: [[Lidia Pereira]], [User:Lidia.Pereira/PNM/Turtle|Turtle Graphics Exercises]] | Source: [[Lidia Pereira]], [[User:Lidia.Pereira/PNM/Turtle|Turtle Graphics Exercises]] | ||
== Create an Inkscape plugin to draw turtle graphics == | == Create an Inkscape plugin to draw turtle graphics == |
Revision as of 22:46, 21 November 2013
With a deferential bow to Seymour Papert & Cynthia Solomon's 1971 20 Things to do with a computer, here a selected listing of Python recipes that represent a range posible explorations that need not involve much more than 20 - 30 lines of code.
<slidy theme="aa" />
Make a turtle
import turtle
import random
def Poly(n,x):
angle = 360/n
for i in range(n):
turtle.forward(x)
turtle.left(angle)
def makeFlower(p):
for i in range(12):
Poly(9,p)
turtle.left(30)
def makeTriple():
turtle.speed(44)
for i in range(3):
i = (i+1)*5
turtle.color(random.random(),random.random(),random.random())
makeFlower(i)
xa = -255
y = -244
numberColumns = 5
numberRows = 5
turtle.penup()
turtle.setpos(xa,y)
for i in range(numberRows):
for c in range(numberColumns):
c=(c+1)*100
makeTriple()
turtle.penup()
turtle.sety(y+c)
turtle.pendown()
i=(i+1)*100
turtle.penup()
turtle.setpos(xa+i,y)
turtle.pendown()
Source: Lidia Pereira, Turtle Graphics Exercises
Create an Inkscape plugin to draw turtle graphics
See Seymour
Generate tactical hybrid texts
“Emma Woodhouse, handsome, clever, and create derivative works of. 9. We can analyze your application. We can remove any ad for any purpose, including Connect sites. * Payment Terms: These guidelines outline the policies that apply to users. 5. If any portion of this Statement must be the difference between a Mrs. Weston, only sixteen miles off, was always disagreeable”
Using nltk
Source: Femke Snelting, http://snelting.domainepublic.net/files/EmmaWoodhouse.odt
Programmatically Manipulate Typefaces
Source: Eric Schrijver, http://i.liketightpants.net/and/programmatically-manipulating-typefaces
Spider texts and extract strategic search patterns
ective enforcement of intellectual property rights is critical to sustaining e or the enforcement of intellectual property rights , taking into account diffe procedures to enforce intellectual property rights do not themselves become ba em of infringement of intellectual property rights , including infringement ta ensive enforcement of intellectual property rights than is required by this Ag etween enforcement of intellectual property rights and enforcement of law in g lability and Scope of Intellectual property Rights 1 . This Agreement shall be , and maintenance of intellectual property rights . 2 . This Agreement does n ures where a right in intellectual property is not protected under its laws an rk for Enforcement of Intellectual property Rights ) are invoked ; ACTA / en 7 calendar days ; ( h ) intellectual property refers to all categories of intell to all categories of intellectual property that are the subject of Sections 1 rk for Enforcement of Intellectual property Rights ) are invoked ; ACTA / en 8 g to assert rights in intellectual property ; ( m ) territory , for the purpos rk for Enforcement of Intellectual property Rights ), means the customs territ - Related Aspects of Intellectual property Rights , contained in Annex 1C to RK FOR ENFORCEMENT OF INTELLECTUAL property RIGHTS SECTION 1 GENERAL OBLIGATIO ct of infringement of intellectual property rights covered by this Agreement , he enforcement of any intellectual property right as specified in this Section ng the enforcement of intellectual property rights , its judicial authorities he infringement of an intellectual property right from entering into the chann ng the enforcement of intellectual property rights , its judicial authorities s for infringement of intellectual property rights , a Party ' s judicial auth the right holder ' s intellectual property right in question and actually ass horization to use the intellectual property right in question . ACTA / en 14 A
Source: Nicolas Malevé, http://vj13.constantvzw.org/live/deskcam/
Run a web server
python -m SimpleHTTPServer
Permute the spellings of search terms
Source: Linda Hilfling, the experiments were developed later into the Misspelling generator browser plugin & project
Create a detourned search engine
http://pzwart3.wdka.hro.nl/~sschmieg/cgi-bin/g+7/index.py
Source: Sebastian Schmieg with Silvio Lorusso
Create a Traceroute Map
Source: User:Roelroscama/trim1/protoyping
Scrape Albert Heijn Loyalty Cards
Source: Birgit Bachler, http://www.birgitbachler.com/portfolio/?p=506
Create a custom joystick sound recorder
Uses: pygame
Source: Peter Westenberg, http://www.deschaarbeeksetaal.be/p/rugzak/
Slice & reorder an audio file by predominant frequency (NM/MM)
http://kurenniemi.activearchives.org/spectrum/
Create clouds of 3D objects in Blender
https://github.com/Blender-Brussels/bpy-bge-library/blob/master/scripts/bpy/duplicate_object.py
Source: Julien Deswaef, Brussels Blender Group []
Create a dotcom index using letter permuations
http://www.roelroscamabbing.nl/dotcomindex.html
Source: User:Roelroscama, prototyping
Filter a subtitle file to highlight the unique words of a spoken text (Disappearance)
http://activearchives.org/wiki/Disappearance
Source: Alexandre Leray and Stéphanie_Vilayphiou
Create generative fugues
Voice 01 (Octave 2)
File:Fugue 01 20110608.ogg
Voice 02 (Octave 3)
File:Fugue 04 20110530.ogg
Voice 03 (Octave 4)
File:Fugue 01-octave4 20110608.ogg
Source: Natasa Siencnik User:Natasa_Siencnik/prototyping/markov
Use open clip art and a loop to make a book of patterns
print """<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
width="200px" height="50px"
viewBox="0 0 200 50"
zoomAndPan="disable" >"""
# vertical amount of elements
veramo = 20
# ydist increases the vertical distance
ydist = 10
for z in range(veramo):
transf = "transform=\"translate({0},{1})\">".format(0,z*ydist)
print "<g " + transf
# horizontal amount of elements
horamo = 20
# ydist2 increases the vertical distance
ydist2 = 10
# xdist increases the horizontal distance
xdist2 = 10
for x in range(horamo):
transf = "transform=\"translate({0},{1})\"".format(x*xdist,x*ydist2)
print "<rect " + transf + """ x="0" y="0" width="10" height="10" fill="black" />
print "</g>"
print "</svg>"
Source: Silvio Lorusso, User:Silviolorusso/Amanofmanyparts
Generating Outline Fonts with 5 Lines of Code
import fontforge
font = fontforge.open('douar.sfd')
for glyph in font:
font[glyph].stroke('circular', 30, 'square', 'bevel', ('cleanup',))
font.generate('douar-new.ttf')
Uses: FontForge
Source: Ricardo Lafuente, http://blog.manufacturaindependente.org/2011/02/generating-outline-fonts-with-5-lines-of-code/
Create interactive vector graphics
http://www.stuartaxon.com/2013/03/20/natural-movement-in-python-part-3-particles/#more-331
Uses: Shoebot (http://shoebot.net/)
Source: Stuart Axon and Ricardo Lafuente
Generate an epub
http://www.ibm.com/developerworks/xml/tutorials/x-epubtut/
Other Modules to check out...
- Manipulate images with PIL
- use reportlab to generate a paginated PDF
- use subprocess to run FFMPEG and scrape audio/video info using a regular expression
- use html5lib to scrape HTML
- use glob to process a folder full of files
- use urllib2, urlparse and html5lib to spider HTML
- use json to parse results from web APIs
- use optparse to make a self-documenting command line utility
- use random to work with some noise
- use datetime to work easily with dates and intervals
- use OSC to talk to control other (realtime) programs
- use uuid to generate unique ids
- use zipfile
- use xml to read and extract data from an XML source