山楂片的博客

山楂片的博客

山楂片的博客

马上订阅 山楂片的博客 RSS 更新: https://szp15.com/index.xml

Python教程2 - 流程控制

2019年11月11日 20:37

本文是Python教程的第2篇。我们会在第1和第2节分别介绍语句和函数,第3节介绍代码风格,第4节介绍PyCharm IDE的使用,最后1节复习我们所学的知识。这篇教程还有Jupyter Notebook版本,点击此处下载。这篇教程的内容主要来自4. 其他流程控制工具 — Python 3.7.5 文档

语句

接下来我会介绍一些基本的概念,如果觉得很抽象难以理解,可以先学习后面的部分再回来看。即使不能理解这些概念也不会妨碍编程。

语句是构成命令式程序设计的另一个重要组成部分组成,语句之间也可以像表达式一样互相嵌套形成复杂的结构。可以包含其他语句作为子语句的称为复合语句,如我们接下来会讲的ifwhilefor,反之称为简单语句

与表达式不同,语句不会产生值,语句的所有意义在于产生副作用。副作用有两种情况:

  • 修改状态,比如对变量赋值:如a = 1
  • 输入输出:如print('hello')

在保存运行代码的情况(而非交互模式)下,一个没有副作用的语句,如1 + 1,是没有意义的,可以删除,而且这通常是一个潜在的错误。

接下来我来介绍2种我们接触过的语句:

  • 表达式语句:单独一个表达式可以形成语句,称为表达式语句,如刚才提到的1 + 1print('hello')都是表达式语句,后者有输出的副作用,而前者毫无作用;
  • 赋值语句:在Python中赋值是一个语句,如a = 1,赋值语句的副作用就是修改状态。

传统的结构化编程包含以下3种复合语句结构:

  • 顺序:将多个语句挨个写出来,就是顺序结构,程序会依次执行这些语句,下面将给出示例;
  • 选择:根据条件只执行一部分语句,如1.1中的if语句;
  • 循环:根据条件重复执行一段语句,如1.2和1.3中的whilefor语句。

这里给出一个顺序执行求$\sqrt{2}$的例子,方法是牛顿迭代法($x_{n+1}=\frac{1}{2}(x_n + \frac{S}{x})$数列的极限为$\sqrt{S}$),迭代3次,并和直接计算的结果作比较:

a = 2
a = 0.5 * (a + 2 / a)
a = 0.5 * (a + 2 / a)
a = 0.5 * (a + 2 / a)
print('My sqrt is', a)
print('Real sqrt is', 2 ** 0.5)

好啦说了这么多(没啥用的),让我们开始学习流程控制语句吧。

if语句

if示例

先看if语句的例子:

x = int(input("Please enter an integer: "))
if x < 0:
    print('Negative changed to zero')
elif x == 0:
    print('Zero')
elif x == 1:
    print('Single')
else:
    print('More')

上面的例子中有两个新函数,这边介绍以下:

  • input():接受一个可选的字符串参数,打印这个字符串,然后读入一行新的字符串,返回读入的字符串(不包括换行);
  • int():接受一个字符串,返回字符串代表的整数。

所以上面代码的第一行的含义是打印Please enter an integer:,读入一行输入,转成对应的整数,将整数存入变量...

剩余内容已隐藏

查看完整文章以阅读更多