目录
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
在内存中存储的数据可以有多种类型。例如:一个人的姓名可以用字符型存储,年龄可以使用数值型存储,婚姻状况可以使用布尔型存储。这里的字符型、数值型、布尔型都是Python语言中提供的基本数据类型。下面将详细介绍基本数据类型。
数字类型
在生活中,经常使用数字记录比赛得分、公司的销售数据和网站的访问量等信息。在Python语言中,提供了数字类型用于保存这些数值,并且它们是不可改变的数据类型。如果修改数字类型变量的值,那么会先把该值存放到内存中,然后修改变量让其指向新的内存地址。
在Python语言中,数字类型主要包括整数、浮点数和复数。
(1)整数
整数用来表示整数数值,即没有小数部分的数值。在Python语言中,整数包括正整数、负整数和0,并且它的位数是任意的(当超过计算机自身的计算功能时,会自动转用高精度计算),如果要指定一个非常大的整数,只需要写出其所有位数即可。
整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。
1)十进制整数:十进制整数的表现形式大家都很熟悉。例如,下面的数值都是有效的十进制整数。
31415926535897932384626
6666666666666666666666666666666666666666666666666666666666666666666666666666
-2020
0
在IDLE中执行的结果如图19所示。
图19 有效的整数
说明:在Python 2.x中,如果输入的数比较大时,Python会自动在其后面加上字母L(也可能是小写字母l),例如,在Python 2.7.14中输入31415926535897932384626后的结果如图20所示。
图20 在Python 2.x中输入较大数时的效果
注意:不能以0作为十进制数的开头(0除外)。
2)八进制整数:由0~7组成,进位规则为“逢八进一”,并且以0o/0O开头的数,如0o123(转换成十进制数为83)、-0o123(转换成十进制数为-83)。
注意:在Python 3.x中,八进制数,必须以0o/0O开头。但在Python 2.x中,八进制数可以以0开头。
3)十六进制整数:由0~9,A~F组成,进位规则为“逢十六进一”,并且以0x/0X开头的数,如0x25(转换成十进制数为37)、0Xb01e(转换成十进制数为45086)。
注意:十六进制数必须以0X或0x开头。
4)二进制整数:由0和1两个数组成,进位规则是“逢二进一”,如101(转换成十制数后为5)、1010(转换成十进制数后为10)。
(2)浮点数
浮点数由整数部分和小数部分组成,主要用于处理包括小数的数,例如:1.414、0.5、-1.732、3.1415926535897932384626等。浮点数也可以使用科学计数法表示,例如,2.7e2、-3.14e5和6.16e-2等。
注意:在使用浮点数进行计算时,可能会出现小数位数不确定的情况。例如,计算0.1+0.1时,将得到想要的0.2,而计算0.1+0.2时,将得到0.30000000000000004(想要的结果为0.3),执行过程如下:
>>> 0.1+0.1
0.2
>>> 0.1+0.2
0.30000000000000004
对于这种情况,所有语言都存在这个问题,暂时忽略多余的小数位数即可。
实例01 根据身高、体重计算BMI指数
在IDLE中创建一个名称为bmiexponent.py的文件,然后在该文件中定义两个变量:一个用于记录身高(单位:米),另一个用于记录体重(单位:千克),根据公式“BMI=体重/(身高×身高)”计算BMI指数,代码如下:
height = 1.70 # 保存身高的变量,单位:米
print("您的身高:" + str(height))
weight = 48.5 # 保存体重的变量,单位:千克
print("您的体重:" + str(weight))
bmi=weight/(height*height) # 用于计算BMI指数,公式:BMI=体重/身高的平方
print("您的BMI指数为:"+str(bmi)) # 输出BMI指数
# 判断身材是否合理
if bmi<18.5:
print("您的体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
print("正常范围,注意保持 (-_-)")
if bmi>=24.9 and bmi<29.9:
print("您的体重过重 ~@_@~")
if bmi>=29.9:
print("肥胖 ^@_@^")
说明:上面的代码只是为了展示浮点数的实际应用,涉及的源码按原样输出即可,其中,str() 函数用于将数值转换为字符串,if 语句用于进行条件判断。如需了解更多关于函数和条件判断的知识,请查阅后面的章节。
运行结果如图21所示。
图21 根据身高、体重计算BMI指数
(3)复数
Python中的复数与数学中的复数的形式完全一致,都是由实部和虚部组成,并且使用j或J表示虚部。当表示一个复数时,可以将其实部和虚部相加,例如,一个复数,实部为3.14,虚部为12.5j,则这个复数为3.14+12.5j。
字符串类型
字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合。在Python中,字符串属于不可变序列,通常使用单引号“' '”、双引号“" "”或者三引号“''' '''或""" """”括起来。这三种引号形式在语义上没有差别,只是在形式上有些差别。其中单引号和双引号中的字符序列必须在一行上,而三引号内的字符序列可以分布在连续的多行上。例如,定义3个字符串类型变量,并且应用print()函数输出,代码如下:
title = '我喜欢的名言警句' # 使用单引号,字符串内容必须在一行
mot_cn = "命运给予我们的不是失望之酒,而是机会之杯。" # 使用双引号,字符串内容必须在一行
# 使用三引号,字符串内容可以分布在多行
mot_en = '''Our destiny offers not the cup of despair,
but the chance of opportunity.'''
print(title)
print(mot_cn)
print(mot_en)
执行结果所图22所示。
图22 使用3种形式定义字符串
注意:字符串开始和结尾使用的引号形式必须一致。另外当需要表示复杂的字符串时,还可以嵌套使用引号。例如,下面的字符串也都是合法的。
'在Python中也可以使用双引号(" ")定义字符串'
"'(・・)nnn'也是字符串"
"""'---' "_"***"""
实例02 输出007号坦克
在IDLE中创建一个名称为tank.py的文件,然后在该文件中,输出一个表示字符画的字符串,由于该字符画有多行,所以需要使用三引号作为字符串的定界符。具体代码如下:
print('''
▶ 学编程,你不是一个人在战斗~~
|
__\--__|_
II=======OOOOO[/ ★007___|
_____\______|/-----.
/___mingrisoft.com___|
\◎◎◎◎◎◎◎◎⊙/
~~~~~~~~~~~~~~~~
''')
运行结果如图23所示。
图23 输出007号坦克
Python中的字符串还支持转义字符。所谓转义字符是指使用反斜杠“\”对一些特殊字符进行转义。常用的转义字符如表2所示。
表2 常用的转义字符及其说明
转 义 字 符 | 说 明 |
\ | 续行符 |
\n | 换行符 |
\0 | 空 |
\t | 水平制表符,用于横向跳到下一制表位 |
\'' | 双引号 |
\' | 单引号 |
\\ | 一个反斜杠 |
\f | 换页 |
\0dd | 八进制数,dd代表字符,如\012代表换行 |
\xhh | 十六进制数,hh代表字符,如\x0a代表换行 |
注意:在字符串定界符引前的前面加上字母r(或R),那么该字符串将原样输出,其中的转义字符将不进行转义。例如,输出字符串“"失望之酒\x0a机会之杯"”将输出转义字符换行,而输出字符串“r"失望之酒\x0a机会之杯"”,则原样输出,执行结果如图24所示。
图24 转义和原样输出的对比
布尔类型
布尔类型主要用来表示真值或假值。在Python中,标识符True和False被解释为布尔值。另外,Python中的布尔值可以转化为数值,True表示1,False表示0。
说明:Python中的布尔类型的值可以进行数值运算,例如,“False + 1”的结果为1。但是不建议对布尔类型的值进行数值运算。
在Python中,所有的对象都可以进行真值测试。其中,只有下面列出的几种情况得到的值为假,其他对象在if或者while语句中都表现为真。
l False或None。
l 数值中的零,包括0、0.0、虚数0。
l 空序列,包括字符串、空元组、空列表、空字典。
l 自定义对象的实例,该对象的__bool__方法返回False或者__len__方法返回0。
数据类型转换
Python是动态类型的语言(也称为弱类型语言),不需要像Java或者C语言一样在使用变量前声明变量的类型。虽然Python不需要先声明变量的类型,但有时仍然需要用到类型转换。例如,在实例01中,要想通过一个print()函数输出提示文字“您的身高:”和浮点型变量height的值,就需要将浮点型变量height转换为字符串,否则将显示如图25所示的错误。
图25 字符串和浮点型变量连接时出错
在Python中,提供了如表3所示的函数进行数据类型的转换。
表3 常用类型转换函数及其作用
函 数 | 作 用 |
int(x) | 将x转换成整数类型 |
float(x) | 将x转换成浮点数类型 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将x转换为字符串 |
repr(x) | 将x转换为表达式字符串 |
eval(str) | 计算在字符串中的有效Python表达式,并返回一个对象 |
chr(x) | 将整数x转换为一个字符 |
ord(x) | 将一个字符x转换为它对应的整数值 |
hex(x) | 将一个整数x转换为一个十六进制字符串 |
oct(x) | 将一个整数x转换为一个八进制的字符串 |
场景模拟:假设某超市因为找零麻烦,特设抹零行为。现编写一段Python代码,实现模拟超市的这种带抹零的结账行为。
实例03 模拟超市抹零结账行为
在IDLE中创建一个名称为erase_zero.py的文件,然后在该文件中,首先将各个商品金额累加,计算出商品总金额,并转换为字符串输出,然后再应用int()函数将浮点型的变量转换为整型,从而实现抹零,并转换为字符串输出。关键代码如下:
money_all = 56.75 + 72.91 + 88.50 + 26.37 + 68.51 # 累加总计金额
money_all_str = str(money_all) # 转换为字符串
print("商品总金额为:" + money_all_str)
money_real = int(money_all) # 进行抹零处理
money_real_str = str(money_real) # 转换为字符串
print("实收金额为:" + money_real_str)
运行结果如图26所示。
图26 模拟超市抹零结账行为
常见错误:在进行数据类型转换时,如果把一个非数字字符串转换为整型,将产生如图27所示的错误。
图27 将非数字字符串转换为整型产生的错误