首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩短具有多个类似"while"-statements的代码

缩短具有多个类似"while"-statements的代码
EN

Stack Overflow用户
提问于 2016-02-03 16:16:03
回答 2查看 94关注 0票数 4

很基本的问题可能,但写我的第一个程序,不知道要搜索什么找到答案。

我有一段时间的陈述,看起来是这样的:

代码语言:javascript
复制
while number > 9999 or number < 0 or number == 1111 or number == 2222 or number == 3333...

一直持续到9999。很多可能可以缩短的代码,我说的对吗?不知道我能在哪里读到这方面的语法,所以有人也可以把我链接到那里!

如果有人能帮忙,我会很高兴的!)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-03 16:17:25

使用模块化操作符:

代码语言:javascript
复制
while number > 9999 or number < 0 or (number % 1111 == 0 and number != 0):
票数 9
EN

Stack Overflow用户

发布于 2016-02-03 16:44:08

可以将前两个语句组合在一起。

代码语言:javascript
复制
number > 9999 or number < 0

用集合论将其转化为一个单一的

代码语言:javascript
复制
number not in range(0,9999)

其余的您可以使用简单的模块操作进行检查:

代码语言:javascript
复制
not number % 1111

每当在number上调用上面的操作时,它都会返回0或不相等的零。例如,1 % 3 = 1 (我们将一个较小的数除以更大的数,因此我们只得到较小的数字)、4 % 2 = 0 (因为4/2 = 2*2因此没有剩馀数,因此在结尾处是0)等等。

在Python中,True1相同,False0相同。我们希望循环继续运行,直到number有这样一个值,这个值可以被除以1111,没有任何余数,所以我们不得不否定该语句。让我们看看这个例子是如何工作的:

比方说number = 53__。在本例中,由于模块化参数number/1111 = 53/1111 = 53 1111__,所以我们使用了__。这意味着我们得到了True (因为True == 53 != 0 == False),在用not运算符否定它之后,我们得到了False (因为not True总是False,反之亦然)。while循环在其语句变为True__时停止。

因为我们想要检查这两种方法是否都是True,所以我们可以这样做:

代码语言:javascript
复制
while (number not in range(0,9999)) or (not number % 1111):
  # do something

如果要将0排除在范围之外,只需选择not in range(1,9999)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35182162

复制
相关文章

相似问题

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