Benutzer-Werkzeuge

Webseiten-Werkzeuge


python_lechner

.

Python

Python ist eine plattformunabhängige, interpretierte und objektorientierte Programmiersprache. Sie wurde Anfang der 90er Jahre von Guido van Rossum am Centrum voor Wiskunde en Informatica in Amsterdam entwickelt.

Den Namen erhielt die Sprache nach der englischen Comedy-Truppe Monty Python.

Python ist eine Sprache, die den Programmierer nicht zu einem einzigen bestimmten Programmierstil zwingt. Unterstützt werden sowohl objektorientierte und strukturierte als auch funktionale Programmierung.

Die Datentypen werden dynamisch verwaltet; eine statische Typprüfung (wie z.B. bei C++) gibt es also nicht. Die Verwaltung frei gewordenen Speicherplatzes erfolgt automatisch (Garbage collection).

Obwohl bei der Werbung für Python oft die Gegenüberstellung zu Perl benutzt wurde, gibt es zwischen beiden Sprachen viele Gemeinsamkeiten.

Während Perl eine reichhaltige und oft als verwirrend empfundene Syntax besitzt, wurde bei der Entwicklung von Python besonders darauf geachtet, die Syntax möglichst einfach und damit besser les- und wartbar zu gestalten.

Obwohl Python (ebenso wie Perl) manchmal als "Skriptsprache" bezeichnet wird, sind damit schon eine Reihe großer Softwareprojekte bewältigt worden, z.B. der Zope Application Server und das Dateisystem Mojo Nation.

Python ist eine universelle, üblicherweise interpretierte höhere Programmiersprache. Ihre Entwurfsphilosophie betont Programmlesbarkeit. Ihr Gebrauch von Einrückung zur Blockbegrenzung ist ungewöhnlich unter populären Programmiersprachen.

Die Sprache hat ein offenes, gemeinschaftsbasiertes Entwicklungsmodell, gestützt durch die gemeinnützige Python Software Foundation, die de facto die Definition der Sprache in CPython, der Referenzumsetzung pflegt.

Python wurde mit dem Ziel entworfen, möglichst einfach und übersichtlich zu sein. Dies soll durch zwei Maßnahmen erreicht werden: Zum einen kommt die Sprache mit relativ wenigen Schlüsselwörtern aus, zum anderen ist die Syntax reduziert und auf Übersichtlichkeit optimiert. Objektorientierte und strukturierte Programmierung werden vollständig unterstützt.

Python macht dem Programmierer sehr genaue Vorgaben, wie er seinen Quellcode zu strukturieren hat. Obwohl erfahrene Programmierer darin eine Einschränkung sehen mögen, kommt diese Eigenschaft gerade Programmierneulingen zugute, denn unstrukturierter und unübersichtlicher Code ist eine der größten Fehlerquellen in der Programmierung.

Entwiklungsgeschichte

Die Sprache wurde Anfang der 1990er Jahre von Guido van Rossum am Centrum Wiskunde & Informatica in Amsterdam als Nachfolger für die Programmier-Lehrsprache ABC entwickelt und war ursprünglich für das verteilte Betriebssystem Amoeba gedacht. Alle bisherigen Implementierungen der Sprache (siehe auch Jython oder Stackless Python) übersetzen den Text eines Python-Programms transparent in einen Zwischencode, der dann von einem Interpreter ausgeführt wird.

Namensherkunft

Der Name geht nicht etwa (wie das Logo vermuten ließe) auf die gleichnamige Schlangengattung (Python) zurück, sondern bezog sich ursprünglich auf die englische Komikertruppe Monty Python. In der Dokumentation finden sich daher auch einige Anspielungen auf Sketche aus dem Flying Circus.Trotzdem etablierte sich die Assoziation zur Schlange, was sich unter anderem in der Programmiersprache Cobra sowie dem Python-Toolkit „Boa“ äußert.

Wichtige Programme

Python wird erfolgreich in tausenden Applikationen verwendet. Es wird unter anderem von großen Firmen wie YouTube.com oder google.com verwendet.

YouTube

YouTube ist ein 2005 gegründetes Internet-Videoportal mit Sitz in San Bruno, Kalifornien, auf dem die Benutzer kostenlos Video-Clips ansehen und hochladen können. Die Benutzeroberfläche von YouTube.com ist fast gänzlich in python geschrieben, MySQL wird zur verwaltung der datenbank verwendet.

