Python 第三课
本教程未完结,还有很多东西还没写
流程控制【第三课】
前面的课程我们对python语法有个基本的理解,这节课之后,我们能够使用python写出一个简单的输入输出程序。
让我们来运行这么一段程序——打印小于1000的斐波那契序列:
a, b = 0, 1 |
观察上面的程序,有几个知识点:
- 第一行和第四行用了多重赋值,同时获得新值0, 1。等号右表达式求值顺序为从左到右
print(a, end=', ')
,这里的end是print函数的命名参数,用途是:将print输出语句之后的文本替换为,
默认是\n
换行。以此来完成不换行输出- while关键字,接下来单元所要讲解的东西
条件语句(Conditional)
在继续讲解之前,我们来了解计算机里一个很重要的概念——条件判断。在计算机的认知里,只有0和1两种区别。即1为真、0为假。知道这个有什么用呢?
我们来举个栗子:
有一个密码门,每个人都可以输入他们的名字,但只有叫“Bob”的人才能进入
if 语句
这时候我们就需要用到if
判断语句。顾名思义:if
就是如果的意思,事实上大部分的编程语言都可以这么理解。而Python是最好理解的其中一个编程语言——它的语法是这样的:如果 条件:条件成立要干什么。所以接着我们上面的例子,代码应该长这样:
name = input("请输入您的名字:") # 获取用户输入的名字 |
运行代码之后,他会让用户输入名字,如果用户输入的是Bob,则会输出:欢迎您!验证完毕
,但如果用户输入别的名字,则只会输出验证完毕
。
这里我们需要注意的是:Python 里没有花括号{}
的概念,用缩进(Indent)来辨认某一个块级语句。同级连续的缩进代表当前语句块是属于同一阶级的。
什么意思呢?如果我们把代码改成这样:
name = input("请输入您的名字:") |
我们再次运行代码,输入Bob
,这时候程序会输出:欢迎您!验证完毕,程序执行完毕!
,但如果输入别个名字,这次只会输出程序执行完毕!
。
如果需要解释方便记忆的话,可以将这个语法结构理解为一整套单元项目,比如我们的目录,它的同一级的单元将会作为用一个缩进长度
好,我们学会了单分支判断。那么我们来换个题目,我们应该如何解决这个问题呢?
有一家娱乐中心,只能允许21岁的人士进入,小于21岁的人则会被请离开
if-else 语句
if语句要的是条件成立则完成什么事情,那么我们还需要另一个东西,表示条件不成立则执行什么语句。这时候我们要使用else
来处理条件不成立时的操作
age = input("请输入您的年龄:") |
运行这段代码片段,我们会发现当我们输入的值小于21
时,他会输出禁止入内的消息、反之会输出欢迎光临。
以上就是双分支语句了。那么现在又有另一个需求,我们又该如何解决这个问题呢?
有一家游乐园,里面的设施只有高度介于140 - 180的人才能游玩,否者会根据高度显示玩家过矮或过高
if-elif 语句
刚刚提到的双分支条件判断只能处理一个条件,那么如果我们需要当不能满足这个条件的话,判断另一个条件,如果某一个条件为真,则执行该语句。我们可以通过这段代码完成上述要求:
height = int(input("请输入您的身高:")) |
那么上面就是我们刚刚根据要求所编程的代码片段。需要注意的是,这个if-elif
的流程是:当从上往下有其中一项为真,则不会再执行其他判断语句。
循环(Loop)
后续课程
详解print()
函数(讲完函数再来讲这个)
当我们阅读python的builtins.pyi
源码时会发现print()
函数长这样:
def print(*values: object, sep: Optional[Text]=..., end: Optional[Text]=..., file: Optional[_Writer]=..., flush: bool=...) |
他的参数解释大概是这样的:
- values: 必须,在标准输出流、或默认在
sys.stdout
上打印values的值 - 可选参数列表:
- file: 一个类文件的对象(流stream),默认值为
sys.stdout
- sep: 两个值之间插入的字符串,默认是一个空格
- end: 在最后一个value之后加上的字符串,默认是换行
\n
- flush: whether to forcibly flush the stream.
- file: 一个类文件的对象(流stream),默认值为
让我们来阅读这么一段代码: