号码未添加到列表中的号码
Number is not being added to number in list
我正在尝试制作一个进化模拟器,但遇到了一些麻烦。我正在尝试将 "random mutation" 添加到列表中的数字,但它们实际上不会加在一起。
def Evolve(evolution, creatures):
print(creatures)
creatureNumber = 0
if evolution == 0:
print("First Generation:")
for i in creatures:
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", i)
randomMutation = random.randint(-1, 2)
i += randomMutation
else:
print("Evolution", evolution, ":")
for i in creatures:
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", i)
randomMutation = random.randint(-1, 2)
i += randomMutation
print("")
print("Leading Creature:", creatures.index(max(creatures))+ 1,":", max(creatures))
EvolveQuestion(evolution, creatures)
列表"creatures"在单独的函数中定义。 "i += randomMutation" 似乎只是不把数字加在一起。
我已经指出您忘记了 creatureNumber + 1
中的等号,因此您已经使用更正的代码更新了您的问题,但仍然没有得到预期的结果。好的。这是您的代码存在的下一个主要问题:
如果您有一个像 creatures = [1,1,1,1]
这样的列表,并且您想要将其更改为 [1,2,3,4]
,您必须按如下方式进行:
for i, _ in enumerate(creatures):
creatures[i] = i+1
现在我们回到编码。
很难从你提供的代码中猜出你想要实现什么,但我还是会尝试一下:
import random
creatures = [1,1,1,1]
def Evolve(evolution, creatures):
print(creatures)
creatureNumber = 0
if evolution == 0:
print("First Generation:")
for i, item in enumerate(creatures):
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", creatures[i])
randomMutation = random.randint(-1, 2)
creatures[i] += randomMutation
else:
print("Evolution", evolution, ":")
for i, item in enumerate(creatures):
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", creatures[i])
randomMutation = random.randint(-1, 2)
creatures[i] += randomMutation
print("")
print(creatures)
print("Leading Creature:", creatures.index(max(creatures))+ 1,":", max(creatures))
print('---')
# EvolveQuestion(evolution, creatures)
Evolve(0, creatures)
Evolve(1, creatures)
Evolve(2, creatures)
Evolve(3, creatures)
Evolve(4, creatures)
Evolve(5, creatures)
上面的代码是我对您打算实现的目标的最佳猜测,但在某些方面仍然没有任何意义,但至少它显示了一些“进化”。现在我很想知道您是否认为它对您有帮助。我会从你的评论中注意到它,或者如果你接受我的回答:) .
代码作为打印输出给出:
[1, 1, 1, 1]
First Generation:
Creature 1 : 1
Creature 2 : 1
Creature 3 : 1
Creature 4 : 1
[3, 0, 2, 3]
Leading Creature: 1 : 3
---
[3, 0, 2, 3]
Evolution 1 :
Creature 1 : 3
Creature 2 : 0
Creature 3 : 2
Creature 4 : 3
[3, 1, 4, 2]
Leading Creature: 3 : 4
---
[3, 1, 4, 2]
Evolution 2 :
Creature 1 : 3
Creature 2 : 1
Creature 3 : 4
Creature 4 : 2
[5, 3, 3, 2]
Leading Creature: 1 : 5
---
[5, 3, 3, 2]
Evolution 3 :
Creature 1 : 5
Creature 2 : 3
Creature 3 : 3
Creature 4 : 2
[6, 2, 3, 1]
Leading Creature: 1 : 6
---
[6, 2, 3, 1]
Evolution 4 :
Creature 1 : 6
Creature 2 : 2
Creature 3 : 3
Creature 4 : 1
[5, 3, 4, 0]
Leading Creature: 1 : 5
---
[5, 3, 4, 0]
Evolution 5 :
Creature 1 : 5
Creature 2 : 3
Creature 3 : 4
Creature 4 : 0
[4, 4, 6, 1]
Leading Creature: 3 : 6
---
Look here first。您不能修改迭代变量 i += randomMutation
。它只会被迭代器返回的下一个元素覆盖 creatures
.
我正在尝试制作一个进化模拟器,但遇到了一些麻烦。我正在尝试将 "random mutation" 添加到列表中的数字,但它们实际上不会加在一起。
def Evolve(evolution, creatures):
print(creatures)
creatureNumber = 0
if evolution == 0:
print("First Generation:")
for i in creatures:
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", i)
randomMutation = random.randint(-1, 2)
i += randomMutation
else:
print("Evolution", evolution, ":")
for i in creatures:
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", i)
randomMutation = random.randint(-1, 2)
i += randomMutation
print("")
print("Leading Creature:", creatures.index(max(creatures))+ 1,":", max(creatures))
EvolveQuestion(evolution, creatures)
列表"creatures"在单独的函数中定义。 "i += randomMutation" 似乎只是不把数字加在一起。
我已经指出您忘记了 creatureNumber + 1
中的等号,因此您已经使用更正的代码更新了您的问题,但仍然没有得到预期的结果。好的。这是您的代码存在的下一个主要问题:
如果您有一个像 creatures = [1,1,1,1]
这样的列表,并且您想要将其更改为 [1,2,3,4]
,您必须按如下方式进行:
for i, _ in enumerate(creatures):
creatures[i] = i+1
现在我们回到编码。
很难从你提供的代码中猜出你想要实现什么,但我还是会尝试一下:
import random
creatures = [1,1,1,1]
def Evolve(evolution, creatures):
print(creatures)
creatureNumber = 0
if evolution == 0:
print("First Generation:")
for i, item in enumerate(creatures):
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", creatures[i])
randomMutation = random.randint(-1, 2)
creatures[i] += randomMutation
else:
print("Evolution", evolution, ":")
for i, item in enumerate(creatures):
creatureIndex = creatureNumber + 1
creatureNumber += 1
print(" Creature", creatureIndex, ":", creatures[i])
randomMutation = random.randint(-1, 2)
creatures[i] += randomMutation
print("")
print(creatures)
print("Leading Creature:", creatures.index(max(creatures))+ 1,":", max(creatures))
print('---')
# EvolveQuestion(evolution, creatures)
Evolve(0, creatures)
Evolve(1, creatures)
Evolve(2, creatures)
Evolve(3, creatures)
Evolve(4, creatures)
Evolve(5, creatures)
上面的代码是我对您打算实现的目标的最佳猜测,但在某些方面仍然没有任何意义,但至少它显示了一些“进化”。现在我很想知道您是否认为它对您有帮助。我会从你的评论中注意到它,或者如果你接受我的回答:) .
代码作为打印输出给出:
[1, 1, 1, 1]
First Generation:
Creature 1 : 1
Creature 2 : 1
Creature 3 : 1
Creature 4 : 1
[3, 0, 2, 3]
Leading Creature: 1 : 3
---
[3, 0, 2, 3]
Evolution 1 :
Creature 1 : 3
Creature 2 : 0
Creature 3 : 2
Creature 4 : 3
[3, 1, 4, 2]
Leading Creature: 3 : 4
---
[3, 1, 4, 2]
Evolution 2 :
Creature 1 : 3
Creature 2 : 1
Creature 3 : 4
Creature 4 : 2
[5, 3, 3, 2]
Leading Creature: 1 : 5
---
[5, 3, 3, 2]
Evolution 3 :
Creature 1 : 5
Creature 2 : 3
Creature 3 : 3
Creature 4 : 2
[6, 2, 3, 1]
Leading Creature: 1 : 6
---
[6, 2, 3, 1]
Evolution 4 :
Creature 1 : 6
Creature 2 : 2
Creature 3 : 3
Creature 4 : 1
[5, 3, 4, 0]
Leading Creature: 1 : 5
---
[5, 3, 4, 0]
Evolution 5 :
Creature 1 : 5
Creature 2 : 3
Creature 3 : 4
Creature 4 : 0
[4, 4, 6, 1]
Leading Creature: 3 : 6
---
Look here first。您不能修改迭代变量 i += randomMutation
。它只会被迭代器返回的下一个元素覆盖 creatures
.