RSS-Feed

Onlinetest Python

von Kai um 20:37 am Montag, 11. Januar 2010 in Klausuren, Programmiersprachen, Studium | 0 Kommentare

Heute war es wieder mal soweit: Onlinetest. Dieses mal in Python. Nachdem ich erfolgreich meine Maschine (iMac mit Debian, Windowmanager war glaub ich FVWM) zweimal abgeschossen hatte, bin ich in der vorgegebenen Zeit von 90 Minuten knapp fertig geworden. Eigentlich sind die gestellten Aufgaben in den bisherigen Onlinetests, die ich so mitgeschrieben habe, nicht extrem schwer, trotzdem finde ich es aber schwierig auf Kommando kreativen (und möglichst cleveren) Code zu schreiben.

Es sind eben diese typischen Prüfungssituationen bei denen man unter erschwerten Bedingungen klaren Kopf behalten muss ;-)
Das waren die Aufgaben:

Aufgabe 1:

Man soll von der Standardeingabe eine Zeile einlesen und unnötige Leerzeichen entfernen. Außerdem soll jedes Wort mit einem großen Anfangsbuchstaben in Großbuchstaben umgewandelt wieder ausgegeben werden.

# a1.py
while True:
    line = raw_input()
    line = line.split()
    for word in line:
        if(str.isupper(word[0])):
            print str.upper(word),
        else:
            print word,
    print # Zeilenumbruch für schönere Ausgabe

Aufgabe 2:

Die zweite Aufgabe bestand darin, eine Datei belegung.dat einzulesen, die folgendes Format hatte: <VL-Nr>; <matrikelNr>; <VL-Name>; <VL-Typ>.
Danach sollte die so eingelesene Datei in folgendem Format in eine Datei ausgabe.dat geschrieben werden:
<VL-Nr>,<AnzahlBelegungen>, <VL-Name> <VL-Typ>
Momentan sind in der Ausgabe noch doppelte Einträge drin, das müsste noch geändert werden.

# a2.py
dict = {}
belegung = []

input = open('belegung.dat','r')
for line in input:
    line = line.split(';')
    belegung.append(line)

input.close()

for line in belegung:
    if dict.has_key(line[0]):
        dict[line[0]] += 1
    else:
        dict[line[0]] = 1

ausgabe = file('ausgabe.dat','w')

for nummer, anzahl in dict.iteritems():
    for line in belegung:
        tmp = ""
        if nummer==line[0]:
            try:
                tmp = str(nummer) + ',' + str(anzahl) + ',' + line[2] + '\n'
                ausgabe.write(tmp)
            except:
                pass

ausgabe.close()

Aufgabe 3:

Die dritte Aufgabe bestand darin, einen “sprach-begabten” Taschenrechner zu programmieren, der beim Aufruf des Programms Argumente wie “17 plus 4 minus 3 gleich” übernimmt und korrekt auswertet. Es soll bewusst auf Punkt-vor-Strich Rechnung verzichtet werden (also fällt eval() flach). Außerdem kann man der Einfachheit davon ausgehen, dass nur korrekte Argumente übergeben werden.
Ich hab ungefähr so etwas hingeschrieben:

# a3.py
import sys

i = 0
result = 0
input = sys.argv[1:]
while i < len(input):
    if input[1]=="gleich":
        result = int(input[0])
        break
    elif input[i]=="plus":
        result = int(input[i-1]) + int(input[i+1])
        input[i+1] = result
    elif input[i]=="minus":
        result = int(input[i-1]) - int(input[i+1])
        input[i+1] = result
    elif input[i]=="mal":
        result = int(input[i-1]) * int(input[i+1])
        input[i+1] = result
    elif input[i]=="durch":
        result = int(input[i-1]) / int(input[i+1])
        input[i+1] = result
    i += 1

print "Ergebnis:",str(result)

Bisher Keine Kommentare zu "Onlinetest Python"

RSS Feed für Kommentare zu diesem Artikel.  TrackBack URL

Hinterlasse einen Kommentar