Python if语句的语法
1.当我运行代码时,我得到了else:printno checkpoint found 2.缩进错误:未缩进与任何外部缩进级别不匹配 3.我试过修,但修不好Python if语句的语法,python,Python,1.当我运行代码时,我得到了else:printno checkpoint found 2.缩进错误:未缩进与任何外部缩进级别不匹配 3.我试过修,但修不好 def Score(self): return sum(self.reward_window)/(len(self.reward_window)+1.) def Save(self): torch.save({'state_dict' :
def Score(self):
return sum(self.reward_window)/(len(self.reward_window)+1.)
def Save(self):
torch.save({'state_dict' : self.model.state_dict(),
'optimizer' : self.optimizer.state_dict,
},'last_brain.pth')
def Load(self) :
if os.path.isfile('last_brain.pth') : # this is where i get the syntax error
print("=> Loading last brain...")
lastbrain = torch.load('last_brain.pth')
self.model.load_state_dict(checkpoint['state_dict'])
self.optimizer.load_state_dict(checkpoint['optimizer'])
print ("done")
else: print("no checkpoint found")
IMO[1],我认为问题的另一个原因是其他函数与self在同一代码块中定义。我建议采用如下格式:
def score(self):
# code for score...
# etc...
def save( self ):
# code for save
# etc...
def load(self):
# code for load...
# etc...
1:我没有经常使用Python来了解函数声明的所有合法性,但是在大多数语言中,据我所知,在C/C++/Java中,语言设置为代码块大括号,在Python中设置为缩进/冒号的语言中,不能有多个函数声明。如果有人知道Python的例外情况或合法性,请在评论中直接告诉我,您的代码没有正确缩进。应该是这样的
def Score(self):
return sum(self.reward_window)/(len(self.reward_window)+1.)
def Save(self):
torch.save({'state_dict' : self.model.state_dict(),
'optimizer' : self.optimizer.state_dict,
},'last_brain.pth')
def Load(self) :
if os.path.isfile('last_brain.pth') :
print("=> Loading last brain...")
lastbrain = torch.load('last_brain.pth')
self.model.load_state_dict(checkpoint['state_dict'])
self.optimizer.load_state_dict(checkpoint['optimizer'])
print ("done")
else: print("no checkpoint found")
根据缩进,您定义了Save和loadinsidescore,这在Python中是不允许的。希望这能解决您的问题。否则:需要以相同的缩进显示。请以代码块而不是图像的形式发布代码。另外,请包含错误的完整堆栈跟踪。@PacketLoss语法错误没有堆栈跟踪。请共享整个错误消息以及代码,而不是图像。请参阅:,。变量和函数名称应遵循小写字母,并带有下划线样式。您可以在Python函数中声明函数;在OP的代码中,函数不在函数内部,因为它们的缩进比函数体(一个返回语句)要少。存在缩进错误,因为它们比第一个函数的def语句缩进得更多,但缩进得不够远,无法成为函数块的一部分。语法错误的原因不是意见的问题,所以说这个有点奇怪。在Python中,def是一个可执行语句,可以出现在代码块中。可以使用if测试以两种不同的方式定义函数。当编写必须处理不同版本API的代码时,这是一种正常的方法。