Anfänger-Problem...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Voronwe
User
Beiträge: 7
Registriert: Freitag 9. Mai 2008, 14:09
Kontaktdaten:

Freitag 9. Mai 2008, 14:17

Hallo,

zunächst: Bin neu hier, seid ein paar Stunden probiere ich mit python herum. Habe schon einiges mit PHP gemacht, also grundsätzlich kein "Programmier-Neuling" aber mit Python halt schon ;)

habe mal folgende Sache gebastelt (z.T. aus Tutorials übernommen, ich weiß aber was geschieht ;))

Code: Alles auswählen

import cgi

def prim(n):
	p = []
	for x in range(2,n):
		for y in range(2,x):
			if x % y == 0:
				break
		else:
			p.append(x)
	
	for z in p:
		print z, "<br />"
		
	print "Dies sind insgesamt", len(p)

fs = cgi.FieldStorage()
grenze = fs.getvalue("zahl", "10")

print "Alle Primzahlen bis", grenze, ":<br />"

prim(grenze)
Das ist halt eine Auflistung der Primzahlen von 2 bis einer angegebenen Grenze.

Problem:
Wenn ich das Skript mit test.py?zahl=10 aufrufe, wird zwar bei print "Alle Primzahlen bis", grenze, ":<br />" grenze durch 10 ersetzt, allerdings wird nichts weiter angezeigt, die Funktion prim() also nicht ausgeführt(?)...
wenn ich im Skript prim(grenze) durch prim(10) ersetze, wird alles korrekt ausgeführt.
Ich verstehe nicht, wo das Problem liegt!?
Da ja an sich die Variable richtig übertragen wird...

Freue mich über Hilfe ;)
die ente ist eine scheibe.
www.simon-says.org
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 9. Mai 2008, 14:26

grenze enthält eine Zeichenkette, die Funktion prim erwartet aber einen ganzzahligen Wert. Schnelle Lösung:

Code: Alles auswählen

prim(int(grenze))
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Freitag 9. Mai 2008, 14:28

Zudem ist "Zeile 10" falsch eingerückt. Das "else" sollte auf Höhe vom "if" liegen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 9. Mai 2008, 14:29

Voronwe hat geschrieben:Wenn ich das Skript mit test.py?zahl=10 aufrufe
Hallo Voronwe!

Willkommen im Python-Forum!

Code: Alles auswählen

test.py?zahl=10
Damit übergibst du "10" als Text und nicht als Zahl. Damit du damit rechnen kannst, musst du den Text zuerst in eine Zahl umwandeln. Zum Beispiel in eine Ganzzahl:

Code: Alles auswählen

ganzzahl = int("10")
Wenn du zusätzlich zum cgi-Modul auch cgitb importierst und aktivierst, dann bekommst du bessere Fehlermeldungen.
Siehe: http://docs.python.org/lib/module-cgitb.html

mfg
Gerold
:-)

PS: Na super. Was bin ich heute wieder langsam. ;-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Voronwe
User
Beiträge: 7
Registriert: Freitag 9. Mai 2008, 14:09
Kontaktdaten:

Freitag 9. Mai 2008, 14:32

Ok Herzlichen Dank! :)

(PHP ist da toleranter :-P )


//edit:
@Masaru:
ja ich habe mich auch schon über diese Einrückung gewundert. Stammt aus dem Python-Tutorial: http://docs.python.org/tut/node6.html
die haben das da auch so.

Wenn ich es einrücke wie du gesagt hast (und es eigentlich logisch wäre) dann funktioniert es nicht richtig http://www.comunect.de/cgi-bin/python-t ... y?zahl=427

Was ist das Problem?

Danke für eure Hilfen :D
Zuletzt geändert von Voronwe am Freitag 9. Mai 2008, 14:41, insgesamt 2-mal geändert.
die ente ist eine scheibe.
www.simon-says.org
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Freitag 9. Mai 2008, 14:35

*hustet* Python dafür mächtiger ;) *hustet*
Voronwe
User
Beiträge: 7
Registriert: Freitag 9. Mai 2008, 14:09
Kontaktdaten:

Freitag 9. Mai 2008, 14:37

Masaru hat geschrieben:*hustet* Python dafür mächtiger ;) *hustet*
was auch der Grund ist warum ich micht jetz DAMIT befasse und nicht mehr php ;)
die ente ist eine scheibe.
www.simon-says.org
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 9. Mai 2008, 14:48

Masaru hat geschrieben:Zudem ist "Zeile 10" falsch eingerückt. Das "else" sollte auf Höhe vom "if" liegen.
Nein, Zeile 10 ist richtig eingerückt. Das "else" bezieht sich nicht auf das if, sondern auf die for-Schleife, und ergänzt die Liste um eine weitere Primzahl für den Fall, dass die Schleife NICHT mit break verlassen wird.
Voronwe
User
Beiträge: 7
Registriert: Freitag 9. Mai 2008, 14:09
Kontaktdaten:

Freitag 9. Mai 2008, 15:11

ja ok das erklärt dann auch mein problem oben ^^
die ente ist eine scheibe.
www.simon-says.org
sechsrad
User
Beiträge: 173
Registriert: Montag 31. März 2008, 17:09

Freitag 9. Mai 2008, 16:02

hust...pyhton...röchel....röchel....
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 9. Mai 2008, 16:19

sechsrad hat geschrieben:hust...pyhton...röchel....röchel....
Ich verstehe deinen Beitrag nicht.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Freitag 9. Mai 2008, 17:12

Als PHP Ersatz sollte man sich aber über kurz oder lang mit WSGI beschäftigen, sonst hat man von Python's Vorteilen nicht viel.

PS: ich mag ein Killfile für phpBB
TUFKAB – the user formerly known as blackbird
lunar

Freitag 9. Mai 2008, 18:28

mitsuhiko hat geschrieben:PS: ich mag ein Killfile für phpBB
Würde das nicht mit einem Greasemonkey (oder wie das Ding heißt) Skript gehen?
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Freitag 9. Mai 2008, 20:11

pütone hat geschrieben:
sechsrad hat geschrieben:hust...pyhton...röchel....röchel....
Ich verstehe deinen Beitrag nicht.
Da bist du nicht allein. Ich frage mich gerade ernsthaft, ob sechsrads Name nicht prophetisch gewählt ist...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 9. Mai 2008, 20:44

birkenfeld hat geschrieben:
pütone hat geschrieben:
sechsrad hat geschrieben:hust...pyhton...röchel....röchel....
Ich verstehe deinen Beitrag nicht.
Da bist du nicht allein. Ich frage mich gerade ernsthaft, ob sechsrads Name nicht prophetisch gewählt ist...
Den Beitrag verstehe ich :lol:
Antworten