Programmieren für Philosophinnen und Philosophen: Unterschied zwischen den Versionen

Aus Philo Wiki
Wechseln zu:Navigation, Suche
K (=Textproduktion=)
Zeile 63: Zeile 63:
  
 
- "stabreime": nur wörter mit dem selbem anfangsbuchstaben verwenden.
 
- "stabreime": nur wörter mit dem selbem anfangsbuchstaben verwenden.
 +
 +
<pre>
 +
import random
 +
satz = [ 'wer', 'hat', 'an', 'der', 'uhr', 'gedreht', ',',
 +
        'ist', 'es', 'wirklich', 'schon', 'so', 'spaet', '?' ]
 +
 +
temp = random.choice(satz)
 +
print temp,
 +
i = 1
 +
while i < len(satz):
 +
    wort = random.choice(satz)
 +
    if (temp[0]==wort[0]):
 +
        print wort,
 +
        i = i + 1
 +
</pre>
  
 
- nur die hauptwörter austauschen.
 
- nur die hauptwörter austauschen.
Zeile 69: Zeile 84:
  
 
- den ergebnis text in einen string schreiben und erst am schluss mit einem print statement ausgeben.
 
- den ergebnis text in einen string schreiben und erst am schluss mit einem print statement ausgeben.
 +
 +
<pre>
 +
import string
 +
import random
 +
ein_satz = 'wer hat an der uhr gedreht , ist es wirklich schon so spaet ?'
 +
satz = string.splitfields(ein_satz, ' ')
 +
 +
i = 0
 +
while i < len(satz):
 +
    print random.choice(satz),
 +
    i = i + 1
 +
</pre>
  
 
- das programm komprimieren, so dass die selbe funktionalität nur die halbe anzahl an programm statements benötigt.
 
- das programm komprimieren, so dass die selbe funktionalität nur die halbe anzahl an programm statements benötigt.

Version vom 19. Oktober 2004, 23:41 Uhr

Termine

  • 5.10.2004 17:00-20:00,
  • 19.10.2004 17:00-20:00, Hörsaal 3A (NIG, 3. Stock)

Entwicklungsumgebung

wir verwenden Python 2.3.4, zu finden unter http://www.python.org/download.

dokumentation der programmiersprache python und der zugehörigen standard libraries ist in der installation enthalten (idle menü "help" - "python docs").

falls der einstieg in die python entwicklungsumgebung idle probleme bereitet ist http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/index_ger.html zu empfehlen.

(fragen, anmerkungen etc auf der diskussions seite, link unten in der mitte)

Python on Apple Macintosh

"MacOs X.3" beinhaltet bereits die komplette "MacPython-engine". Das Einzige was Dir also noch fehlt ist eine passende Oberfläche in der Du arbeiten kannst. Es gibt sicher mehrere "skins", die Du dabei verwenden kannst. Für den Anfang dürften die "MacPython 2.3 for Panther addons" reichen, welche Du auf dieser Seite herunterladen kannst.

Klicke dann einfach auf den Link "MacPython 2.3 for Panther addons"

Das Einzige was Du bei der Installation beachten musst, ist, dass Du als Ziellaufwerk Deine "Hauptfestplatte" angibst.

Das Programm findest Du dann im Ordner: "Festplatte/Programme/MacPython-2.3"

Mit Doppelklick auf "PythonIDE" startest Du das Programm.


Die alte Version von "MacPython" ("MacPython-OSX 2.3.3") solltest Du, so steht es auf der Webseite des Herstellers, besser nicht verwenden wenn Du "OsX.3" verwendest, da es zu Komplikationen mit dem bereits vorinstallierten "MacPython 2.3" kommen kann. Diese Version solltest Du also nur dann verwenden, wenn Du noch immer "OsX.2" verwendest. Auf derselben Seite findest Du natürlich auch eine Version für "Classic" ("MacOs 9").

Welche Version von "MacOs" auf Deinem Computer installiert ist, kannst Du herausfinden indem du links oben auf das "Apfel-Symbol" klickst und dannach "Über diesen Mac" wählst.


Programme

(fragen, anmerkungen etc auf der diskussions seite, link unten in der mitte)

Textproduktion

# woerter zufaellig zusammenstellen

import random
satz = [ 'wer', 'hat', 'an', 'der', 'uhr', 'gedreht', ',', 
         'ist', 'es', 'wirklich', 'schon', 'so', 'spaet', '?' ]
i = 0
while i < 14:
    print random.choice( satz),
    i = i + 1

#eof

als nächstes könnten wir ein programm schreiben das haikus generiert. (zb. 1.zeile 5 silben, 2.zeile 7 silben, 3.zeile 5 silben). zuerst müssen wir uns überlegen wie wir die daten im programm halten. eine liste von strings wie im beispiel oben ist zuwenig - die anzahl der silben pro wort ist nicht enthalten. dann müssen wir überlegen nach welchem verfahren wir vorgehen.

(vorschläge, entwürfe, programmcode für diese und die folgenden fragstellungen sind willkommen.)

weitere aufgabenstellungen für erweiterungen oder modifikationen des "woerter zufaellig zusammenstellen" programmes:

- "stabreime": nur wörter mit dem selbem anfangsbuchstaben verwenden.

import random
satz = [ 'wer', 'hat', 'an', 'der', 'uhr', 'gedreht', ',',
         'ist', 'es', 'wirklich', 'schon', 'so', 'spaet', '?' ]

temp = random.choice(satz)
print temp,
i = 1
while i < len(satz):
    wort = random.choice(satz)
    if (temp[0]==wort[0]):
        print wort,
        i = i + 1

- nur die hauptwörter austauschen.

- den ausgangstext nicht als liste von strings sondern den ganzen text als einen string an das programm übergeben. das programm muss dann die liste von wörtern die zufällig zusammengestellt werden sollen selbst erzeugen.

- den ergebnis text in einen string schreiben und erst am schluss mit einem print statement ausgeben.

import string
import random
ein_satz = 'wer hat an der uhr gedreht , ist es wirklich schon so spaet ?'
satz = string.splitfields(ein_satz, ' ')

i = 0
while i < len(satz):
    print random.choice(satz),
    i = i + 1

- das programm komprimieren, so dass die selbe funktionalität nur die halbe anzahl an programm statements benötigt.

- ausgewählte wörter nicht noch einmal auswählen.

Wiki Integration

unsere textproduktionsfunktionen könnten wir im web der allgemeinheit zur verfügung stellen. eine einfache variante wäre es die funktionen in ein wiki zu integrieren. moin ist ein wiki das in python geschrieben ist. moin unterstützt parser plugins. im folgenden ein beispiel für einen sehr einfachen parser. dem können wir die schnittstelle entnehmen auf der wir aufsetzen könnten.

"""
    MoinMoin - HTML Text Parser

    Copyright (c) 2001 by Christian Bird <chris.bird@lineo.com>
    All rights reserved, see COPYING for details.

"""
class Parser:
    """
        Send HTML code raw
    """

    def __init__(self, raw, request, **kw):
        self.html = raw

    def format(self, formatter):
        """ Send the "parsed" text.
        """
        #this is pretty easy since converting HTML to HTML is a no-brainer
        print self.html