Oppgaver

til Python-kurs 12. oktober 2000
Ole Martin Bjørndalen (olemb@stud.cs.uit.no)

1 Passord-generator

Lag et program som skriver ut en liste med ti nye passord hver gang det kjøres. Passordene skal være på 8 tegn, men du velger eventuelle andre begrensninger. (Hint: random.choice())

2 Ordteller

Lag et program som leser en fil og teller hvor mange ord og hvor mange unike ord den inneholder. (Hint: bruk et dictionary.)

3 Mimetype-program

Lag et program som skriver ut MIME-typen til en fil basert på filnavnet. MIME-typene finner du i /etc/mime.types i Linux. Programmet skal kunne brukes slik ('$' er prompt):
    $ mimetype test.html
    test.html: text/html
    $ mimetype *
    spam.jpg: image/jpeg
    egg.gif: image/gif
    

4 Webserver

Denne oppgaven fikk jeg ikke gjort ferdig, men du kan prøve den likevel. Spør hvis du har noen spørsmål.

Lag en enkel webserver som implementerer GET-metoden. En HTTP-request ser slik ut:

GET /en/eller/annen/fil.html HTTP/1.1

    
Du kan overse alt annet enn den første linjen foreløpig.

Hvis filen finnes, sender du tilbake en response som består av en header, en blank linje og filen som ble requestet.

HTTP/1.0 200 Document follows
Server: Myserver/1.0
Content-Type: text/html
Content-Length: 1023



...
    
Content-Type er filens MIME-type. Den kan du enten hardkode til "text/html", eller du kan bruke koden fra forrige oppgave.

For å gjøre det litt enklere har jeg laget denne lille modulen.

import socket

def create(port=8080, reuse_address=0):
    """Return a socket bound to the given port."""
    host=''
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    if reuse_address:
        sock.setsockopt(socket.SOL_SOCKET,
                        socket.SO_REUSEADDR, 1)
    sock.bind((host, port))
    sock.listen(1)
    
    return sock

Nyttige linker

Noen gode bøker
The Quick Python Book, Daryl Harms and Kenneth McDonald (Manning)
Learning Python, Mark Lutz and David Ascher (O'Reilly)
Dokumentasjon (Tutorial, Library Reference, ...)
http://www.python.org/doc/
Webside
http://www.python.org/
Newsgruppe
comp.lang.python