我正在阅读和阅读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可能是指什么?
答案 0 :(得分:3)
该程序尝试找到第一个严格的正整数,该整数可以被11
和12
整除。
为此,您需要从某个地方开始,这是一个正数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 + 1
将x
的值设置为下一个整数。例如,假设x
等于42。然后该语句在概念上转换为x = 42 + 1
,依次转换为x = 43
。这就是算法跳到下一个整数进行验证的方式。
答案 3 :(得分:1)
根据示例代码,它开始检查被11和12整除的数字。因此,它以x=1
开头,范围为[1,ideally infinite)
。 x=x+1
不断地将x
递增1,直到遇到一个可被数字 viz 132整除的数字,一旦这样做,它将破坏无限的while
循环。