2014-10-04 86 views
-1

我與龜蟒蛇工作,我試圖做這樣的事情:Alterning三種以上的顏色爲圈子中龜蟒蛇

enter image description here

我做了兩種顏色的代碼,這基本上是簡單。問題是我不知道如何定義三個或更多的交替顏色。這裏是我的代碼:

imp = 0 
while imp != 5: 
    wn = turtle.Screen() 
    Cicle = turtle.Turtle() 
    Cicle.speed(30) 
    print("1) Use just one color (Default orange)") 
    print("2) Use two colors (Default: red and blue)") 
    print("3) Use three colors (Default: red, blue and orange)") 
    print("4) Use four colors (Default: red, blue, yellow, black)") 
    print("5) If you want to exit") 
    imp = eval(input("Make your choice: ")) 
    number = eval(input("How many cycles do you want to draw? ")) 
    radius= eval(input("Define the radius: ")) 


    if imp == 1:   
     for x in range(number): 
      Cicle.color("orange") 
      Cicle.circle(radius) 
      Cicle.right(int(360/number)) 

    if imp == 2: 
     wn = turtle.Screen() 
     Cicle = turtle.Turtle() 
     Cicle.speed(15) 
     for x in range(number): 
      if x % 2 == 0: 
       Cicle.color("blue") 
      else: 
       Cicle.color("red") 
      Cicle.circle(radius) 
      Cicle.right(int(360/number)) 

    if imp == 3: 
     wn = turtle.Screen() 
     Cicle = turtle.Turtle() 
     Cicle.speed(15) 

     for x in range(number): 

      if x: 
       Cicle.color("red") 
      if x + 1: 
       Cicle.color("blue") 
      if x + 2: 
       Cicle.color("orange") 
      Cicle.circle(radius) 
      Cicle.right(int(360/number)) 

你能幫我嗎?

+0

P.S:我知道,如果語句沒有意義。這只是一個嘗試 – pp94 2014-10-04 21:40:39

+0

我不*完全*我確定我理解你的問題,但聽起來我創建一個(有限循環)['cycle()'](https://docs.python.org/2.7 /library/itertools.html#itertools.cycle)你的三種顏色可以爲你工作。例如:'colors = cycle(['red','green','blue'])',然後通過執行'color = colors.next()'來獲得下一個顏色。 – 2014-10-04 21:45:47

+0

aaah。是啊。也許它會工作。我也不知道Python中的下一個函數的存在。我會嘗試 – pp94 2014-10-04 21:49:27

回答

2

您可以嘗試使用顏色列表並存儲用戶可以覆蓋的一些默認顏色。

然後,您可以使用與您的代碼中的兩種顏色相同的原理:使用操作選擇顏色。當你的顏色列表中,您就可以使用結果的模運算作爲列表中指數

if imp == 3: 
    wn = turtle.Screen() 
    Cicle = turtle.Turtle() 
    Cicle.speed(15) 
    colors = ['red', 'green', 'blue'] 
    for x in range(number): 
     c = colors[x % 3] 
     Cicle.color(c) 
     Cicle.circle(radius) 
     Cicle.right(int(360/number))