Range im nachhinein verändern

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
Sukra
User
Beiträge: 3
Registriert: Mittwoch 10. Juli 2013, 15:12

Hallo Forum,
Ich programmiere noch nicht sehr lange und bin nun auf die Frage gestoßen, ob man die range im nachhinein noch ändern kann.
Ich meine z.B.

for x in range(0,3):
print (x)

Ich habe es schon so probiert:

a=3
for x in range(0,a):
print (x)
a+=1

,aber trotzdem wird die Schleife nur 4-mal ausgeführt.
Ich bedanke mich schonmal im Vorraus für eure Hilfe.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@Sukra: Mit `range(0,a)` wird der in diesem Moment durch `a` repräsentierte Wert übergeben. Danach gibt es "kein Zurück". `range()` wird nicht für weitere Durchläufe gucken, was hinter `a` steckt. `range()` weiß nicht mal, dass `a` überhaupt mit im Spiel ist, da bei `range()` nur der Zahlwert (also: die 3) ankommt. Kurz: Dein Vorhaben geht so nicht.

Mögliche Alternativen: Eine `while`-Schleife (`while a < 3:`) oder - falls eine Schrittweite gefordert ist - `range()` die Schrittweite gleich mit übergeben.

Interessant wäre zu wissen, was dein eigentliches Vorhaben ist. Vielleicht gibt es eine elegante Lösung dafür, von du die nicht mal etwas ahnst... ;)
Sukra
User
Beiträge: 3
Registriert: Mittwoch 10. Juli 2013, 15:12

@snafu
Mein Vorhaben war es ein Tic-Tac-Toe Spiel zu basteln. Da es ja maximal nur 9 Durchläufe gibt, da dann das Spielfeld voll ist, wollte ich die Abfrage wo der jeweilige Spieler seinen Stein hinhaben möchte Neun-mal durchlaufen lassen, bis das Spiel spätestens vorbei ist und somit eventuell keiner gewonnen hat. Da aber ja auch Falsche Eingaben als auch doppelte wiederholt werden sollen, möchte ich diesen Schritt wiederholen lassen.
Aber die Idee mit der while-Schleife gefällt mir. Werde das später einmal ausprobieren.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Das ist eher ein Fall für eine Endlosschleife die bei einer definierten Endebedingung verlassen wird.

Code: Alles auswählen

while True:
    do_things()
    if finished:
        break
Sukra
User
Beiträge: 3
Registriert: Mittwoch 10. Juli 2013, 15:12

Ok, Vielen Dank für deine Hilfe.
Werde mich wohl morgen nochmal ran setzen und das so umschreiben.
Antworten