Seite 2 von 2

Verfasst: Samstag 10. Mai 2008, 10:29
von EyDu
Hallo Addili!

Mach für deine Frage doch mal einen neuen Thread mit einem entsprechenden Betreff auf und im entsprechenden Unterforum auf. Dann erhöhen sich die Chancen, dass dir jemand helfen kann.

Verfasst: Samstag 10. Mai 2008, 10:43
von numerix
birkenfeld hat geschrieben:Non sequitur... wenn man ein Konstrukt nicht kennt, ist es nicht verwunderlich, dass man es nicht verwendet.
Einverstanden.
birkenfeld hat geschrieben:
pütone hat geschrieben:Aus meiner Sicht machen die else-Konstruktionen für Schleifen einen Quelltext schlechter lesbar.
Hier gilt das gleiche wie für Dekoratoren oder Lambdas: Man muss das Element kennen, um den Quelltext zu können. Bei anderen Elementen, wie if-else, erschließt sich der Sinn dem Betrachter von selbst -- aber hätte man nur solche Elemente zur Verfügung, würde Python zu einer Art "kleinstem gemeinsamen Nenner" aller Sprachen und damit ziemlich uninteressant.
Hier mag ich dir nun nicht folgen. Während die Verwechslungsgefahr mit verwandten Konstruktionen bei z.B. Lambdas oder Dekoratoren äußerst gering ist, gilt dies für ein "else" sicher nicht.
Und: Lambdas und Dekoratoren sind mächtige Elemente, ohne die sich manches nur wesentlich umständlicher (vielleicht auch gar nicht - aber das kannst du besser beurteilen als ich) realisieren lässt. Vom "Schleifen-else" würde ich das nicht behaupten.

Verfasst: Samstag 10. Mai 2008, 11:04
von BlackJack
Mit dem Schleifen-``else`` spart man sich eine Variable, und damit eine Namensgebung, für den Zustand wie die Schleife verlassen wurde.

Code: Alles auswählen

    flag = True
    for item in obj:
        if predicate(item):
            flag = False
            break
    if flag:
        print 'spam'

    # versus:
    
    for item in obj:
        if predicate(item):
            break
    else:
        print 'spam'

Re: Anfänger-Problem...

Verfasst: Samstag 10. Mai 2008, 20:37
von Mycron
Voronwe hat geschrieben:

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)
Nabend!

Bin noch ein sehr sehr unerfahrener Neuling in Python und in Programmieren überhaupt (außer HTML) und will das eben mit Pyhon ändern. Auf de Thread bin ich gekommen als ich ne Lösung für mein Problem gesucht habe. Gut der Thread löst zwar mein Problem nicht, aber wenn ich scho dabin will ich noch eben ne Wissenslücke schließen ;)

Und zwar versteh ich in diesem Skript die Zeile 5 nicht. Kann mir jemand erklären was genau sie bewirkt? Also, an "p" wird was übergeben, des ist mir schon klar, aber was?

Schönen Dank schonmal ;)

Mycron

Verfasst: Samstag 10. Mai 2008, 20:52
von ck
meinst du das?

Code: Alles auswählen

p = []
Hier wird der Variable p eine leere Liste zugewiesen.

Verfasst: Sonntag 11. Mai 2008, 11:01
von Mycron
Ah, dann lag ich mit meiner Vermutung schonmal richtig ;) Ok, wenn mir jetzt noch wer die Funktion von Zeile 18 und 19 erklärt hab ich das Skript auch kapiert :D

Mycron

Verfasst: Sonntag 11. Mai 2008, 11:17
von EyDu
Mycron hat geschrieben:Ok, wenn mir jetzt noch wer die Funktion von Zeile 18 und 19 erklärt hab ich das Skript auch kapiert :D
Schau doch einfach in der Doku nach: Library Reference -> cgi. Da ist es erklärt.

Verfasst: Sonntag 11. Mai 2008, 11:19
von Masaru
EyDu hat geschrieben:... Dann muss ich dir leider vorwerfen, dass du wohl nie das Tutorial gelesen hast, da steht es nämlich drin :lol: ...
Korrekt ^^, ich schau es mir nun auf jeden Fall nochmal an.