首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:多个“或”语句

Python:多个“或”语句
EN

Stack Overflow用户
提问于 2022-05-13 12:05:39
回答 8查看 247关注 0票数 0

我正在用海龟建造一个蛇克隆体。在这个函数的内部是否有一种更干净/更复杂的写条件的方法?

代码语言:javascript
运行
复制
    def out_of_bounds(self, lst):
        if lst.xcor() < -260 or lst.xcor() > 260 or lst.ycor() < -260 or lst.ycor() > 260:
        return True
EN

回答 8

Stack Overflow用户

发布于 2022-05-13 12:11:46

您可以通过取两个比较的绝对值来删除它们。

代码语言:javascript
运行
复制
def out_of_bounds(self, lst):
    return abs(lst.xcor()) > 260 or abs(lst.ycor()) > 260
票数 3
EN

Stack Overflow用户

发布于 2022-05-13 12:08:42

使布尔表达式直接返回,也可以使用括号返回多行:

(移除行尾的\需要)

您的函数返回True或None,这是因为None是Falsy。如果表达式失败,最好返回False。

代码语言:javascript
运行
复制
def out_of_bounds(self, lst):
    return (
        lst.xcor() < -260 
        or lst.xcor() > 260 
        or lst.ycor() < -260 
        or lst.ycor() > 260
    )
票数 1
EN

Stack Overflow用户

发布于 2022-05-13 12:11:14

大多数情况下,我会逆转那些测试并否定结果,我们保持在相同的状态,但更容易读懂。

在括号中,我们用xcor和ycor在±260区间进行测试,然后否定。

代码语言:javascript
运行
复制
def out_of_bounds(self, lst):
    return not (-260 <= lst.xcor() <= 260 and -260 <= lst.ycor() <= 260)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72229334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档