第3章〓基本数据类型 数据类型是每种编程语言必备的属性,只有给数据赋予明确的数据类型,计算机才能对数据进行运算处理。所以,合理运用数据类型就可以大幅度提升代码的执行效率。本章将通过具体案例详细介绍数字类型、数字运算的应用,并介绍字符串类型以及数据类型的判断和操作。本章将通过6个综合课业任务对数据类型的基本操作进行实例演示,以便为后续开发智能语音识别与翻译平台提升执行效率。 【教学目标】  了解数字类型特点  掌握数字运算符的使用  掌握Python中常见的内置数学函数  了解字符串的常量和操作符  掌握Python中常见的字符串处理函数和处理方法  掌握数据类型之间的转换和判断 【课业任务】 王小明想使用Django+百度翻译API开发一个智能语音识别与翻译平台,Django是一个开放源代码的Web应用框架,由Python写成。在学习完Python基本语法后,需要熟悉Python的基本数据类型的使用,现通过6个课业任务来完成。 课业任务3.1字符串索引的应用 课业任务3.2整除运算 课业任务3.3求矩形面积 课业任务3.4课程等级评定 课业任务3.5判断识别字符串 课业任务3.6华氏温度转换为摄氏温度 3.1数字类型 3.1.1整数类型 整数用来表示整数数值,即没有小数部分的数值,包括正整数、负整数和0,并且它的位数是任意的。如果要指定一个非常大的整数,只需要写出其所有位数即可(当指定的整数超过计算机自身的计算功能时,会自动转用高精度计算)。整数类型可细分为整型(int)和布尔型(bool)。 整数类型如图3.1所示。 图3.1整数类型 Python 3不再区别整数和长整数,只要计算机内存空间足够,理论上整数可以是无穷大。 案例3.1计算4的100次方和6的100次方,示例代码如下。 x = 4 ** 100 # 计算4的100次方 y = 6 ** 100 # 计算6的100次方 print(x) # 输出x的值 print(y) # 输出y的值 执行上述代码,结果如图3.2所示。 图3.2案例3.1执行结果 如图3.3所示,不同进制只是整数的书写形式不同,程序运行时会将整数处理为十进制数。布尔型常量也称为逻辑常量,只有True和False两个值。 图3.3整数和字符串的转换 3.1.2浮点数类型 浮点数由整数部分和小数部分组成,主要用于处理包括小数的数,浮点数类型的名称为float。 说明: 浮点数取值范围为-10308~10308; 与整数不同的是,如果超过浮点数取值范围,则会产生溢出错误(OverflowError); 14.5、1.2345、-1.32 等都是合法的浮点数常量,可以使用科学记数法表示,如2.7e1、-3.14e2等。 因为计算机硬件特点,浮点数不能执行精确运算。 案例3.2浮点数不能执行精确运算的情况,示例代码如下。 x = 0.1 + 0.3 # 结果得到想要的0.4 y = 0.1 + 0.2 # 结果得到0.30000000000000004 print(x) # 输出x的结果 print(y) # 输出y的结果 执行上述代码,结果如图3.4所示。 图3.4案例3.2执行结果 说明: 对于这种情况,所有语言都存在这个问题,暂时忽略多余的小数位数即可。 3.1.3复数类型 Python中的复数(Complex)与数学中的复数的形式完全一致,由实部和虚部组成,并且使用j或J表示虚部,如2+5j、2-5J、5j。 可以用complex()函数创建复数,基本语法格式如下。 complex(实部,虚部) 案例3.3使用complex()函数创建复数,示例代码如下。 x = complex(3,7) # 创建复数 print(x) # 输出已创建好的复数 执行上述代码,运行结果如图3.5所示。 图3.5案例3.3执行结果 3.1.4分数类型 分数是Python 2.6和3.0版本引入的新类型,分数对象明确地拥有一个分子和分母,分子和分母保持最简,使用分数可以避免浮点数的不精确性。 使用fractions模块中的Fraction()函数创建分数,基本语法格式如下。 x = Fraction(a,b) 案例3.4使用Fraction()函数创建分数,示例代码如下。 from fractions import Fraction # 从模块导入函数 x = Fraction(1,8) # 创建分数 print(x) Fraction(2,6) # 创建新的分数 print(x+2) # 计算1/3+2 y = Fraction.from_float(1.5) # 将浮点数转换为分数 print(y) 执行上述代码,运行结果如图3.6所示。 图3.6案例3.4执行结果 3.2数字运算 3.2.1数字运算操作符 Python的运算符主要包括算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。 算术运算符的相关解释如表3.1所示。 表3.1算术运算符 运算符说明举例 **幂运算1**3 ~按位取反~5 -负号-5 *、%、/、//乘法、求余数、真除法、Floor除法1*3、3%2、7/2、7//2 +、-加法、减法1+2、3-2 赋值运算主要用来为变量等赋值,可以直接把赋值运算符“=”右边的值赋给左边的变量,也可以进行运算后再赋值给左边的变量。 赋值运算符的相关解释如表3.2所示。 表3.2赋值运算符 运算符说明举例展 开 形 式 =简单的赋值运算x=yx=y +=、-=加法、减法赋值x+=y、x-=yx=x+y、x=x-y *=、/=乘法、除法赋值x*=y、x/=yx=x*y、x=x/y %=取模赋值x%=yx=x%y **=幂赋值x**=yx=x**y //=取整数赋值x//=yx=x//y 比较运算符也称为关系运算符,用于对变量或表达式的结果进行大小、真假等比较。 比较运算符的相关解释如表3.3所示。 表3.3比较运算符 运算符说明举例结果 >大于'a'>'b'False <小于140 < 460True ==等于'z' =='z'True !=不等于'y' !='x'True >=大于或等于456 >= 412True <=小于或等于40.31 <= 20.35False 逻辑运算(也称为布尔运算)指对逻辑值(True或False)执行not、and或or操作。 逻辑运算符的相关解释如表3.4所示。 表3.4逻辑运算符 运算符说明 not逻辑非 and逻辑与 or逻辑或 在判断True或False之外的数据是否为逻辑值时,Python将属于下列情况的值都视为False,其他则视为True。  None;  各种数字类型的0,如0、0.0、(0+0j)等;  空序列,如' '、()、[]等;  空映射,如{};  当类的实例对象的__bool__()方法返回False或__len__()方法返回0时,实例对象视为False。 位运算按操作数的二进制位进行操作。 位运算符的相关解释如表3.5所示。 表3.5位运算符 运算符说明举例 <<向左移位5 << 3 >>向右移位11 >> 4 &按位与5 & 3 ^按位异或5^3 |按位或5|3 案例3.5位运算符的用法,示例代码如下。 # 按位取反 # 5的8位二进制形式为00000101,按位取反为11111010 a = ~5 # 按位与 # 4的二进制形式为00000100,5为00000101,所以结果为00000100 b = 4 & 5 # 按位异或 # 结果相同为0,否则为1 c = 5 ^ 5 # 按位或 # 按位或在相同位上的数有一个为1时结果为1,否则为0 d = 4 | 5 # 向左移位 # 向左移动1位等同于乘以2 e = 1 << 2 # 向右移位 # 向右移动1位等同于除以2 f = 10 >> 2 print(a,b,c,d,e,f) # 输出a,b,c,d,e,f的值 执行上述代码,结果如图3.7所示。 图3.7案例3.5执行结果 Python运算符的运算规则是优先级高的运算先执行,优先级低的运算后执行,同一优先级的操作按照从左到右的顺序进行,如表3.6所示。 表3.6运算符优先顺序 类型说明优先级 **幂 ~、+、-取反、正号和负号 ~、/、%、//算术运算符 +、-算术运算符 <<、>>左移和右移 &按位与 ^按位异或 |按位或 <、<=、>、>=、!=、==比较运算符 高 低 3.2.2数字处理函数 数字处理函数中的常用数学函数如表3.7所示。 表3.7常用数学函数 类型说明举例 abs()绝对值abs(-2) max()、min()最大值、最小值max([1,3,5])、min([1,3,5]) len()序列长度len('Python')、len([1,3,5]) divmod()取模divmod(3,2) pow()乘方pow(2,2) round()浮点数round(2) sum()求和sum(1,2) 案例3.6掌握常用的数学函数,示例代码如下。 li = [10,2,45,15,6] print('-10的绝对值为:', abs(-10)) # 取绝对值 print('取商和余数为:', divmod(3,2)) # 同时取商和余数 print('和为:', sum(li)) # 求和计算 print('3.1四舍五入为:', round(3.1)) # 四舍五入 print('3.5四舍五入为:', round(3.5)) # 四舍五入 print('2的5次方为:', pow(2,5)) # 计算任意N次方值 print('最小值为:', min(li)) # 取最小值 print('最大值为:', max(li)) # 取最大值 print('长度为:', len(li)) # 返回一个对象或一个项目的长度 执行上述代码,结果如图3.8所示。 图3.8案例3.6执行结果 数字处理函数中的常用数学常量如表3.8所示。 表3.8常用数学常量 常量说明 pi数学常量π=3.1415926…,可用精度 e数学常量e=2.718281…,可用精度 tau数学常量tau=6.283185…,可用精度。tau是一个等于2pi的常量,即圆的周长与其半径之比 inf浮点正无限(对于负无穷大,请使用math.inf),等同于float('inf')的输出 nan浮点“不是数字”(NaN)值,等同于float('nan')的输出 案例3.7认识math模块中的几个数学常量,示例代码如下。 import math # 导入math模块 e_value = math.e # 欧拉数(自然数e=2.718281828459045) inf_value = math.inf # 正无穷大浮点数 nan_value = math.nan # 浮点值 pi_value = math.pi # 圆周率 tau_value = math.tau # tau是一个圆周长数,等于2pi print('e为:', e_value) # 输出e的值 print('正无穷大浮点数为:', inf_value) # 输出正无穷大浮点数的值 print('浮点值为:', nan_value) # 输出浮点数的值 print('圆周率为:', pi_value) # 输出圆周率的值 print('圆周长为:', tau_value) # 输出圆周长的值 执行上述代码,结果如图3.9所示。 图3.9案例3.7执行结果 3.3字符串类型 3.3.1字符串常量 Python字符串常量可用单引号、双引号、3个单引号或双引号、带r或R前缀的raw字符串、带u或U前缀的Unicode字符串等多种方法表示。 字符串常量的表示方法如下。 # 单引号 'a' '123' 'abc' # 双引号 "a" "123" "abc" # 3个单引号或双引号(可以包含多行字符) '''Python code''' """Python string""" # raw字符串 r'abc\n123' R'abc\n123' # Unicode字符串(默认字符串,可以省略) u'asdf' U'asdf' 字符串都是str类型的对象,可用内置的str()函数创建字符串对象。 案例3.8使用str()函数创建字符串对象,示例代码如下。 x = str(135) # 用数字创建字符串对象 y = str('abc135') # 用字符串常量创建字符串对象 print(x) # 输出字符串:135 print(type(x)) # 判断字符串对象类型 print(y) # 输出字符串:abc135 执行上述代码,结果如图3.10所示。 图3.10案例3.8执行结果 转义字符用于表示不能直接表示的特殊字符,Python常用转义字符如表3.9所示。 表3.9转义字符 转义字符说明 \反斜杠 \'单引号 \"双引号 \a响铃符 \b退格符 \f换页符 \n换行符 \r回车符 \t水平制表符 \v垂直制表符 \oNULL \ooo3位八进制表示的Unicode码对应字符 \xhh两位十进制表示的Unicode码对应字符 3.3.2字符串操作符 字符串是字符的有序集合,下面简单介绍in操作符、空格、加号(+)、星号(*)、逗号分隔符的使用。 案例3.9用in操作符判断字符串包含关系,示例代码如下。 x = 'Python' # 创建字符串 print('a' in x) # 判断字符串中是否包含'a',若包含,则返回True,否则返回False print('thon' in x) # 判断字符串中是否包含'thon',若包含,则返回True,否则返回False print('1' in x) # 判断字符串中是否包含'1',若包含,则返回True,否则返回False 执行上述代码,结果如图3.11所示。 图3.11案例3.9执行结果 案例3.10以空格分隔(或者没有分隔符号)的多个字符串可自动合并,示例代码如下。 x = '01' '10' '11' # 创建字符串 print(x) # 字符串自动合并,输出011011 执行上述代码,结果如图3.12所示。 图3.12案例3.10执行结果 案例3.11用加号操作符将多个字符串合并,示例代码如下。 x = '11' + '10' + '00' # 创建字符串 print(x) # 多个字符串合并,输出111000 执行上述代码,结果如图3.13所示。 图3.13案例3.11执行结果 案例3.12用星号操作符将字符串复制多次并构成新的字符串,示例代码如下。 print('10' * 4) # 输出构成新的字符串10101010 执行上述代码,结果如图3.14所示。 图3.14案例3.12执行结果 案例3.13使用逗号分隔字符时,会创建用字符串组成的元组,示例代码如下。 x = 'Hello', 'Python' # 创建字符串 print(x) # 输出字符串 print(type(x)) # 判断字符串类型 执行上述代码,结果如图3.15所示。 图3.15案例3.13执行结果 3.3.3字符串的索引 字符串是一个有序的集合,其中的每个字符可通过偏移量进行索引或分片。 字符串中的字符按从左到右的顺序,其偏移量依次为0,1,2,…,len-1(最后一个字符偏移量为字符串长度减1)。按从右到左的顺序,偏移量取负值,依次为-len,-len+1,…,-2,-1。 索引指通过偏移量定位字符串中的单个字符。 案例3.14使用字符串的索引,示例代码如下。 x = 'Python' print('第1个字符是:', x[0]) # 索引第1个字符 print('最后一个字符是:', x[-1]) # 索引最后一个字符 print('第4个字符是:', x[3]) # 索引第4个字符 执行上述代码,结果如图3.16所示。 图3.16案例3.14执行结果 索引可获得指定位置的单个字符,但不能通过索引修改字符串。 案例3.15字符串对象不允许被修改,示例代码如下。 y = 'Python' y[0] = 'c' # 修改字符串中的指定字符,会报错 print(y) # 输出修改后的字符串 执行上述代码,结果如图3.17所示。 图3.17案例3.15执行结果 3.3.4字符串的切片 字符串的切片也称为分片,它使用索引范围从字符串中获得连续的多个字符(即子字符串),字符串切片的基本语法格式如下。 x[ start : end ] 上述代码返回字符串x中从偏移量start开始到偏移量end前的子字符串; start和end参数均可省略,start默认为0,end默认为字符串长度。 案例3.16字符串的切片,示例代码如下。 x = 'Python' print(x[1:4]) # 返回偏移量为1~3的字符 print(x[1:]) # 返回偏移量为1到末尾的字符 print(x[:4]) # 返回从字符串开头到偏移量为3的字符 print(x[:-1]) # 除最后一个字符,其他字符全部返回 print(x[:]) # 返回全部字符 执行上述代码,结果如图3.18所示。 图3.18案例3.16执行结果 3.3.5迭代字符串 字符串是有序的字符集合,可用for循环迭代处理字符串。 案例3.17迭代字符串,示例代码如下。 for a in 'Python': # 变量a依次表示字符串中的每个字符 print(a) # 输出迭代处理后的字符串 执行上述代码,结果如图3.19所示。 图3.19案例3.17执行结果 3.3.6字符串处理函数 字符串长度指字符串中包含的字符个数,可用len()函数获得字符串长度。 案例3.18求字符串长度,示例代码如下。 x = 'Python' # 创建字符串'Python' print(len(x)) # 输出字符串'Python'的长度 执行上述代码,结果如图3.20所示。 图3.20案例3.18执行结果 可用str()函数将非字符串数据转换为字符串,示例代码如下。 案例3.19将非字符串数据转换为字符串,示例代码如下。 print(str(10)) # 将整数转换为字符串 print(str(10.2)) # 将浮点数转换为字符串 print(str(2+3j)) # 将复数转换为字符串 print(str([10,11,12])) # 将列表转换为字符串 print(str(False)) # 将布尔常量转换为字符串 执行上述代码,结果如图3.21所示。 图3.21案例3.19执行结果 在转换数字时,repr()和str()函数的效果相同。在处理字符串时,repr()函数会将一对表示字符串常量的单引号添加到转换后的字符串中。 案例3.20repr()函数的用法,示例代码如下。 print(str(123456), repr(123456)) # repr()函数会直接添加到转换之后的字符串 print(str('123456'), repr('123456')) # repr()函数会将字符串的引号显示出来 print(str("123456"), repr("123456")) # 若是双引号,也会用单引号显示出来 执行上述代码,结果如图3.22所示。 图3.22案例3.20执行结果 案例3.21ord()函数返回字符的Unicode码; chr()函数返回Unicode码对应的字符,示例代码如下。 print('返回字符Unicode码') print('"A"字符的Unicode码为:', ord('A')) print('"字"字符Unicode码为:', ord('字')) print('将Unicode码转换为字符') print('将65转换为字符为:', chr(65)) print('将23383转换为字符为:', chr(23383)) 执行上述代码,结果如图3.23所示。 图3.23案例3.21执行结果 3.3.7字符串处理方法 字符串是str类型的对象,字符串处理方法调用格式: 字符串.方法()。表3.10~表3.19分别列出了字符串的各种常用方法及说明。 表3.10字符串查询 常用方法说明 str.find(s)返回字符串s在字符串str中的位置索引,没有则返回-1 str.rfind()类似于find()函数,不过是从右边开始查找 str.index(s)和find()方法一样,但是如果s不存在于str中,则抛出异常 str.rindex()类似于index()函数,不过是从右边开始 表3.11字符串大小转换操作 常用方法说明 str.upper()将字符串中所有元素都转换为大写 str.lower()将字符串中所有元素都转换为小写 str.swapcase()交换大小写,大写转换为小写,小写转换为大写 str.capitalize()把字符串的首字母大写 str.title()将字符串中所有单词的首字母转换为大写,其余均为小写 表3.12合并与替换 常用方法说明 str.join(sep)以指定字符串作为分隔符,将sep中所有元素合并为一个新的字符串 str.replace(old,new[,max])把字符串中的old替换成 new,如果指定max,则替换不超过 max次 表3.13字符串对齐 常用方法说明 str.center(width[,fillchar])返回一个指定的宽度width居中的字符串,fillchar为填充的字符,默认为空格 str.ljust(width[,fillchar])返回一个原字符串左对齐,并使用fillchar填充至长度width的新字符串,fillchar默认为空格 str.rjust(width[,fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width的新字符串 str.zfill(width)返回长度为width的字符串,原字符串右对齐,前面填充0 表3.14分割字符串 常用方法说明 str.split(seq="", num=string.count())以 seq (默认空格)为分隔符截取字符串,如果num有指定值,则仅截取 num+1个子字符串(只需num个seq分隔符) str.rsplit()与split()方法类似,不过是从右边开始分割 str.splitlines()按照行进行分割,得到新的列表 str.partition(str)找到字符串中第1个str,并以str为界,将字符串分割为3部分,返回一个新的元组 str.rpartition()与partition()方法类似,只不过是反向找 表3.15判断字符串 常用方法说明 str.isidentifier()判断字符串是否为合法标识符(字符、数字、下画线) str.isspace()如果str中只包含空格,则返回True,否则返回False str.isalpha()如果str至少有一个字符并且都是字母则返回True,否则返回False str.isdecimal()判断字符是否全部由十进制数字组成,不包括中文、罗马字符 str.isdigit()判断字符串是否只包含数字,不包括中文数字 str.isnumeric()判断字符串是否全部由数字组成,包括中文数字 str.isalnum()判断字符串是否由字母和数字组成 str.islower()判断字符串中的字符是否全部为小写,字符串至少有一个字符 str.supper()判断字符串中的字符是否全部为大写,字符串至少有一个字符 str.istitle()判断字符串是否标题化 str.isascii()如果字符串为空或字符串中的所有字符都是ASCII编码,则返回 True,否则返回False str.isprintable()如果所有字符都是可打印的,则返回True,否则返回False 表3.16去除两端多余字符操作 常用方法说明 str.lstrip([Chars])去掉左边的指定字符(不是字符串),默认为空白字符 str.rstrip([Chars])去掉右边的指定字符 str.strip([Chars])去掉左右两边的指定字符 表3.17判断开头结尾字符串 常用方法说明 str.startswith(strz)检查字符串是否以strz开头,若是,则返回True str.endswith(strz)检查字符串是否以strz结尾,若是,则返回True 表3.18字符串计数 常用方法说明 str.count(sub[,start,end])在字符串[start,end)范围内,计算sub字符串的个数 len()len()是内置函数,计算字符串中的字符个数 表3.19判断开头结尾字符串 常用方法说明 str.encode(encoding='UTF8',errors='strict')以encoding指定的编码格式编码字符串,如果出错,默认抛出ValueError异常,除非errors指定的是'ignore'或'replace' bytes.decode()Python 3中没有decode()方法,但可以使用bytes对象的 decode()方法解码给定的bytes对象,这个bytes对象可以由 str.encode()方法编码返回 3.3.8字符串的格式化 字符串格式化表达式用“%”表示,“%”之前为格式字符串,“%”之后为需要填入格式字符串中的参数,基本语法格式如下。 格式字符串 % (参数1,参数2,…) Python中常用的字符串格式化表示符如表3.20所示。 表3.20常用的字符串格式化表示符 表示符说明 s将非str类型的对象用str()函数转换为字符串 r将非str类型的对象用repr()函数转换为字符串 c参数为单个字符(包括各国文字)或字符的Unicode码,将Unicode码转换为对应的字符 d、i参数为数字,转换为带符号的十进制整数 o参数为数字,转换为带符号的八进制整数 x参数为数字,转换为带符号的十六进制整数,字母小写 X参数为数字,转换为带符号的十六进制整数,字母大写 e将数字转换为科学记数法格式(小写) E将数字转换为科学记数法格式(大写) f、F将数字转换为十进制浮点数 g浮点格式,如果指数小于-4或不小于精度(默认为6),则使用小写指数格式,否则使用十进制格式 G浮点格式,如果指数小于-4或不小于精度(默认为6),则使用大写指数格式,否则使用十进制格式 3.3.9bytes字符串 bytes对象是一个不可变的字节对象序列,是一种特殊的字符串,也称为bytes字符串,用前缀b表示,示例如下。 # 单引号 b'a' b'111' b'abc' # 双引号 b"a" b"111" b"abc" # 3个单引号或双引号 b'''Python code''' b"""Python string""" 在bytes字符串中只能包含ASCII字符,使用非ASCII字符会报错。 案例3.22bytes字符串,示例代码如下。 x = b'字母anc' # 使用非ASCII字符 print(x) # 输出非ASCII字符会报错 执行上述代码,结果如图3.24所示。 图3.24案例3.22执行结果 3.4数据类型操作 3.4.1类型判断 数据类型的判断,可以用type()函数查看数据类型。 案例3.23type()函数的使用,示例代码如下。 x = 111 # 创建整数类型字符串 y = (111.2) # 创建浮点数类型字符串 print(type(x)) # 判断x的字符串类型 print(type(y)) # 判断y的字符串类型 执行上述代码,结果如图3.25所示。 图3.25案例3.23执行结果 3.4.2类型转换 可以使用int()函数将一个字符串按指定进制转换为整数。int()函数基本语法格式如下。 int('整数字符串', n) # n表示转换进制数 案例3.24int()函数的使用,示例代码如下。 print(int('11001')) # 默认按十进制转换 print(int('11001',2)) # 按二进制转换 print(int('11001',8)) # 按八进制转换 print(int('1101',10)) # 按十进制转换 执行上述代码,结果如图3.26所示。 图3.26案例3.24执行结果 int()函数的第1个参数只能是整数字符串,第1个字符可以是正/负号,其他字符必须是数字,不能包含小数点或其他符号,否则会报错。 float()函数可将整数和字符串转换为浮点数。 案例3.25float()函数的使用,示例代码如下。 print(float(15)) # 将整数15转换为浮点数 print(float('15')) # 将整数'15'转换为浮点数 print(float('+15')) # 将整数'+15'转换为浮点数 print(float('-15')) # 将整数'-15'转换为浮点数 执行上述代码,结果如图3.27所示。 图3.27案例3.25执行结果 内置函数bin()、oct()和hex()用于将整数转换为对应进制的字符串。 案例3.26内置函数bin()、oct()和hex()转换进制,示例代码如下。 print(bin(122)) # 转换为二进制字符串 print(oct(122)) # 转换为八进制字符串 print(hex(122)) # 转换为十六进制字符串 执行上述代码,结果如图3.28所示。 图3.28案例3.26执行结果 3.5课业任务 扫一扫 视频讲解 课业任务3.1字符串索引的应用 【能力测试点】 字符串类型中索引的应用。 【任务实现步骤】 (1) 打开PyCharm,新建一个Python文件,本课业任务以“任务3.1”命名。 (2) 任务需求: 对字符串'Python'进行索引。首先创建对象x,接着按要求进行程序编写,代码如下。 x = 'Python' # 创建字符串'Python' for i in range(len(x)): # 根据索引遍历字符串的内容 print(x[i],end = "") # i从0开始索引 print() # 默认换行 for i in range(len(x)): # 根据索引遍历字符串的内容 print(x[-(i+1)],end = "") # -(i+1)是反向索引 运行结果如图3.29所示。 图3.29课业任务3.1运行结果 扫一扫 视频讲解 课业任务3.2整除运算 【能力测试点】 整除运算int()函数的应用; 使用if语句进行判断。 【任务实现步骤】 (1) 打开PyCharm,新建一个Python文件,本课业任务以“任务3.2”命名。 (2) 任务需求: 输入一个4位以上的整数,否则提示输入错误,输出其千位以上的数字。例如,用户输入1234,则程序输出1(使用if语句进行程序编写)。首先创建对象x和y,接着按要求进行程序编写,代码如下。 x = eval(input(' 请输入一个4位以上的整数: ')) y = int(x / 1000) # int()函数进行整除运算 if(x < 999): # 如果x<999,则输出'输出错误' print(' 输入错误 ') else: # 否则,输出整除结果 print(y) (3) 运行程序,输入整数25,输出如图3.30所示; 输入整数1212,输出如图3.31所示。 图3.30课业任务3.2运行结果(1) 图3.31课业任务3.2运行结果(2) 扫一扫 视频讲解 课业任务3.3求矩形面积 【能力测试点】 input()函数、内置函数map()和运算符的应用。 【任务实现步骤】 (1) 打开PyCharm,新建一个Python文件,本课业任务以“任务3.3”命名。 (2) 任务需求: 输入矩形的长和宽,计算矩形的面积并输出(使用input()函数实现同步赋值)。首先创建对象L_W,接着按要求进行程序编写,代码如下。 L_W = input(' 请输入矩形的长和宽,以空格分开:') length, width = map(float,L_W.split()) # 使用map()函数映射出指定的序列 S = length * width # 面积=长*宽 print(" 矩形面积为:",S) # 输出计算后的面积 (3) 运行程序,输入长和宽分别为4和5,结果如图3.32所示。 图3.32课业任务3.3运行结果 扫一扫 视频讲解 课业任务3.4课程等级评定 【能力测试点】 数字运算操作符和if语句的应用。 【任务实现步骤】 (1) 打开PyCharm,新建一个Python文件,本课业任务以“任务3.4”命名。 (2) 任务需求: 将某课程的百分制分数m转换为5分制(优、良、中、及格、不及格)的评定等级grade。评定条件: m≥90为优,80≤m<90为良,70≤m<80为中,60≤m<70为及格,m<60为不及格。首先创建对象m,接着按要求进行程序编写,代码如下。 m = eval(input('请输入你的分数:')) if m >= 90: #如果m >= 90,则grade为优 print('grade为:', '优') elif 80 <= m < 90: #否则如果80 <= m < 90,则grade为良 print('grade为:', '良') elif 70 <= m < 80: #否则如果70 <= m < 80,则grade为中 print('grade为:', '中') elif 60 <= m < 70: #否则如果60 <= m < 70,则grade为及格 print('grade为:', '及格') elif m < 60: #否则如果m < 60,则grade为不及格 print('grade为:', '不及格') (3) 运行程序,输入分数93,输出如图3.33所示; 输入分数59,输出如图3.34所示。 图3.33课业任务3.4运行结果(1) 图3.34课业任务3.4运行结果(2) 扫一扫 视频讲解 课业任务3.5判断识别字符串 【能力测试点】 字符串处理函数的应用。 【任务实现步骤】 (1) 打开PyCharm,新建一个Python文件,本课业任务以“任务3.5”命名。 (2) 任务需求: 变量x = "Learning Python makes me happy"。判断"e"出现的次数; 判断字符串是否为空; 判断字符串是否为大写; 判断字符串是否全为数字; 将字符串填充到长度为45(使用“+”进行填充)。首先创建对象x,且赋值为"Learning Python makes me happy",接着按要求进行程序编写,代码如下。 x = "Learning Python makes me happy" print("某个字符串出现次数: x.count('e') = ", x.count('e')) print("字符串是否都是空格: x.isspace() = ", x.isspace()) print("字符串是否大写: x.isupper() = ", x.isupper()) print("字符串是否全为数字: x.isalnum() = ", x.isalnum()) print("填充+值: x.rjust(45,"+")= ", x.rjust(45,"+")) 运行结果如图3.35所示。 图3.35课业任务3.5运行结果 扫一扫 视频讲解 课业任务3.6华氏温度转换为摄氏温度 【能力测试点】 数据类型转换的应用。 【任务实现步骤】 (1) 打开PyCharm,新建一个Python文件,本课业任务以“任务3.6”命名。 (2) 任务需求: 将华氏温度F转换为摄氏温度C,转换公式为C=(F-32)×5/9。首先创建对象F和C,接着按要求进行程序编写,代码如下。 # 将华氏温度转换为摄氏温度 F = int(input("请输入华氏摄氏度:")) # 输入华氏温度 C = int((F-32)*5/9) # 转换为摄氏温度 print("转换后的摄氏温度为:", C) # 输出转换后的摄氏温度 (3) 运行程序,输入华氏温度为65,结果如图3.36所示。 图3.36课业任务3.6运行结果 习题3 1. 选择题 (1) 下列关于表达式中整型、浮点型、复数型的运算结果类型的说法中正确的是()。 A. 表达式中整型、浮点型、复数型的运算结果是整型 B. 表达式中浮点型、复数型的运算结果是复数型 C. 表达式中整型、浮点型、复数型的运算结果是字符型 D. 表达式中整型、浮点型、复数型的运算结果是浮点型 (2) 遍历循环语句for i in range (n),n的数据类型是()。 A. 字符串类型 B. 浮点型 C. 整数类型 D. 复数类型 (3) Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中的元素个数。 A. max() B. len() C. globals() D. type() (4) 下列关于Python复数的说法中错误的是()。 A. 表示复数的语法是real+image j B. 实部和虚部都是浮点数 C. 虚部必须后缀j,且必须是小写 D. conjugate()方法返回复数的共轭复数 (5) 计算机中信息处理和信息存储用()。 A. 二进制代码 B. 十进制代码 C. 十六进制代码 D. ASCII码 (6) Python中不支持的数据类型有()。 A. int B. char C. list D. float (7) 下列关于字符串的说法中错误的是()。 A. 字符应该视为长度为1的字符串 B. 既可以用单引号,也可以用双引号创建字符串 C. 以\0标志字符串的结束 D. 在三引号字符串中可以包含换行、回车等特殊字符 2. 填空题 (1) 表达式abs(-23)的值为。 (2) 表达式 3 | 5 的值为。 (3) 表达式 [1, 2, 3] == [1, 3, 2] 的值为。 (4) Python内置函数用来返回序列中的最小元素。 (5) 表达式 'abc1212'.isalnum() 的值为。 3. 判断题 (1) 在Python中0xa1是合法的八进制数字表示形式。() (2) 可以使字符串开头首字母大写的字符串函数有capitalize()和title()。() (3) decode()方法是编码,encode()方法是解码,如果字符串是Unicode编码,就可以直接编码而不需要解码。() (4) 在Python中,字符串没有长度限制。() (5) Python中运算符的运算规则是优先级高的运算先执行,优先级低的运算后执行,同级则按从左到右的顺序执行。() 4. 编程题 (1) 输入一个4位的整数,分别输出其个位、十位、百位、千位。 (2) 输入三角形3条边的边长,求三角形的面积。