``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]