Schleife: Wenn alle b/i ganz--->Meldung

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.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Sonntag 31. August 2008, 16:55

abgdf hat geschrieben:@EyDu: Oh, Entschuldigung (s.o) :oops:. Ich hätte echt nicht gedacht, daß es "for ... else" - Schleifen gibt.
Dafür muss man sich doch nicht entschuldigen, es können ja nicht alle so allwissen sein wie ich :lol:
abgdf hat geschrieben:Sicher sehr komfortabel, andererseits möchte ich mich aber so ausdrücken, daß der Code (z.B. gegenüber C) möglichst wenig Sprachbesonderheiten enthält.
Dann solltest du wohl besser C programmieren ;-) Nee, mal im Ernst: Ich benutze eine Sprache ja gerade deshalb, weil ich der Meinung bin, dass sie geeigneter für eine Aufgabe ist als eine andere. Wenn ich die (sinnvollen) neuen Features nicht nutze habe ich keinen Vorteil. Versteht ein "C-Programmierer" keine Python-Programme ist das nicht mein Problem.
BlackJack

Sonntag 31. August 2008, 16:56

Warum dann eine andere Sprache verwenden, wenn man deren Konstrukte nicht benutzen möchte? Gerade gegenüber solchen "low level"-Sprachen wie C bietet Python da einiges.
abgdf

Sonntag 31. August 2008, 21:25

Hi,
Dann solltest du wohl besser C programmieren
Genaugenommen wollte ich das eigentlich auch, hab's auch mehrfach versucht, hab' es dann aber jedesmal wieder seingelassen. C's Datentypen waren mir zu schwer zu handhaben, und Speicherfehler zu finden, war zu schmerzhaft. Es fehlten mir da vor allem so aussagekräftige Fehlermeldungen wie in Python. Um in C ein größeres Programm zu realisieren, muß man eben den Aufwand treiben, der dazu nötig ist und allgemein auch betrieben wird, das heißt, man braucht größere Entwicklerteams. Als einzelner Hobbyprogrammierer kann ich in Python viel mehr realisieren, das heißt, ich kann in Python Sachen machen, die ich in C schon vom Aufwand her gar nicht schaffen könnte.

Mit sprachtypischen Features ist das so eine Sache: Perl, das voll von solchen speziellen Features ist, ist wohl ein gutes Negativbeispiel. Jemand, der Perl nicht wirklich gut kennt, kann Code nicht verstehen, der von Perl-Profis geschrieben ist, obwohl er durchaus schon brauchbare Programme schreiben kann.
Most important, you don't have to know everything there is to know about Perl before you can write useful programs. You can learn Perl "small end first". You can program in Perl Baby-Talk, and we promise not to laugh. Or more precisely, we promise not to laugh any more than we'd giggle at a child's creative way of putting things ... Though simple in many ways, Perl is also a rich language, and there is much to learn about it. That's the price of making hard things possible. Although it will take some time for you to absorb all that Perl can do, you will be glad that you have access to the extensive capabilities of Perl when the time comes that you need them.
http://www.unix.com.ua/orelly/perl/prog3/ch00_01.htm
(Kamel-Buch)
Wieauchimmer, jedenfalls möchte ich gern altbekannte Strukturen verwenden, wenn das möglich ist.
Ich glaube, das stimmt auch ganz gut mit dem Zen von Python überein.
Ist aber sicher Geschmackssache.

Viele Grüße
BlackJack

Sonntag 31. August 2008, 21:49

Das ``for`` oder ``while`` mit ``else`` verwendet werden kann, ist vielleicht ein wenig "exotisch", aber man kann und sollte altbekannte C-Konstrukte schon deshalb nicht verwenden, weil es keine Entsprechung der ``for``-Schleife von C in Python gibt. Python kennt "nur" das iterieren über "iterierbare" Objekte und dieser Umstand (und auch Guido) favorisiert Iteratoren/Generatorausdrücke, die es so in C nicht gibt.

Die guten alten C-Kosntrukte mit iterieren über ``xrange(len(obj))`` und Indexzugriffen nach zu bauen ist definitiv eine schlechte Idee. Man sollte nicht C in Python programmieren.

Und die Lösungen mit ``not any(…)`` oder ``all(…)`` und einem Generatorausdruck finde ich recht "pythonisch" und elegant und eigentlich auch ganz gut verständlich.
Antworten