鱼C论坛

 找回密码
 立即注册
查看: 1600|回复: 2

[已解决]python作业最后一题求助

[复制链接]
发表于 2022-5-22 11:07:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

最佳答案
2022-5-22 11:18:47

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 其中一个代码块


微信截图_20220522110640.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-22 11:18:47 | 显示全部楼层    本楼为最佳答案   

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 其中一个代码块


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-22 11:42:46 | 显示全部楼层
Twilight6 发表于 2022-5-22 11:18
if-elif-else 结构的语句,只要有一个符合条件执行 if 或 elif 下的代码块就不会再判断后续的 elif ,也 ...

谢谢!这下明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 05:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表