2017-10-13 8 views
0

なぜ私のコードがうまくいかない、非常にイライラしているのか分かりません。私は絶えずエラーを受け取ります。intオブジェクトには、追加する属性がありません(average.append(i、average // 250))。しかし、私はここで正確に何が間違っているのか理解できません。追加機能で他の定義をインポートすることはできませんか? 誰かが私を助けてくれることを願っています! 一般的に私のコードを持つすべてのヘルプは高く評価され:)Pythonエラー:intオブジェクトに追加する属性がありませんか?

def main(): 
    average = [] 
    y_values = [] 
    for x in range(0, 2501, 500): 
     for i in range(250): 
      average.append(calculate(x)) 
     average = sum(average) 
     print("{} euro, {} worpen".format(i, average//250)) 
     y_values.append(average//250) 

    x_values = [0, 500, 1000, 1500, 2000, 2500] 
    y_values = [] 
    plt.plot(x_values, y_values) 
    plt.xlabel("Startgeld") 
    plt.ylabel("Aantal worpen") 
    plt.title("Monopoly") 
    plt.show() 

def calculate(game_money): 
    piece = monopoly.Piece() 
    board = monopoly.Board() 
    owns = possession(board) 
    dice = throw() 
    throw_count = 0 
    number = 0 
    total_throw = 0 

    while not all(owns.values()): 
     number == throw() 
     piece.move(number) 
     total_throw = total_throw + number 
     throw_count += 1 

     if total_throw > 40: 
      game_money += 200 

     elif board.values[piece.location] > 0: 
      if game_money > board.values[piece.location]: 
       if owns[board.names[piece.location]] == False: 
        owns[board.names[piece.location]] = True 
        game_money = game_money - board.values[piece.location] 
     return total_throw 

def throw(): 
    dice = randint(1,6) + randint(1,6) 
    return dice 

def possession(board): 
    owns = {} 
    for i in range(40): 
     if board.values[i] > 0: 
      owns[board.names[i]] = False 
    return owns 

if __name__ == "__main__": 
    main() 
+0

あなたは完全な出力を共有できますか? –

+3

あなたは「平均=合計(平均)」を再割り当てしています。 – Li357

+0

あなたは最初にリストとして 'average'を持っています。次に、すべての要素を合計し、結果を 'average'に代入します。これは現在の数値です。その時点で、あなたは明らかにそれに追加することはできません。例えば。それに[1、2、3]が含まれているとします。数字の6を加算することはできませんし、数字の6を「合計」することもできません。 –

答えて

0

あなたはあなたのコード内で小さなミスをして。下記の私のコメントを見て、あなたのコードを修正してください。幸運:-)

y_values = [] 
average = [] 
for x in range(0, 2501, 500): 
    for i in range(250): 
     average.append(calculate(x)) 
    #average = sum(average) #This is your mistake. Now onward average will be considered as int object make it like below 
    average1 = sum(average) 
    print("{} euro, {} worpen".format(i, average1//250)) 
    y_values.append(average1//250) 
関連する問題