Evolution模拟器:TypeError:'元组'对象不支持项目分配
问题描述:
我想做一个进化模拟器,但程序不断抛出这个错误“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应该是一个添加了突变的生物列表。
答
错误非常简单。 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
答
生物是元组,你试图通过 生物[i] = I + randomMutation ,因为它们是不可变的,这是不可能的元组的情况下,为它们分配请按照fedeisas建议使用列表
元组是不可变的,使用列表代替 – fiacre
newEvolution没有在任何地方定义,我不明白你的代码。 – fedeisas