可能是非常基础的问题,但是我正在编写我的第一个程序,不知道要搜索什么来找到答案。
我有一个类似于以下代码的 while 语句:
while number > 9999 or number < 0 or number == 1111 or number == 2222 or number == 3333...
一直执行到9999。有很多代码可能可以缩短,我说的对吗?不确定在哪里能够阅读有关此语法的信息,希望有人能够提供相关链接!
如果有人能够帮助我就太好了!:)
可能是非常基础的问题,但是我正在编写我的第一个程序,不知道要搜索什么来找到答案。
我有一个类似于以下代码的 while 语句:
while number > 9999 or number < 0 or number == 1111 or number == 2222 or number == 3333...
一直执行到9999。有很多代码可能可以缩短,我说的对吗?不确定在哪里能够阅读有关此语法的信息,希望有人能够提供相关链接!
如果有人能够帮助我就太好了!:)
使用取模运算符:modulo。
while number > 9999 or number < 0 or (number % 1111 == 0 and number != 0):
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)等。True
与1
相同,False
与0
相同。我们希望循环继续进行,直到number
具有可以被1111整除而不产生任何余数的值,因此我们必须否定该语句。让我们看一个示例,了解其工作原理:number = 53
。在这种情况下,由于模参数1111
,我们有number/1111 = 53/1111 = 53
。这意味着我们得到True
(因为True == 53 != 0 == False),并且在使用not
运算符否定它后,我们得到False
(因为not True
始终为False
,反之亦然)。当其语句变为True
时,while
循环停止。True
,因此我们可以执行以下操作:while (number not in range(0,9999)) or (not number % 1111):
# do something
not in range(1,9999)
。[0, 9999]
是一个包含两个元素的列表,而不是介于0和9999之间的整数范围。请使用 range(0,1000)
(或在Python2中使用 xrange(0,1000)
)。 - chepner
number = 0
的情况,原文存在问题。按照你的逻辑会返回True
,但是问题中的逻辑应该返回False
。请修改。 - rootnumber % 1111 == 0
意味着number
可以被 1111 整除,也就是说,number
可以是 1111,2222,3333 等等。 - Mohammed Aouf Zouag