Google

Die Google Incorporated ist ein Unternehmen mit Hauptsitz in Mountain View (Kalifornien, USA), das durch Internetdienstleistungen – insbesondere durch die gleichnamige Suchmaschine „Google“ – bekannt wurde. Die Benutzeroberfläche von Google ist ebenfalls teilweise mit Python geschrieben.

OpenShot

OpenShot Video Editor ist ein freier Video-Editor für Linux-Betriebssysteme. Er ist in Python programmiert und hat eine GTK+-basierte Benutzoberfläche und nutzt das Framework des Media Lovin’ Toolkit (MLT). Er wird als freie Software auch im Quelltext unter den Bedingungen der GNU General Public License (GPL) in Version 3 oder später verbreitet. Das Projekt wurde im August 2008 von Jonathan Thomas gestartet mit dem Ziel, einen stabilen, freien und einfach zu bedienenden Video-Editor zu erstellen.

bingo.py
from random import randrange
 
def spiel():
    a = randrange(1,7)
    b = randrange(1,7)
    print a, b,
    if a == b:
        print "Bingo!"
        print 10 * "*",
    else:
        print " - leider nicht!"

Python Turtle

Mit Turtle-Grafik, wird eine Bildbeschreibungssprache bezeichnet, bei der man sich vorstellt, dass ein stifttragender Roboter (die "turtle") sich auf der Zeichenebene bewegt und mit einfachen Kommandos, wie Stift heben, senken, vorwärts laufen und drehen, gesteuert werden kann. Der Vorteil der Turtle-Grafik ist, dass die Programme grafische Ergebnisse liefern und deshalb für die Schüler meist interessanter sind, als einfache Textausgaben. Außerdem sind die Programme leicht nachvollziehbar.

dreieck.py
from turtle import *
 
def dreieck(seite):
  for s in range(3):
    for t in range(6):
      pd()
      forward(seite/12)
      pu()
      forward(seite/12)
    left(120)
 
width(7)
color("red")
dreieck(150)
x=raw_input()
orf-logo.py
from turtle import *
 
def o_circle(r):
    #pd()
    circle(r,90)
    circle(r,180)
    circle(r,90)
 
def o_letter(h):
    a=h*0.2
    r=h/2
    pu()
    fd(r)
    fillcolor("white")
    begin_fill()
    o_circle(r)
    end_fill()
    pu()
    goto(xcor(),ycor()+a)
    fillcolor("red")
    begin_fill()
    o_circle(r-a)
    end_fill()
    pu()
    goto(xcor()+r,ycor()-a)
 
def r_letter(h):
    cor=pos()
    [x,y]=cor
    a=h*0.2
    lt(90)
    #pd()
    fillcolor("white")
    begin_fill()
    fd(h)
    rt(90)
    fd(a+h/4)
    circle(-h/3,150)
    pu()
    circle(-h/3,30)
    cor1=pos()
    [x1,y1]=cor1
    circle(-h/3,-30)
    #pd()
    seth(180)
    goto(x+h*0.8,y)
    fd(a)
    goto(x1,y1)
    fd(h/4)
    lt(90)
    fd(h/3)
    lt(90)
    bk(a)
    end_fill()
    pu()
 
 
    goto(x,y+h-a)
    fd(a)
    #pd()
    fillcolor("red")
    begin_fill()
    fd(h/4)
    circle(-h/3+a,180)
    fd(h/4)
    goto(xcor(),y+h-a)
    end_fill()
 
    pu()
    goto(x+h,y)
    seth(0)
 
def square(h,b):
    for i in range(2):
        fd(b)
        lt(90)
        fd(h)
        lt(90)
 
 
def f_letter(h):
    a=h*0.2
    fillcolor("white")
    begin_fill()
    square(h, a)
    cor=pos()
    [x,y]=cor
    goto(x,y+h-a)
    square(a,h-a)
    goto(x,y+h/3)
    square(a,3*a)
    end_fill()
 
 
 
speed(6)
tracer(0)
 
pu()
fillcolor("red")
begin_fill()
goto(-350,-100)
square(500,1090)
end_fill()
 
pu()
goto(-250,0)
#bk(500)
o_letter(300)
fd(50)
r_letter(300)
f_letter(300)
ht()
tracer(1)
 
