Alle Primzahlen bis t ausgeben lassen

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.
Antworten
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@zsanzhar: Wenn ``for``- und ``while``-Schleifen gleich wären, bräuchte man ja nur eines von beiden. Es hat einen Grund das es beide gibt.

``for``-Schleifen sind dafür da über Werte zu iterieren für die man vor der Schleife schon einen Ausdruck schreiben könnte um die zu erzeugen, und das kann man wenn man ganze Zahlen von einem Start- bis zu einem Endewert (exklusive) braucht ganz einfach mit `range()` machen. Ohne das man vor und irgendwo in der Schleife noch irgend etwas zusätzliches machen muss, wie das bei ``while`` der Fall ist. ``while`` ist da schwerer zu verstehen, weil sich der Code für Initialisierung, Abbruchbedingung, und aktualisieren des oder der Werte die für die Abbruchbedingung herangezogen werden, über den Code verteilt sind, während das bei der ``for``-Schleife alles hinter dem ``in`` steht. Und das auch kompakter.

Edit: Und Du suchst nur bis 48 weil Du zwar 50 angibst, dann aber nur die Zahlen 2 bis 48 testest:

Code: Alles auswählen

In [17]: print(list(range(2, 50 - 1)))
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48]
Zuletzt geändert von __blackjack__ am Sonntag 8. Juli 2018, 13:26, insgesamt 1-mal geändert.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17753
Registriert: Sonntag 21. Oktober 2012, 17:20

@zsanzhar: in diesem Fall ist aber eine for-Schleife deutlich besser, weil von vornherein klar ist,bis zu welchem Maximalwert die Schleife durchlaufen wird und einfach immer nur ein Zähler hochgezählt wird.

Im Beispiel t=50 mag es bis 48 gehen, für andere t eben bis zu einem anderen Wert, aber niemals bis t. Das ist halt falsch.
Antworten