关于Python中的数据类型和变量
要想让程序完成某项任务,最基本的是了解如何使用程序语言自带的数据类型和变量,然后通过运算、比较、控制语句等等来达到我们的目的。现在,我们将学习Python中常见的数据类型,以及变量是什么,以及如何使用它们。
数据类型
Python中的数据类型包容:
数值型:包括整数(int),浮点数(float),布尔型(真或假,用True,False表示),复数(complex).
字符串(str):一段文字,要用单引号或引号括起来。
列表(list):把多个值放到一起的组合数据类型,用方括号[]括起来,各个值之间以逗号隔开。
字典(dict):”键:值“对组合的数据类型,键与值之间用冒号分开,不同键值对用逗号分割,所有键值对都放到大括号{}中。
集合:是无序(没有顺序)的不重复元素组合类型。
元组(tuple):与列表类似,但元组是不可变的。
下面我们来实际操练一下。
首先打开Thonny,在python脚本互动区输入下面的语句
i = 2type(1)12复制代码类型:[python]
可以看到显示<class'int'>,表示i是一个整数。在python中,i=2这个语句创建了一个变量,变量的名字叫做i,现在给i一个整数值2,i就表示整数类型的变量。
=与==的区别
“=”用来把一个对象賦给一个变量,而"=="用于比较两个对象是否相等。
关于变量
在Python中,变量名只能包括字母,数字和下划线,不能以数字开头。同时,也不能和Python已经定义的关键字相同,比如def在python中用来创建函数,就不能把变量名设置为def。Python变量名大小写敏感,比如test与Test是两个不同的变量。
与Java,C语言不同,在python中定义变量时,不需要显式指定变量类型。如在Java中要定义一个整数类型变量需要这样:
int i = 3 ; #必须在变量名前面加上类型int1复制代码类型:[python]
在Python中则不需要如此,因为Python是动态类型编程语言,变量名可以指向不同的对象(内存中的位置),在程序运行时才会根据它指向的对象来判断是什么类型。可以尝试一下这2行代码
i = 56 # i指向的对象是整数类型,这个对象值是56i = 'hahaha' # 现在i指向了另一个str对象,他的值是hahaha12复制代码类型:[python]
这可以通过打开Thonny的堆栈(heap)来看,点击菜单"View"--"Heap"打开堆栈,然后运行上面两行代码,在堆栈窗口可以看到下面的内容:
堆栈窗口是个非常好的帮助我们理解变量与对象关系的地方,大家可以多在这练习和观察。(堆栈就是程序使用的内存区域)
数据类型演练
数值型
一般我们用数值型来做运算,Python支持非常丰富的运算操作,除了常见的+、-、*(乘)、/(除)外,还有整数除//,求余数%,求幂**,以及math库来实现更复杂的数学运算。在脚本互动区,我们可以对数值型对象直接进行运算。
>>> 6+2 #整数相加8>>> 11-2 #整数减法9>>> 3*8 # 整数乘法24>>> 19/3 # 除法6.333333333333333>>> 19%3 # 求余数1>>> 19//3 # 整除6>>> 3.6+5 #浮点数相加,5会被自动转换为浮点数5.0 8.61234567891011121314复制代码类型:[python]
字符串
字符串可以用单引号,或者双引号来声明。
s = 'i am str' # 正确用法,用单引号包裹s = "i am str" # 正确用法,用双引号包裹s = "i am wrong' # 错误!结尾也必须用双引号才行123复制代码类型:[python]
创建字符串时,在单引号中可以嵌套双引号,反之亦然。
s= 'mama said "Do Not Touch".' # 这是正确的用法s = "mama said 'Do Not Touch'." # 这也是正确的用法12复制代码类型:[python]
对字符串的一般操作包括求长度、连接、索引、生成子字符串等。
>>> s = "mama said 'Do Not Touch'.">>> len(s) #求长度25>>> s =s +"Oh." #字符串叠加>>> print(s)mama said 'Do Not Touch'.Oh.>>> s[0] #根据位置索引字符'm'>>> s[1]'a'>>> s[1:4] #得到子字符串'ama'123456789101112复制代码类型:[python]
列表
列表和其他编程语言的数组非常类似。用[]来定义,列表中的元素可以是不同类型。
>>> list = [1,2,3,4,5] #全部是整数的列表>>> fl=[1,'ok',2,'good',7.8] #有整数,字符串,浮点数元素的列表>>> print(list)[1, 2, 3, 4, 5]>>> print(fl)[1, 'ok', 2, 'good', 7.8]>>> list[0] #通过索引读取列表元素,从0开始1>>> len(list) #获取列表的长度5>>> list[4] #列表的最后一个元素,因为从0开始5>>> list[5] #所以不存在list[5],这是list的第6个元素,而它只有5个。Traceback (most recent call last): File "<pyshell>", line 1, in <module>IndexError: list index out of range #错误提示:索引越界了>>> newl = list + fl # 2个列表合并得到一个新列表>>> print(newl)[1, 2, 3, 4, 5, 1, 'ok', 2, 'good', 7.8]12345678910111213141516171819复制代码类型:[python]
与字符串一样,列表也可以通过位置(索引)来读取指定的元素,索引从0开始,通过“列表名[索引]"方式读取。因为索引从0开始,所以列表的最后一个元素应该是在”长度-1“的索引处,比如上面的list有5个元素,最后一个元素的索引是"5-1=4",而不是5。
列表的操作有很多,常见的如下,今后使用时再详细解释
append():在列表后面追加元素
insert():在列表中插入元素
pop():把指定的元素移出list
clear():清除列表所有元素
sort():对列表进行排序
字典
字典是”键值对“组合而成,日常生活中最常见的字典是学校里的学号,每个学生都有一个学号,来对应这个学生,这里键就是学号,值则是学生的名字。
>>> xuehao = {1:"张三", 2:"李四", 3:'王五'} #创建字典>>> xuehao[1] #通过键”1“读取对应数值'张三'>>> xuehao[3]'王五'>>> xuehao[4]="zhaoliu" #向字典添加新元素>>> print(xuehao){1: '张三', 2: '李四', 3: '王五', 4: 'zhaoliu'}>>> xuehao.keys() #字典的所有键,这是一个列表dict_keys([1, 2, 3, 4])>>> xuehao.values() #字典的所有值,这也是一个列表dict_values(['张三', '李四', '王五', 'zhaoliu'])123456789101112复制代码类型:[python]
针对字典的操作也很多,我们这里就先不深入了。
学以致用
让我们做一个学号查询工具,让用户输入学号,然后程序列出对应的名字,我们先看使用字典的方式
#先创建字典xueshengdict = {1: '张三', 2: '李四', 3: '王五', 4: 'zhaoliu'}while True: xuehao = input("请输入您的学号: ") #读取用户输入的学号 i = int(xuehao) #读入的学号是字符串,需要通过int()函数转换为整数,因为字典的key是整数 if i < len(xueshengdict): #判断输入的数字是否小于字典长度 print(xueshengdict[i]) #显示名字 else: #输入数字大于或等于字典长度时,则显示错误信息并从循环退出,完成程序 print("wrong key, quit program!") break12345678910复制代码类型:[python]
我们还可以通过列表来实现,前提是学号从1开始,并且是连续的,否则不能通过列表来实现。
#创建列表,默认大家学号从1开始,1,2,3,4这样排下去xueshengdict = ['张三', '李四', '王五', 'zhaoliu']while True: xuehao = input("请输入您的学号:") i = int(xuehao) - 1 # 因为通过索引读取学生姓名,所以学号减1得到索引位置 if i < len(xueshengdict): print(xueshengdict[i]) else: print("wrong key, quit program!") break