2016-07-13 9 views
-1

Hier ist mein Code:Python While-Schleife nicht ordnungsgemäß arbeiten

def pressC(): 
    """ Wait for "c" to be entered from the keyboard in the Python shell """ 
    entry = " " 
    while(entry != "c"): 
     entry = raw_input("Press c to continue. ") 
    print("Thank you. ") 
    print 

def unstuck(): 
    """ This gets the robot unstuck if it becomes stalled by hitting a wall """ 
    stalls = 0 
    while timeRemaining(120): 
     stallStatus = getStall() 
     if(stallStatus == 1): 
      backward(1,1) 
      turnRight(1,1.7145) 
      stalls = stalls + 1 
      return stalls 
     else: 
      forward(1,1) 
    stop() 

def printResults(stalls): 
    """ This function prints the amount of times the robot stalled """ 
    print 
    print ("The amount of stalls that occured: " + str(stalls) + ". ") 

def main(): 
    pressC() 
    numStalls = unstuck() 
    printResults(numStalls) 

main()  

Also, ich bin mit dem Code auf dem myro Simulator und den benutzerdefinierten unstuck() Funktion nur einmal ausgeführt wird, und dann Druck, der Roboter ist nur einmal ins Stocken geraten. Die erste While-Schleife wird ordnungsgemäß ausgeführt, die zweite While-Schleife jedoch nicht. Wie auch immer, ich möchte, dass es für die 120 Sekunden läuft, die ich eingegeben habe. Ich brauche Hilfe!

+5

'while' ist keine Funktion, und ich werde glücklich wetten, es funktioniert gut. – jonrsharpe

+5

Bitte stellen Sie sicher, dass Sie Ihren Einzug richtig kopieren, wenn Sie Python-Code posten. Schlecht eingerückter Python-Code ist Unsinn. – khelwood

+0

Sorry, aber es ist nicht. Ich glaube, es hat etwas mit den gedruckten Ergebnissen zu tun. Ich habe diesen Teil gelöscht und die while-Schleife funktioniert einwandfrei, also glaube ich, dass es etwas mit meiner Kodierung in diesem Bereich zu tun hat. –

Antwort

1

Sie haben Ihre return Anweisung an der falschen Stelle. Versuchen Sie dies:

# This gets the robot unstuck if it is stalled 
def unstuck(): 
    """ This gets the robot unstuck if it becomes stalled by hitting a wall """ 
    stalls = 0 
    while timeRemaining(120): 
     stallStatus = getStall() 
     if(stallStatus == 1): 
      backward(1,1) 
      turnRight(1,1.7145) 
      stalls = stalls + 1 
     else: 
      forward(1,1) 
    stop() 
    return stalls 
+0

Danke! Alles funktioniert einwandfrei mit deinem Schnitt! –

Verwandte Themen