gpt4 book ai didi

python - python 中奇怪的循环?

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:57 25 4
gpt4 key购买 nike

我是 python 新手,但我有基本的 java 背景。有学习曲线需要面对,所以我遇到了麻烦。特别是对于这个循环...

from random import randint;
class simpleAI:
inputMatter = 0;
inputEnergyString = 0;
inputEnergy = 0;
resultMatter = 0;
resultEnergy = 0;
inputMatterMemory = [];
inputEnergyMemory = [];
resultMatterMemory = [];
resultEnergyMemory = [];
searchIndex = 0;
found = 0;
lookin = 0;
lookingEnergy = 0;

def cycle(self):
self.inputMatter = input("Matter: ");
self.inputMatter = int(self.inputMatter, 10);
self.inputMatterMemory.append(self.inputMatter);
self.inputEnergyString = input("Energy: ");
self.inputEnergy = int(self.inputEnergyString, 10);
self.inputEnergyMemory.append(self.inputEnergy);
#Check for an event that resulted in positive energy
while(self.searchIndex < self.resultEnergyMemory.__len__()):
print("we are foring!");
if(self.inputEnergyMemory.__getitem__((self.inputMatterMemory.index(self.inputMatter))) == self.inputEnergy):
print("we are iffy!");
self.resultMatter = self.resultMatterMemory.__getitem__(self.inputMatterMemory.index(self.inputMatter));
self.resultEnergy = self.resultEnergyMemory.__getitem__(self.inputEnergyMemory.index(self.inputEnergy));
self.found = 1;
break;

else:
self.searchIndex = self.searchIndex + 1;

if(self.found == 0):
self.resultMatter = randint(0, 256);
self.resultMatterMemory.append(self.resultMatter);
self.resultEnergy = randint(0, 256);
self.resultEnergyMemory.append(self.resultEnergy);
print("Creating new pair...");
print("Result matter: ", self.resultMatter);
print("Result Energy: ", self.resultEnergy);
elif(self.found == 1):
print("Found positive pair from memory");
print("Result matter: ", self.resultMatter);
print("Result memory: ", self.resultEnergy);

self.inputMatter = 0;
self.inputEnergyString = 0;
self.inputEnergy = 0;
self.resultMatter = 0;
self.searchIndex = 0;
self.found = 0;

它在第一次迭代中产生正确的结果,但在其他迭代中回退到“创建”新对,即使它应该在之前输入时返回一对。我究竟做错了什么?

最佳答案

你为自己做了很多额外的工作。您可以简单地创建一个单独的类来将所有数据保存在一起,并且只需循环访问该类的单个数组,而不是尝试维护多个并行数组。

from random import randint;

class MatterEnergyData:
def __init__(self, inputMatter, inputEnergy, resultMatter, resultEnergy):
self.inputMatter = inputMatter
self.inputEnergy = inputEnergy
self.resultMatter = resultMatter
self.resultEnergy = resultEnergy

def __str__(self):
return "Result matter: %s\r\nResult energy: %s" % \
self.resultMatter, self.resultEnergy

class simpleAI:
matterEnergyDataPoints = []

def cycle(self):
inputMatter = int(input("Matter: "))
inputEnergy = int(input("Energy: "))
resultObj = None
for obj in self.matterEnergyDataPoints:
if obj.inputEnergy == inputEnergy and obj.inputMatter == inputMatter:
print("Found positive pair from memory")
resultObj = obj
break

if resultObj == None:
print("Creating new pair...")
resultObj = MatterEnergyData(inputMatter, inputEnergy, randint(0, 256), randint(0, 256))
self.matterEnergyDataPoints.append(resultObj)

print resultObj

关于python - python 中奇怪的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28614810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com