|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def move(self):
new_x = self.x + m.choice([1,2,-1,-2])
new_y = self.y + m.choice([1,2,-1,-2])
if new_x < legal_x[0]:
self.x = legal_x[0] - (new_x - legal_x[0])
elif new_x > legal_x[1]:
self.x = legal_x[1] - (new_x - legal_x[1])
else:
self.x = new_x
这是正确的边界判定,当我把elif改成if的时候就超出边界了,我认为在这用elif 和if因该都行,问题出在哪了呢
new_x = self.x + m.choice([1,2,-1,-2])
new_y = self.y + m.choice([1,2,-1,-2])
if new_x < legal_x[0]:
self.x = legal_x[0] - (new_x - legal_x[0])
if new_x > legal_x[1]:
self.x = legal_x[1] - (new_x - legal_x[1])
else:
self.x = new_x
if-elif-else 结构的语句,只要有一个符合条件执行 if 或 elif 下的代码块就不会再判断后续的 elif ,也不会执行 else 了
但是你将 if-elif 改成 if ,那么后者的 if 和 前者的 if 没有直接关系了,不管前者条件是否成立,后者都需要重新判断
而这里主要原因是因为:
第一个代码 if-elif-else 是一个完整的结构,所以前面只要 if 或 elif 执行 就不会执行 else
但是你后者的代码实际上结构是 if , if-else , 第一个 if 单独一个 if 结构
后面的 if-else 一个结构,导致前者 if 判断完后,进行判断第二个 if 时,必定会执行后续的 if 或 else 其中一个代码块
|
|