2016-06-03 19 views
0

ich eine Schleife erstellen möchten, die läuft n-Zeiten, in denen:Python-Schleife mit Standardwert sonst unendlich

  1. ‚n‘ kann frei verändert werden
  2. ‚n‘ sollte einen Standardwert haben, wenn kein Wert ist
  3. besteht immer
  4. 'n' sollte ausgeführt werden, wenn

Mein aktueller Code sieht wie folgt gesucht:

n = raw_input('number of runs: ')  # Get user input for 'n' 
if n == '':        # Empty input -> run the loop 1000 times (condition 2) 
    a = 1000       # Default value 
elif n == 'oo':       # Run the loop forever 
    a = 9000       # This value isn't important could be 1 aswell see while statement 
else: 
    a = n        # Run the loop for the value provided in raw_input 
i = 1 
while i <= int(a): 
    if n == 'oo': 
     a += 1       # If n=∞, increment 'a' after each iteration so the loop never stops 
    print i        # Print 'i' to see if everything works like expected 
    i += 1 

Wie kann ich diesen Code eleganter machen (ich habe das Gefühl, dass es einen einfacheren Weg gibt)? Wie kann ich meine Schleife (für n = 'oo') anhalten, wann immer ich will, ohne einen Tastatur-Interrupt zu benutzen?

+0

Sie können einen Standardparameter in einer Funktion verwenden, wenn Sie es eine Standard-Anzahl, wie oft ausgeführt werden soll. Etwas wie: 'def loop (n = 1000):' –

+0

Ja, du hast Recht und ich wusste davon, aber ich möchte in diesem Fall keine Funktion verwenden. –

+0

"Wie kann ich meine Schleife (für n = 'oo') anhalten lassen, wann immer ich will, ohne einen Tastatur-Interrupt zu verwenden?", Was möchten Sie dann angeben, wenn Sie möchten, dass es aufhört? –

Antwort

2

Verwenden Sie ein for -loop und verschiedene Iterables:

from itertools import count 

n = raw_input('number of runs: ') 
if n == '':  #empty input-> run the loop 1000 times 
    counter = xrange(1, 1001) 
elif n == 'oo': #run the loop forever 
    counter = count(1) 
else: 
    counter = xrange(1, int(n)+1) #otherwise run the loop for the value provided above 
for i in counter: 
    print i #print i to see if everything works like expected 
+0

Dies scheint den Job besser zu machen als meine Lösung. Irgendeine Idee, wie ich eine Abbruchbedingung implementieren könnte, wenn ich die Endlosschleife laufe? –

+0

@ A.Bogner 'wenn mein_Zustand: Pause' – syntonym

0
a = raw_input('Enter value for a: ') 

try: 
    a = int(a) 
except: 
    if a != 'oo': 
     a = 10000 

if a == 'oo': 
    while True: 
     print "infinite" 
     pass 
else: 
    while a != 0: 
     # do something 
     print a 
     a = a - 1