3.2. 走向编程的第一步

当然,我们可以将 Python 用于更复杂的任务,而不是仅仅两个和两个一起添加。 例如,我们可以编写 斐波那契数列 的初始子序列,如下所示:

  1. >>> # Fibonacci series:
  2. ... # the sum of two elements defines the next
  3. ... a, b = 0, 1
  4. >>> while a < 10:
  5. ... print(a)
  6. ... a, b = b, a+b
  7. ...
  8. 0
  9. 1
  10. 1
  11. 2
  12. 3
  13. 5
  14. 8

这个例子引入了几个新的特点。

  • 第一行含有一个 多重赋值: 变量 ab 同时得到了新值 0 和 1. 最后一行又用了一次多重赋值, 这体现出了右手边的表达式,在任何赋值发生之前就被求值了。右手边的表达式是从左到右被求值的。

  • while 循环只要它的条件(这里指: a < 10)保持为真就会一直执行。Python 和 C 一样,任何非零整数都为真;零为假。这个条件也可以是字符串或是列表的值,事实上任何序列都可以;长度非零就为真,空序列就为假。在这个例子里,判断条件是一个简单的比较。标准的比较操作符的写法和 C 语言里是一样: < (小于)、 > (大于)、 == (等于)、 <= (小于或等于)、 >= (大于或等于)以及 != (不等于)。

  • 循环体缩进的 :缩进是 Python 组织语句的方式。在交互式命令行里,你得给每个缩进的行敲下 Tab 键或者(多个)空格键。实际上用文本编辑器的话,你要准备更复杂的输入方式;所有像样的文本编辑器都有自动缩进的设置。交互式命令行里,当一个组合的语句输入时, 需要在最后敲一个空白行表示完成(因为语法分析器猜不出来你什么时候打的是最后一行)。注意,在同一块语句中的每一行,都要缩进相同的长度。

  • print() 函数将所有传进来的参数值打印出来. 它和直接输入你要显示的表达式(比如我们之前在计算器的例子里做的)不一样, print() 能处理多个参数,包括浮点数,字符串。 字符串会打印不带引号的内容, 并且在参数项之间会插入一个空格, 这样你就可以很好的把东西格式化, 像这样:

  1. >>> i = 256*256
  2. >>> print('The value of i is', i)
  3. The value of i is 65536

关键字参数 end 可以用来取消输出后面的换行, 或是用另外一个字符串来结尾:

  1. >>> a, b = 0, 1
  2. >>> while a < 1000:
  3. ... print(a, end=',')
  4. ... a, b = b, a+b
  5. ...
  6. 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

脚注

  • 1
  • 因为 - 有更高的优先级, 所以 -32 会被解释成 -(32) ,因此结果是 -9. 为了避免这个并且得到结果 9, 你可以用这个式子 (-3)2.

  • 2

  • 和其他语言不一样的是, 特殊字符比如说 \n 在单引号 ('…') 和双引号 ("…") 里有一样的意义. 这两种引号唯一的区别是,你不需要在单引号里转义双引号 " (但是你必须把单引号转义成 \') , 反之亦然.