webapplikationen, for-schleife in html

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
vallas
User
Beiträge: 4
Registriert: Montag 27. April 2009, 13:10
Kontaktdaten:

hallo, ich habe folgendes problem:
die print anweisung in der for-schleife gibt nix aus. wenn ich das i durch eine 0 ersetzt zeigt er mir immer das 1. element an. die schleife läuft also korrekt. gehe eher davon aus, dass es irgendein formatproblem ist.

Code: Alles auswählen

for i in name:
    print "<p>%s</p>" %(name[i])
@sma: danke für die tipps. das einlesen funktioniert nun einwandfrei
mfg
valentin
Zuletzt geändert von vallas am Donnerstag 30. April 2009, 09:19, insgesamt 2-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Warum machst du es dir so schwer statt ein Framework zu nehmen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
vallas
User
Beiträge: 4
Registriert: Montag 27. April 2009, 13:10
Kontaktdaten:

würde ich ja gerne, leider ist dass die aufgabenstellung des profs. :(
viele grüße
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ein CGI-Script würde ich nicht als Webanwendung bezeichnen. Aber da es nur eine Übungsaufgabe ist... Du solltest dich schlau machen, wie ein CGI-Script aufgebaut sein muss. Es hat einen Header und einen Body. Bei dir fehlt der Header. Du kannst dir das Ausgeben von " übrigens viel einfacher machen, wenn du als äußere Anführungszeichen entweder ein ' oder bei mehrzeiligen "Templates" auch """ benutzt.

Zum Lesen der Daten würde ich eine Schleife bemühen. Ist es IMHO schlechter Stil, eine potentiell in der Größe unbeschränkte Datei im Ganzen in den Hauptspeicher zu lutschen. Zum Splitten eines Strings... na, wie heißt Split wohl auf Englisch...

Stefan
vallas
User
Beiträge: 4
Registriert: Montag 27. April 2009, 13:10
Kontaktdaten:

@sma: danke für die tipps, das einlesen funktioniert nun einwandfrei.
edit: hab rausgefunden. muss natürlich so aussehen

Code: Alles auswählen

for i in range(0,len(name)):
    print "<option>%s</option>" %name[i]
viele grüße
valentin
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Code: Alles auswählen

print u'\n'.join(imap(u'<option>{0}</option>'.format, name))
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

vallas hat geschrieben:

Code: Alles auswählen

for i in range(0,len(name)):
    print "<option>%s</option>" %name[i]
:o
Na, da war deine erste Idee aber besser:

Code: Alles auswählen

for i in name:
    print "<option>%s</option>" % i
Wobei i nicht so ganz der passende Name ist...
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
vallas
User
Beiträge: 4
Registriert: Montag 27. April 2009, 13:10
Kontaktdaten:

hi rebecca,
so ging es aber nicht :(

Code: Alles auswählen

for i in name:
    print "<p>%s</p>" %(name[i])
@ DasIch: könntest du den code mal kurz erläutern?

Code: Alles auswählen

print u'\n'.join(imap(u'<option>{0}</option>'.format, name))
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Code: Alles auswählen

for i in name: 
    print "<p>%s</p>" %(name[i])
da "i" in deinem Code bereits das enstprechende Element aus "name" ist.
von daher:

Code: Alles auswählen

for i in name: 
    print "<p>%s</p>" % i
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

vallas hat geschrieben:@ DasIch: könntest du den code mal kurz erläutern?

Code: Alles auswählen

print u'\n'.join(imap(u'<option>{0}</option>'.format, name))
str.format ist eine Methode zum formatieren von Strings die es seit 2.6/3 gibt, wie dass genau funktioniert steht in der Doku.

imap funktioniert wie map gibt aber einen Generator zurück. map nimmt im Allgemeinen ein callable entgegen und eine Sequenz und ruft das callable für jedes Element in der Sequenz auf und gibt dann die Ergebnisse als Liste zurück. Pythons map kann noch mehr dass lässt sich aber auch in der Doku nachlesen.

''.join ist eine Methode auf Strings. Es nutzt den String als Seperator für die Strings in der übergebenen Sequenz.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Ich sehe da immer noch keine Header, mit CGI hat das also in dieser Form gar nichts zu tun.
Antworten