python作业最后一题求助
def move(self):new_x = self.x + m.choice()
new_y = self.y + m.choice()
if new_x < legal_x:
self.x = legal_x - (new_x - legal_x)
elif new_x > legal_x:
self.x = legal_x - (new_x - legal_x)
else:
self.x = new_x
这是正确的边界判定,当我把elif改成if的时候就超出边界了,我认为在这用elif 和if因该都行,问题出在哪了呢
new_x = self.x + m.choice()
new_y = self.y + m.choice()
if new_x < legal_x:
self.x = legal_x - (new_x - legal_x)
if new_x > legal_x:
self.x = legal_x - (new_x - legal_x)
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 其中一个代码块
Twilight6 发表于 2022-5-22 11:18
if-elif-else 结构的语句,只要有一个符合条件执行 if 或 elif 下的代码块就不会再判断后续的 elif ,也 ...
谢谢!这下明白了
页:
[1]