很基本的问题可能,但写我的第一个程序,不知道要搜索什么找到答案。
我有一段时间的陈述,看起来是这样的:
while number > 9999 or number < 0 or number == 1111 or number == 2222 or number == 3333...一直持续到9999。很多可能可以缩短的代码,我说的对吗?不知道我能在哪里读到这方面的语法,所以有人也可以把我链接到那里!
如果有人能帮忙,我会很高兴的!)
发布于 2016-02-03 16:17:25
使用模块化操作符:
while number > 9999 or number < 0 or (number % 1111 == 0 and number != 0):发布于 2016-02-03 16:44:08
可以将前两个语句组合在一起。
number > 9999 or number < 0用集合论将其转化为一个单一的
number not in range(0,9999)其余的您可以使用简单的模块操作进行检查:
not number % 1111每当在number上调用上面的操作时,它都会返回0或不相等的零。例如,1 % 3 = 1 (我们将一个较小的数除以更大的数,因此我们只得到较小的数字)、4 % 2 = 0 (因为4/2 = 2*2因此没有剩馀数,因此在结尾处是0)等等。
在Python中,True与1相同,False与0相同。我们希望循环继续运行,直到number有这样一个值,这个值可以被除以1111,没有任何余数,所以我们不得不否定该语句。让我们看看这个例子是如何工作的:
比方说number = 53__。在本例中,由于模块化参数number/1111 = 53/1111 = 53 1111__,所以我们使用了__。这意味着我们得到了True (因为True == 53 != 0 == False),在用not运算符否定它之后,我们得到了False (因为not True总是False,反之亦然)。while循环在其语句变为True__时停止。
因为我们想要检查这两种方法是否都是True,所以我们可以这样做:
while (number not in range(0,9999)) or (not number % 1111):
# do something如果要将0排除在范围之外,只需选择not in range(1,9999)。
https://stackoverflow.com/questions/35182162
复制相似问题