2017-04-03 47 views
-1

我想做一个进化模拟器,但程序不断抛出这个错误“TypeError:'元组'对象不支持项目分配”。该程序假设创建两个随机生物,然后给他们一个随机突变并打印生物的价值。随着一些小动作,我已经得到它来抛出一个错误,只打印第一个生物,或打印两个没有突变的生物。任何帮助?Evolution模拟器:TypeError:'元组'对象不支持项目分配

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] = I + randomMutation ,因为它们是不可变的,这是不可能的元组的情况下,为它们分配请按照fedeisas建议使用列表

相关问题