2017-06-22 8 views
-1
import turtle  

t = turtle.Turtle() 

times = int(input("How many points would you like to draw?")) 


for side in range (times): 

    move = input("which way would you like too go?\n\n1: Forward\n2: Backward\n3: Right\n4: Left\n5: Change Color\n6: Exit") 

    if (move == str(1)): 
     t.forward(50) 

    if (move == str(2)): 
     t.backward(50) 

    if (move == str(3)): 
     t.right(90) 

    if (move == str(4)): 
     t.left(90) 

    if(move == str(5)): 
     color = input("What color would you like?") 
     t.color(color) 

    if (move == str(6)): 
     break 

    else: 
     break 

(Dies kann eine dumme Frage, die ich Python ziemlich neu bin sein) ich die Schildkröte bewegen Sie mit Benutzereingaben machen will, und machte es funktioniert gut verschieben, aber ich will um die Farbe der Schildkröte zu ändern und die Farbe innerhalb der Schleife konstant zu halten. Ich bin mir nicht sicher, wie ich das machen soll oder was ich dafür recherchieren soll, darum frage ich hier.eine globale Variable in einer Schleife zu ändern

Danke

+0

Verwenden Sie 't.color()', um die Schildkrötenfarbe zu ändern. – Barmar

+0

Sie haben bereits einen Code zum Ändern der Farbe geschrieben. Wie funktioniert das nicht? – Prune

+0

Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. Wir sollten in der Lage sein, Ihren gesendeten Code in eine Textdatei einzufügen und das beschriebene Problem zu reproduzieren. – Prune

Antwort

2
else: 
    break 

Diese else ausgeführt wird, wenn die if unmittelbar vorhergehende sie falsch ist:

if (move == str(6)): 
    break 

Solange move etwas anderes als 6 ist, wird Ihre Schleife zu beenden.

Wenn Sie nur brechen wollen, wenn move nicht 1 oder 2 oder 3 oder 4 oder 5 oder 6 ist, ändern Sie alle Ihre if s mit Ausnahme der ersten bis elif s.

if (move == str(1)): 
    t.forward(50) 

elif (move == str(2)): 
    t.backward(50) 

elif (move == str(3)): 
    t.right(90) 

elif (move == str(4)): 
    t.left(90) 

elif(move == str(5)): 
    color = input("What color would you like?") 
    t.color(color) 

elif (move == str(6)): 
    break 

else: 
    break 
+1

Eine andere Sache, die es wert ist zu bemerken, dass das erste Casting 'move' zu ​​einer Ganzzahl ist, anstatt jede ganze Zahl in jedem Vergleich in eine Zeichenkette umzuwandeln wäre sauberer. Oder verwenden Sie stattdessen literale Zeichenfolgen wie "1" anstelle von "str (1)". –

+0

Dies funktioniert so vielen Dank – dantheman

2

Ändern Sie alle Ihre if Aussagen mit Ausnahme der ersten bis elif. Das Problem ist, dass die else: am Ende nur an if (move == str(6)): angeschlossen ist, so dass jeder andere Schritt als 6 Sie aus der Schleife bricht.

if (move == '1'): 
    t.forward(50) 

elif (move == '2'): 
    t.backward(50) 

elif (move == '3'): 
    t.right(90) 

elif (move == '4'): 
    t.left(90) 

elif(move == '5'): 
    color = input("What color would you like?") 
    t.color(color) 

elif (move == '6'): 
    break 

else: 
    break 

Auch schreiben Sie einfach '1' statt str(1). Oder wandle die Eingabe in int um und verwende dann nur if move == 1:

Verwandte Themen