Evolution模拟器:TypeError:'tuple'对象不支持项目分配

时间:2017-04-03 16:53:40

标签: python

我正在尝试制作一个进化模拟器,但程序一直在向我抛出这个错误“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应该是一个添加了突变的生物列表。

2 个答案:

答案 0 :(得分:1)

错误很简单。 Tuples do not support item assignment:它们是不可改变的。请改用列表。

  

元组是不可变的,通常包含异构的元素序列,这些元素可以通过解包(参见本节后面部分)或索引(或者甚至是在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

答案 1 :(得分:0)

生物是元组,你试图通过它来分配它们 生物[I] = I + randomMutation 这对于元组是不可能的,因为它们是不可变的,请使用联邦政府建议的列表