exitonclick()

http://sbox.bgweiz.at/thomas.lechner/10-11/matura/orf-logo.png

Ellipse

orf_2.py
from turtle import *
import time
 
def main():
    reset()
    shape("circle")
    resizemode("user")
    turtlesize(10,15,1)
    color("", "red")
    stamp()
    turtlesize(9.5,9.5,1)
    color("", "white")
    stamp()
    turtlesize(7,9,1)
    color("", "red")
    stamp()
    turtlesize(6.5,6.5,1)
    color("", "white")
    stamp()
 
main()
exitonclick()

http://www.demokratiezentrum.org/fileadmin/media/img/Wissensstationen/Gallery/Medien%20und%20Politik/orf_auge_gr.jpg

pi.py
from math import *
 
global a, b
 
a = [3]
b = [2*sqrt(3)]
i=0
 
while b[i]-a[i] > 0.0000000000000001:
    b_n =  (2*a[i]*b[i])/(a[i] + b[i])
    b.append(b_n)
    a_n = sqrt(a[i]*b[i+1])
    a.append(a_n)
    i=i+1
 
 
print(i)
print(a[i])
print(b[i])
print(3.141592653589793)
ubuntu-logo.py
from turtle import *
 
def c_part(color, radius, length):
    rad=[radius, -(radius+length)]
    fillcolor(color)
    begin_fill()
    for i in range(2):
        circle(rad[i],120)
        rt(90)
        fd(length)
        rt(90)
    end_fill()
    circle(radius,120)
 
r=100
l=90
colour=[(255,99,9),(255,181,21),(201,0,22)]
color("white")
colormode(255)
pensize(25)
 
circle(r, 90)
for i in range(3):
    c_part(colour[i], r, l)
 
pu()
pensize(15)
lt(90)
fd(2*r+l*0.60)
rt(90)
pd()
 
for i in range(3):
    fillcolor((colour[i]))
    begin_fill()
    circle(l/2)
    end_fill()
    pu()
    circle(-r-l*0.60,-120)
    pd()
 
ht()

gummi-ente

gummi-ente.py
from turtle import *
from time import *
 
alex = [Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle()]
c = ["green"]*15
bert = [Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle(),Turtle()]
water = Turtle()
tracer(0)
water.color("blue")
water.pu()
water.goto(-30*15,-100)
water.pd()
screen = Screen()
screen.register_shape("duck.gif")
 
ht()
pu()
 
 
w=15
l=30
r=25
s=30
 
 
for i in range(15):
    #alex[i].ht()
    alex[i].penup()
    alex[i].color(c[i])
    alex[i].fd(l*i)
 
for i in range(15):
    #bert[14-i].ht()
    bert[14-i].penup()
    bert[14-i].color(c[i])
    bert[14-i].bk(l+l*i)
 
 
 
for i in range(15):
    bert[i].circle(r,(-w*i)%360)
 
for i in range(15):
    alex[i].circle(r,(-w*(i+15))%360)
 
duck = Turtle(shape="duck.gif")
duck.pu()
 
for i in range(250):
    water.clear()
    duck.goto(alex[0].xcor(),alex[0].ycor()+r*4)
    water.begin_fill()
    for i in range(15):
        bert[i].circle(r,5)
        water.goto(bert[i].xcor(),bert[i].ycor())
    for i in range(15):
        alex[i].circle(r,5)
        water.goto(alex[i].xcor(),alex[i].ycor())
 
    water.goto(30*15,-100)
    water.goto(-30*15,-100)
    water.end_fill()
 
    tracer(1)    
    fd(s)
    tracer(0)
 
 
 
speed(0)
 
exitonclick()
hanning-logo.py
from turtle import *
from math import *
 
r=500
w=40
 
ht()
pos1 = []
color("blue")
tracer(0)
begin_fill()
for i in range(4):
    pos1.append(pos())
    seth(-(w/2)+90*i)
    circle(r,w)
    print(pos1)
end_fill()
#tracer(1)
 
list = [(0.3,1),
        (0.7,-1)]
 
pu();color("white");pensize(5)
 
for i in range(2):
    pu();goto(pos1[3]*list[i][0]);seth(-w*list[i][1]/2);pd()
    circle(r*list[i][1],w*2)
    circle(r*list[i][1],w*-3)
 
