2017-06-22 77 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 

(這可能是一個愚蠢的問題,我很新的Python) 我想用用戶的輸入,並使其移動工作正常,使龜的舉動,但我想改變烏龜的顏色,並讓顏色在循環內保持不變。我不知道如何做到這一點,或者研究什麼,所以我在這裏問。改變循環中有一個全局變量

謝謝

+0

使用't.color()'更改烏龜的顏色。 – Barmar

+0

您已經編寫了代碼來更改顏色。這是不是工作? – Prune

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune

回答

2
else: 
    break 

else將執行每當if緊接它是虛假的:

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

所以只要move6其他任何東西,你的循環將結束。

如果您只想在move不是1或2或3或4或5或6時中斷,請將除第一個以外的所有if s更改爲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

另一個值得注意的事情是,首先將'move'移動到一個整數,而不是在每次比較中將每個整數連續地轉換爲一個字符串將會更清晰。或者使用文字字符串,而不是'str(1)',而不是''1''。 –

+0

這個作品非常感謝你 – dantheman

2

變化,除了第一個elif所有if語句。問題在於最後的else:僅附加到if (move == str(6)):,因此除6以外的任何移動都會導致您跳出循環。

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 

而且,只寫'1'而不是str(1)。或者將輸入轉換爲int,然後僅使用if move == 1: