Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基本代码误解_Python_Variables_Printing_While Loop - Fatal编程技术网

Python 基本代码误解

Python 基本代码误解,python,variables,printing,while-loop,Python,Variables,Printing,While Loop,几天前,我买了一本名为《儿童Python(傻瓜版)》的书。 第47页有一个简单代码块的示例: a = 2 while a < 10: a = a + 1 print (a) 我认为这个结果是不正确的,因为: 尽管在代码的第一行中声明了“2”,但不会打印出来 即使10等于自身(违反条件a不要假定Python是错误的,也许你应该考虑一下你误解Python是如何工作的可能性。 < P>这正是应该发生的。while或for循环的条件仅在循环顶部进行测试;在循环操作期间没有测试。

几天前,我买了一本名为《儿童Python(傻瓜版)》的书。 第47页有一个简单代码块的示例:

a = 2
while a < 10:
    a = a + 1
    print (a)
我认为这个结果是不正确的,因为:

  • 尽管在代码的第一行中声明了“2”,但不会打印出来
  • 即使10等于自身(违反条件
    a<10
    ),也会打印出“10”

即使我在第一个代码中设置了“while”条件
a,请注意
print
语句前面的一行:在任何打印之前,它将
a
添加1。当然,如果更改代码,结果可能会有所不同。因此,除非你的书声称应该生产的产品与实际生产的产品不同,否则这本书没有错


< >不要假定Python是错误的,也许你应该考虑一下你误解Python是如何工作的可能性。

< P>这正是应该发生的。whilefor循环的条件仅在循环顶部进行测试;在循环操作期间没有测试。因此,您可以在循环体中随意更改循环控制变量(a),并且while子句在返回到循环顶部之前不会做出反应。与上一个示例等效的代码如下:

a = 2
while True:
    if not a < 30:
        break
    a = a + 5

print (a)
a=2
尽管如此:
如果a<30:
打破
a=a+5
印刷品(a)

直到a收到一个违反while条件的值,循环才会退出。如果在更新a后打印,则可以保证a的最后一个值将违反该条件。

我将逐步执行此示例,每次执行一条语句,以便您可以看到:

(1) a = 2
(2) while a < 10:
(3)     a = a + 1
(4)     print (a)
这只会导致数字“32”,这似乎是不正确的


计算机完全按照你告诉他们的去做,这是它们的优点和缺点。在修改后的代码中,
a
增加5,但小于30。所以它从2增加→ 7.→ 12→ 17→ 22→ 27→ 32然后它退出该循环,因为32不小于30。然后它打印出一个
,即32。因为print语句没有缩进,所以它在循环之外,所以直到循环完成后才会执行。

代码逐行执行。打开while循环,您将很容易看到增量和打印在检查下一个条件之前完成。您真的不应该认为除了您以外的所有人都错了。欢迎来到计算机编程的奇怪世界:)计算机程序完全按照您的指示执行。所以它犯的任何错误都是你自己的责任。
2 3 4 5 6 7 8 9
a = 2
while a < 30:
    a = a + 5
print (a)
7 12 17 22 27 32
a = 2
while True:
    if not a < 30:
        break
    a = a + 5

print (a)
(1) a = 2
(2) while a < 10:
(3)     a = a + 1
(4)     print (a)
  a = 2
  while a < 30:
      a = a + 5
  print (a)