for i in range(2):
    pu();goto(pos1[1]*list[i][0]);seth(270+w*list[i][1]/2);pd()
    circle(r*list[i][1],-w*2)
    circle(r*list[i][1],-w*-3)
 
pu();goto(0,0)
 
exitonclick()
lappkabel-logo
from turtle import *
from math import *
 
r=100
r2=30
 
tracer(0)
ht()
begin_fill();circle(r);end_fill()
pu()
goto(0,r*1.9)
for i in range(5):
    if i == 0:
        color("orange")
    else:
        color("white")
    pd()
    begin_fill()
    circle(-r2)
    end_fill()
    pu()
    circle(-r*0.9,360/5)
 
exitonclick()
rec-logo.py
from turtle import *
from math import *
 
r=100
w=20
l=200
 
def part():
    for i in range(2):
        fd(w)
        rt(45)
        fd(l)
        rt(90+45)
 
def sign():
    color("orange")
    begin_fill()
    circle(r)
    end_fill()
    pu()
    goto(-2.5*w,r)
    pd()
    for i in range(3):
        pd()
        color("white")
        begin_fill()
        part()
        end_fill()
        pu()
        fd(w*2)
    pu()
    goto(r,r)
    seth(-90)
    circle(-r,-270)
 
def kreis(name):
    reset()
    begin_poly()
    sign()
    end_poly()
    kreis_form = get_poly()
    screen.register_shape(name, kreis_form)
 
tracer(0)
screen = Screen()
kreis("kreis")
kreis1 = Turtle(shape="kreis")
kreis1.lt(90)
kreis1.color("orange")
kreis1.stamp()
kreis1.clear()
 
color("orange")
pensize(w)
pd();circle(-r)
tracer(1)
 
exitonclick()

autos

car_1.gif car_2.gif

autos.py
# -*- coding: utf-8 -*-
# Autor: Thomas Lechner
 
 
from turtle import *
from datetime import datetime
 
screen = Screen()
screen.setup(800, 400)
screen.clear()
screen.register_shape("car_1.gif")
 
global cars, traffic
cars = []
traffic = True
 
def street(length, width):
    global t
    tracer(False)
    a=8
    s = Turtle()
    s.ht()
    s.pensize(8)
    s.pu();s.goto(-length/2,-width/2);s.pd()
    s.fd(length)
    s.pu();s.goto(s.xcor(),s.ycor()+width/2);s.pd()
    for i in range(a):
        s.bk(length/(2*a)-4)
        s.pu()
        s.bk(length/(2*a)+4)
        s.pd()
    s.pu();s.goto(s.xcor(),s.ycor()+width/2);s.pd()
    s.fd(length)
    t = Turtle(shape="circle")
    t.pu()
    t.goto(-250,120)
    tracer(True)
 
def car_start():
    tracer(False)
    car_start = Turtle(shape="car_1.gif")
    car_start.pu()
    car_start.goto(500,50)
    tracer(True)
    return car_start
 
def car(x,y):
    c = car_start().clone()
    cars.append(c)
    print(cars)
 
def space_check(car):
    global space
    dis = []
    a = 0
    for i in cars:
        if car != i and car.xcor() > i.xcor():
            dis.append(car.distance(i.xcor(),i.ycor()))
            print(dis)
 
    for i in dis:
        if i < 200:
            a = a+1
    if a != 0:
        space=False
        print(space)
    else:
        space=True
    return space
 
def trafficlight(x,y):
    global traffic
    if traffic != True:
        traffic=True
        t.color("green")
    else:
        traffic=False
        t.color("red")
 
def move(i):
    space_check(i)
    print(space)
    if cars.index(i) == 0:
        i.bk(2)
    elif space == True:
        i.bk(2)
 
def tick():
    screen.tracer(False)
    for i in cars:
        if traffic == True:
            move(i)
        elif i.xcor() < -200 or i.xcor() > -180:
            move(i)                    
 
        if i.xcor() < -500:
            i.ht()
            cars.remove(i)        
 
    screen.tracer(True)
    screen.ontimer(tick, 2)
 
street(800,200)
if __name__ == "__main__":
    listen()
    onscreenclick(car, 1)
    onscreenclick(trafficlight,3)
    tick()
mainloop()
python_lechner.txt · Zuletzt geändert: 2011/06/25 22:20 von thomas.lechner