2017-04-03 12 views
-1

私は進化シミュレータを作成しようとしていますが、このエラー "TypeError: 'tuple'オブジェクトはアイテム割り当てをサポートしていません。プログラムは、2つのランダムなクリーチャーを作成し、それらにランダムな突然変異を与え、クリーチャーの値をプリントすることを想定しています。いくつかの手品を打つと、私はエラーを投げたり、最初のクリーチャーだけをプリントしたり、突然変異を起こさずに両方のクリーチャーをプリントしたりします。どんな助け?進化シミュレータ:TypeError: 'tuple'オブジェクトがアイテム割り当てをサポートしていません

import random 
from random import randint 

creatures = (random.randint(1, 10), random.randint(1, 10)) 


print(creatures) 

for i in creatures: 
    randomMutation = random.randint(1, 2) 
    creatures[i] = i + randomMutation 

for i in range(newEvolution): 
    print("New evolution", newEvolution) 

newEvolutionは、追加された変異を持つ生物のリストでなければなりません。

+0

タプルは不変です。代わりにリストを使用してください – fiacre

+0

newEvolutionはどこにも定義されていません。私はあなたのコードを理解していません。 – fedeisas

答えて

1

エラーはかなり簡単です。 Tuples do not support item assignment:これらは不変です。代わりにリストを使用してください。

Tuples are immutable, and usually contain a heterogeneous sequence of elements that are accessed via unpacking (see later in this section) or indexing (or even by attribute in the case of namedtuples).

正しいコード:

import random 
from random import randint 

creatures = [random.randint(1, 10), random.randint(1, 10)] 

print(creatures) 

for index, value in enumerate(creatures): 
    randomMutation = random.randint(1, 2) 
    creatures[index] = value + randomMutation 
0

クリーチャーはタプルであり、あなたは クリーチャーによってそれらを割り当てるしようとしている[i]は=私は、彼らが不変であるようタプルの場合は不可能であるrandomMutation を+ fedeisasが提案するリストを使用してください

関連する問題