python中奇怪的循环?
我是python新手,但我有基本的java背景。要面对的是学习曲线,所以我遇到了麻烦。特别是这个循环python中奇怪的循环?,python,Python,我是python新手,但我有基本的java背景。要面对的是学习曲线,所以我遇到了麻烦。特别是这个循环 from random import randint; class simpleAI: inputMatter = 0; inputEnergyString = 0; inputEnergy = 0; resultMatter = 0; resultEnergy = 0; inputMatterMemory = []; inputEnergyMemory = []; resultMatterMe
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;
来自随机导入randint;
类simpleAI:
输入物质=0;
inputenergysting=0;
输入能量=0;
结果材料=0;
结果能量=0;
inputMatterMemory=[];
输入能量记忆=[];
结果模式内存=[];
resultenergymomery=[];
searchIndex=0;
发现=0;
lookin=0;
lookingEnergy=0;
def循环(自):
self.inputMatter=输入(“物质:”);
self.inputMatter=int(self.inputMatter,10);
self.inputMatterMemory.append(self.inputMatter);
self.inputenergysting=输入(“能量:”);
self.inputEnergy=int(self.inputenergysting,10);
self.inputenergymomery.append(self.inputEnergy);
#检查导致正能量的事件
while(self.searchIndex
它在第一次迭代中产生正确的结果,但在其他迭代中返回到“创建”一个新的对,即使在之前输入时它应该返回一个对。我做错了什么 你为自己做了很多额外的工作。不需要维护多个并行数组,只需创建一个单独的类将所有数据保存在一起,只需循环使用该类的单个数组即可
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代码的好机会。我假设这是一个转录错误“…即使它应该返回一对”。什么意思?我在这段代码中没有看到
return
语句。你能添加一些关于这应该做什么的信息吗?从我所看到的,它接受了物质和能量的值,看看这些输入值以前是否见过。如果有,则打印相应的结果。如果不是,则为这些输入创建并存储随机结果,然后打印出来。这是对的吗?穿梭机,我会把它贴在coderview上,谢谢!