2017-09-12 12 views
0

リストからデータを使ってビルボードの背景に4枚のシートを貼り付けできるようにする必要があります。リスト:python:リストからデータを読み込んで機能を停止させるにはどうすればいいですか?

data_sets = [ 
# These two initial data sets don't put any sheets on the billboard 
# Data sets 0 - 1 
['O'], 
['X'], 
# These data sets put Sheet A in all possible locations and orientations 
# Data sets 2 - 9 
['O', ['Sheet A', 'Location 1', 'Upright']], 
['O', ['Sheet A', 'Location 2', 'Upright']], 
['O', ['Sheet A', 'Location 3', 'Upright']], 
['O', ['Sheet A', 'Location 4', 'Upright']], 
['O', ['Sheet A', 'Location 1', 'Upside down']], 
['O', ['Sheet A', 'Location 2', 'Upside down']], 
['O', ['Sheet A', 'Location 3', 'Upside down']], 
['O', ['Sheet A', 'Location 4', 'Upside down']] 
] 

私は私のシートを描画するためにカメを取得しようとしているが、それ、それはそれを描くと、それはリスト全体を通過してアウトラインを描く上で続けて、私はそれがリストを通過停止する必要があります一度sheet_a_upright()を実行します。 「x」と「o」はこの時点では何も意味しません。私のgoto_loc()関数にも同じことが起こっていましたが、data_setsをパラメータとして渡して固定しました。これは、sheet()関数でこれを行うと、何も描画されません。

#location function for data_sets 
def goto_loc(data_sets): 
    for location in data_sets: 
     if len(location)>1 and 'Location 1' in location[1]: 
      goto(-300, 0) 
     elif len(location)>1 and 'Location 2' in location[1]: 
      goto(-100, 0) 
     elif len(location)>1 and 'Location 3' in location[1]: 
      goto(100, 0) 
     elif len(location)>1 and 'Location 4' in location[1]: 
      goto(300, 0) 

#function for which sheet should be drawn from data_sets 
def sheet(): 
    for style in data_sets: 
     if len(style)>1 and 'Sheet A' in style[1]: 
      sheet_a_upright() 
     elif len(style)>1 and 'Sheet B' in style[1]: 
      sheet_b_upright() 
     elif len(style)>1 and 'Sheet C' in style[1]: 
      sheet_c_upright() 
     elif len(style)>1 and 'Sheet D' in style[1]: 
      sheet_d_upright() 

#define sheet outline and fill 
def outline(): 
    penup() 
    forward(100) 
    pendown() 
    fillcolor('green') 
    begin_fill() 
    left(90) 
    fd(250) 
    left(90) 
    fd(200) 
    left(90) 
    fd(500) 
    left(90) 
    fd(200) 
    left(90) 
    fd(250) 
    right(90) 
    penup() 
    end_fill() 

#function for sheet A in upright position 
def sheet_a_upright(): 
    #sheet outline and fill 
    outline() 

# Paste the sheets onto the billboard as per the provided data set 
def paste_up(data_sets): 
    for each in data_sets: 
     goto_loc(data_sets) 
     sheet() 

paste_up(data_sets[2]) 

答えて

2

sheet_a_upright()が実行された場合は、あなたのsheet機能return Trueを持っています。

def sheet(): 
      for style in data_sets: 
       if len(style)>1 and 'Sheet A' in style[1]: 
        sheet_a_upright() 
        return True 
       elif len(style)>1 and 'Sheet B' in style[1]: 
        sheet_b_upright() 
       elif len(style)>1 and 'Sheet C' in style[1]: 
        sheet_c_upright() 
       elif len(style)>1 and 'Sheet D' in style[1]: 
        sheet_d_upright() 

次に、あなたのpaste_up機能では、sheet()が真であるかどうかを確認します。

def paste_up(data_sets): 
      for each in data_sets: 
       goto_loc(data_sets) 
       if sheet(): 
        return 
関連する問題