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.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

pütone hat geschrieben:... 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. ...
Vielen Dank für die Aufklärung :). Da programmiere ich nun fast schon 4 Jahre mit Python, und habe ein solches Konstrukt nie verwendet, bzw. war mir nie bewusst, dass sowas funktioniert.

Man lernt nie aus :D
>>Masa<<
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Masaru hat geschrieben:Da programmiere ich nun fast schon 4 Jahre mit Python, und habe ein solches Konstrukt nie verwendet, bzw. war mir nie bewusst, dass sowas funktioniert.
Was deutlich macht, dass man dieses Konstrukt eigentlich auch nicht braucht (natürlich auch nicht bei diesem ohnehin sehr ineffizienten Primzahlprogramm des OP) und vielleicht sogar eher darauf verzichten sollte, damit entsprechende Missverständnisse gar nicht erst aufkommen können.

Aus meiner Sicht machen die else-Konstruktionen für Schleifen einen Quelltext schlechter lesbar.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

pütone hat geschrieben:
Masaru hat geschrieben:Da programmiere ich nun fast schon 4 Jahre mit Python, und habe ein solches Konstrukt nie verwendet, bzw. war mir nie bewusst, dass sowas funktioniert.
Was deutlich macht, dass man dieses Konstrukt eigentlich auch nicht braucht (natürlich auch nicht bei diesem ohnehin sehr ineffizienten Primzahlprogramm des OP) und vielleicht sogar eher darauf verzichten sollte, damit entsprechende Missverständnisse gar nicht erst aufkommen können.
Non sequitur... wenn man ein Konstrukt nicht kennt, ist es nicht verwunderlich, dass man es nicht verwendet.
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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Masaru hat geschrieben:Vielen Dank für die Aufklärung :). Da programmiere ich nun fast schon 4 Jahre mit Python, und habe ein solches Konstrukt nie verwendet, bzw. war mir nie bewusst, dass sowas funktioniert.
Dann muss ich dir leider vorwerfen, dass du wohl nie das Tutorial gelesen hast, da steht es nämlich drin :lol: .
addili
User
Beiträge: 7
Registriert: Samstag 10. Mai 2008, 09:43

Hallo!
Ich habe als Infoprojekt aufbekommen ein Sonnensystem zu programieren.
Das war soweit auch kein Problem aber, wie Informatiklehrer so sind, hatte auch meiner etwas zu mekern...
Und zwar soll sich die Sonne in die Mitte bewegen und die Distanzen zur Sonne sollen sich ändern wenn der Canvas größer gezogen oder verkleinert wird.
Soweit ist das ja auch kein Problem aber dafür brauch ich den Befehl der mir sagt wie groß der Canvas nach dem auseinendrziehen ist.
Mein Lehrer meinte es geht mit cget aber das funktioniert irgendwie nicht.

Nochmal kurz: Wer kennt den Befehl, wie man herausfindet wie groß der Canvas nach dem auseinanderziehen ist?

Danke schon mal:)

liebe Grüße
Adrianna
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.
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'
Mycron
User
Beiträge: 12
Registriert: Samstag 10. Mai 2008, 20:18

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
ck
User
Beiträge: 11
Registriert: Samstag 10. Mai 2008, 17:44
Kontaktdaten:

meinst du das?

Code: Alles auswählen

p = []
Hier wird der Variable p eine leere Liste zugewiesen.
Mycron
User
Beiträge: 12
Registriert: Samstag 10. Mai 2008, 20:18

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
Achtung, ein n00b! ;)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

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.
Antworten