第3章了解Python的思维方式
通过前两章的学习,大家了解了与Python的相处之道,认识了基本数据类型,学习了简单的运算,懂得了如何与Python深入的交流。下面将继续我们的学习旅程。在生活中,我们常会表达假设,例如,如果明天不下雨,我们就出去玩。除此之外,我们还会多次重复做一样的事,例如,从1依次数到100。那我们在Python中如何表达这些情况呢?本章将主要讲解条件选择和循环,教会你使用条件语句和循环语句。在学习中,我们会遇到很多难题,今天Python要使用条件选择和循环帮我们解决难题,话不多说,我们开始吧!
【问题来了】
给定一个班期末百分制考试成绩,如何将成绩转换为A,B,C,D等级形式?
规则如下:
成绩在90分以上为A,成绩在75~90分为B,成绩在60~75分为C,成绩在60分以下为D。
你一定想到怎么做了: 判断成绩在哪一个范围,即知道成绩对应的等级。那么使用Python要如何实现呢?聪明的Python提供了多种方法,我们一起来看看Python是如何解决这个问题的吧!
首先分析一下题目: 将百分制成绩转换为A,B,C,D等级形式成绩,在前面学习了数据类型,可以使用一个变量score存储输入的成绩,判断score在哪一个范围,使用print()语句输出对应的A,B,C,D等级。现在的问题是: 如何在特定的范围输出特定的等级?
在此之前,我们先来认识一个“好朋友”——代码块。
3.1代码块缩进
什么是代码块呢?它和Python是好朋友吗?它又有什么用呢?它在程序中无处不在,至关重要。代码块是由一组语句组成的,可以在满足条件时执行(如条件语句)、可以执行多次(如循环语句),等等。为了让编译器或解译器准确地把一堆代码划分到各自的代码块中,在Python中采用缩进方式来实现。
在Python中,缩进具有非常大的意义,可以使用Tab键(制表符)或者空格实现缩进,一个缩进一般为4个空格。Python中,同一个代码块,各行的缩进是相同的。例如:
>>> if True:
print("This is a link.")
print("This is also a link.")
This is a link.
This is also a link.
>>> if False:
print("This is a link.")
print("This is also a link.")
>>>
严谨的Python非常注意缩进,如果在一个代码块中有一行的空格不是4个而是6个,Python会如何解决呢? >>> if True:
print("This is a link.")
print("This is also a link.")
SyntaxError: unexpected indent
>>> if False:
print("This is a link.")
print("This is also a link.")
SyntaxError: unexpected indent
观察第二个print("This is also a link.")发现,print前面有6个空格,比前面的print语句多两个空格,则Python运行时,会报错“SyntaxError: unexpected indent”,因为在同一个代码块中,所有行的缩进是相同的(相同数量的空格),Python不理解第二个print("This is also a link.")语句属于哪个代码块。这样严格的缩进使得Python的代码整齐,可读性很高,在平时编写代码时,也要格外注意代码的缩进。
在新写一行并且此行比前一行空格多时,则开始写一个新的代码块,这个代码块属于前面代码块的一部分。看看下面的伪代码,你一定会明白的。
【知识拓展】伪代码是算法的辅助工具,主要体现一个算法的思想,不需要准确地写出代码,以文字和代码结合的方法,将算法表示出来。
图31中block1属于第一个代码块,block2属于第二个代码块,block3属于第三个代码块。其实,当你改变缩进时,就是在建立新的代码块,对上面的示例改一改缩进,结果接近不同,如图32所示。
图31代码块
图32代码块
Python的许多好朋友(如C,Java)都是使用特殊的符号或者关键词来表示代码块的,如“{}”。在Python中,使用冒号(:)指出接下来的是代码块,如同人们语言表达一样,使用冒号(:)引出,并且如果代码块中的每一行代码的缩进相同,表示它们是同一个代码块,因此在发现当前的缩进量与之前的缩进量不相同时,你就知道代码块到这里就结束了。这使得Python的缩进非常严谨,代码也十分整齐。
示例中的True和False是本书前面介绍的布尔值。很神奇吧?冒号(:)前为True时执行随后的代码块,为False时不执行随后的代码块。if是如果满足条件的意思,布尔值在条件语句中有什么作用呢?
3.2再谈布尔值
在本书的2.1节我们学习了布尔值,曾经也多次遇到了真值,在这里我们使用布尔值作为条件语句判断条件。
>>>bool(True)
True
>>> if True:
print('这是对的')
这是对的
布尔值为真,执行输出“这是对的”语句。 Python提供了许多比较运算符,如表31所示。
表31比较运算符
运算符描述实例
is检查左右是否引用同一对象x='ab',y='ab',x is y为True
is not检查左右是否引用不同