在Python中解释“ while循环”表示法时出现问题

时间:2018-11-26 11:08:01

标签: python

我正在阅读和阅读John Guttag所著的《使用Python计算和编程入门》一书中的练习(在MIT课程中使用),并且在理解为什么while循环在开始时将x设置为1时遇到问题。

该练习要求找到一个可被11和12整除的正整数。示例解决方案是:

x = 1 
while True:     
    if x%11 == 0 and x%12 == 0:         
        break     
    x = x + 1 
print(x, 'is divisible by 11 and 12')

#prints 132, which is divisible by both 11 and 12

很抱歉,这是一个基本问题,但是如果有人可以向我解释一下设置x = 1的逻辑(如果x首先是我们要求解的值),我将不胜感激。 。另外,我不了解x = x + 1部分。

此外,我应该使用什么符号来告诉程序基于“所有现有整数/值”的条件来执行某项操作……(后接for或while循环)?那x = 1可能是指什么?

4 个答案:

答案 0 :(得分:3)

该程序尝试找到第一个严格的正整数,该整数可以被1112整除。

为此,您需要从某个地方开始,这是一个正数x = 1。如果将其设置为0,那将是我们的结果,但是我们需要一个严格的正数。

因此,我们尝试查看新的x是否可整除,如果不能,则将其加一。

更好的程序是:

x = 1 
while x%11 != 0 or x%12 != 0:   
    x = x + 1 
print(x, 'is divisible by 11 and 12')

答案 1 :(得分:1)

如果一开始没有设置x=1,则不能使用x作为变量,因为它在当前执行范围中不存在。

x = x+1一起使用是为了使x长大,以便进行下一个循环迭代。

答案 2 :(得分:1)

该算法通过逐一验证所有正整数来工作。它必须从某处开始,并且一个好的开始是第一个正整数:1。因此x = 1-表示“让我们从1开始”。

x = x + 1x的值设置为下一个整数。例如,假设x等于42。然后该语句在概念上转换为x = 42 + 1,依次转换为x = 43。这就是算法跳到下一个整数进行验证的方式。

答案 3 :(得分:1)

根据示例代码,它开始检查被11和12整除的数字。因此,它以x=1开头,范围为[1,ideally infinite)x=x+1不断地将x递增1,直到遇到一个可被数字 viz 132整除的数字,一旦这样做,它将破坏无限的while循环。