没有学不会的python
先提一下肛
相信很多同学都听过数据类型这个词吧?无论是零基础还是有其他编程语言的同学,对这个词都不会陌生。基本上来说,无论什么教程,都是会把这个数据类型提前拿出来讲透,因为这个万一不吃透,后面的学习无法开展下去。
先看下概念描述:
数据类型在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。
可能很多同学就一脸懵逼了,这段话的每个词我都了解,我也知道它是什么意思,但是我脑子里怎么就好像理解不了呢?
简单翻译下:
只要抓住两个关键词,性质相同以及一组操作,就懂得核心了。
做几个例子:
数据结构辅助例子
好了,你说的例子我明白了,就是一类东西的归类呗。那这个跟python的数据类型有什么关系,我还是不明白python的数据类型是啥。
在知道python的数据类型是啥之前,我们先了解下有啥。python目前有以下几种数据类型:
1、Booleans[布尔型]
2、Numbers[数值型]
3、Strings[字符串型]
4、Bytes[字节]
5、Lists[列表]
6、Tuples[元组]
7、sets[集合]
8、Dictionaries[字典]
简单的点一下各数据类型是什么。
数字类型说白了就是由一堆阿拉伯数字组合成的,这些数据类型的个体(比如动物是一类统称,某条猫就是动物的一个个体)可以进行一些加减乘除等运算操作。
字符串说白了就是可以由任何字母数字中文韩文等等组合而成的一连串符号。字符串可以用来表述我们想要传递给别人的想法。
布尔型说白了就是代表真假的两个符号,比如True,Flase。一般用于条件判断语句中,前者表示真,后者表示假。
字节型是一种特殊的类型,实际开发中接触的不多,但是无处不在,我们前面提到的字符串,数字等类型都可以通过转换得到字节序列。我们可以简单的认为,字节型就是其它数据类型的另一种表达方式。
列表,元祖,集合,字典属于复合类型,就是由其它类型组合而成的一种数据类型,这几个类型稍微比较复杂一点,我们下一章节讲,这章主要讲简单的数据类型。
现在代入上面那张图,你能在宏观上理解,编程语言中的数据类型,到底是什么玩意了吗?
如果还不理解,没关系,我们接着往下走。如果理解了,不好意思,你还是要往下走,从实践中感受一下。
不好意思
闯一下关东
这一节我们直接上手代码,不管三七二十一,练练手再说。
真与假
在开发过程中,你会遇到很多需要判断条件的逻辑问题,这个时候我们往往通过真与假来判断条件是否成立。
先打开的你pycharm,输入以下代码并运行,如果不知道怎么新建代码和运行,请看前一章节,后面都不在累述此类问题。如果看代码有疑惑是很正常,看不懂没关系,关键是动起你的手照着敲起来。
注意不要把输出结果也复制了
#print是用来输出内容的,会输出括号中的内容
print("print(1)输出的是:1")
"""
boolean型初步认识,这里先解释一下>=表示大于等于,其他类推
"""
print("我们都知道1是比0大的,所以1>=0是:")
print (1 > 0)
print("我们都知道1是比0大的,所以1==0是:")
print (1 == 0)
print("我们都知道1是比0大的,所以1<=0是:")
print (1 < 0)
# if是条件判断语句,我们只需要简单的知道,if后面的语句返回的是真值,就会执行if里面的语句块
if 1 > 0:
print("得出结论:1是比0大的")
else:
print("难道1不比0大吗?")
if True:
print("如果条件判断是True,就是真")
if False:
print("因为条件判断是False,所以这条语句不会执行")
#type()是一个内置函数,即python自带的函数,用来获取对象的数据类型。
print(type(True))
print(type(False))
print(type(1>0))
上述代码运行后,输出以下结果:
print(1)输出的是:1
我们都知道1是比0大的,所以1>=0是:
True
我们都知道1是比0大的,所以1==0是:
False
我们都知道1是比0大的,所以1<=0是:
False
得出结论:1是比0大的
如果条件判断是True,就是真
代码解析:
1、上述print()函数是用来输出内容到控制台的,我们一般用它来输出一些内容,更多的时候是用来观察我们的程序是不是运行正常,比如我们假设a=1,所以print(a)应该输出1但是却输出了2,那么就说明a的值不是1,不是我们预期的那样。
2、通过1>=0,1==0,1<=0我们知道,>=,==,<=这些符号是比较符号,它们的运算结果是比较两个对象(数值或者字符串都行)的大小,得到的是布尔型。
3、if语句块通过布尔型决定执行哪个语句块,我们不关心if,我们只需要知道布尔型是用来做逻辑判断的。
4、最后我们通过type()函数知道了True,False是布尔型。那为什么1>0也是布尔型呢?因为1>0实际上是返回了True,所以它也是布尔型。
字符串
字符串在我们开发过程中,是一个逃不掉的数据类型,无论我们做什么功能开发都好,字符串都是不可或缺的一员。我们常用来输出一些内容,以供我们观察程序的运行情况。
everybody,动起你的手,敲出以下代码。
"""
我们常用字符串来表达一系列内容
"""
#字符串通常是被""或者''包裹。
print("字符串")
print('字符串')
print("我说:'不是吧'")
#字符串是str类型
print(type("字符串"))
#"""
字符串可以做很多骚操作,都是为了满足我们的日常需求,my_str是一个变量,我们不需要知道什么是变量,只需要知道,当把"我是"赋值给my_str的时候,我们对my_str操作其实就是对"我是"这个字符串操作
"""
my_str = "我是"
str_str = "字符串"
#获取我这个字
print(my_str[0])
#获取字这个字符在字符串中的位置
print(str_str.index("字"))
#获取我是字符串
print(my_str + str_str)
#获取我是这个字符串有多少个字符
print(len(my_str))
#获取字符串中的字符两个字
print(str_str[:-1])
print(str_str[:2])
print(str_str[:str_str.index("符")+1])
输出以下结果
字符串
字符串
我说:'不是吧'
我
0
我是字符串
2
字符
字符
字符
代码解析:
1、""和''是用来包裹字符串的,被包裹的内容就是字符串内容。如果我们喜欢用""来表示字符串,那么就一直保持这个习惯,不要混用""和'',这样代码风格不好。如果我们输出的字符串内容含有'',那么我们就用""包裹该字符串,反之亦然。
2、字符串在python中表达为str类型。
3、我们可以通过下标的方式来获取字符串中的某个字符。要记住,小标是从0开始算的,比如my_str[0]表示去my_str字符串的第一个字符。
4、python中的字符串类型是一个非常大的模块,里面封装好了很多函数,我们可以直接调用。很多函数等你需要用的时候,自然会知道,这里只教你怎么入门。index()函数是用来获取某个字符在字符串中的位置的。注意,是从0开始计算的。
5、+这个运算符,如果左右两边连接的任何一个操作对象是字符串类型,那么会返回一个将两个操作数连接一块的字符串。我们通常用这个方法来连接字符串。但是这个方法比较耗内存,作为入门,我们只需知道+可以用来连接字符串,但是不能滥用。会有专门的字符串章节讲述这些的。
6、len()函数可以用来获取字符串的长度。
7、如果我们想获取字符串中的一部分内容,可以用切片的方法。我们需要记住,字符串从左往右数,第一个字符的下标是0.从右往左数,第一个字符的下标是-1。切片用这样的格式表述[起始下标:终止下标],如果是从下标0开始计数,起始下标可以省略。所以str_str[:-1]表示,从0开始到最后一个字符。
数值类型
数值类型也是我们的一大基本类型,常用来做一些计算操作,比如加减乘除。细分一下,它有两种类型,分别是整型和浮点型。思考一下,我们日常用的数,是不是有带小数点和不带小数点两种?粗略的认为,整型就是不带小数点的,浮点型就是带小数点的。
什么时候用整型,什么时候用浮点型呢?当你需要更精确的表达运算结果是,用浮点型。反之用整型。
好了,动起手来。
"""
数值类型就是用来做加减乘除等运算的
"""
num_1 = 10
num_2 = 5
# 基本运算
print(num_1 + num_2)
print(num_1 - num_2)
print(num_1 / num_2)
print(num_1 * num_2)
print(type(num_1))
f_num_1 = 20.5
f_num_2 = 10.5
# 浮点型也可以做基本运算
print(f_num_1 + f_num_2)
print(type(f_num_1))
# 有时候也用数值来做条件判断
if 1:
print("1是真值")
if 0:
print("0不是真值")
if -1:
print("-1也是真值")
输出结果:
15
5
2.0
50
31.0
1是真值
-1也是真值
代码解析:
1、数值类型氛围浮点型和整型两种,浮点型是更精确的数值类型。
2、数值类型都可以用来做数学运算。
3、数值类型还可以用来做条件判断。记住:0是False,其他数字都是True。
数据类型的转换
对象虽然都有自己的数据类型,但是众多数据类型也不是相互独立的,他们是互通的。实际开发过程中,我们会遇到很多数据类型,学会分辨它们的数据类型和所属的操作是非常重要的,这样可以快速达到我们的编程目的。
快,敲代码。
"""
数据类型的混合操作
"""
str_obj = "我是字符串"
int_obj = 10
float_obj = 15.5
bool_obj = True
# 转换对象的数据类型
print(str(int_obj))
print(str(bool_obj))
# 字符串也可以转换成数值类型,但是只有字符串里面含有字符的都是数字才可以转换为数值类型
try:
#由于str_obj是汉字,所以无法转为数值类型
print(int(str_obj))
except ValueError as err:
print(err.args)
#由于字符串是"10"所以可以转换为数值类型
print(int("10"))
#当用+操作符操作字符串和整型的时候,会返回一个字符串
print(int(float_obj))
print(float(int_obj))
输出结果:
10
True
("invalid literal for int() with base 10: '我是字符串'",)
10
15
10.0
代码解析:
1、布尔型和数值类型都可以转换为字符串类型。
2、字符串类型能不能转换为布尔型,取决于字符串的字符是不是都是数字。
3、当整型和浮点型可以互相转换。浮点型转换为整型的时候,小数点后面的部分都将丢弃。整型转换为浮点型,小数点后面添加一个0。
特殊的对象---None
python中还有一个特殊的对象---None,它表示空的意思。它不属于任何数据类型,它就是空,在内存中有自己独特的位置,不代表任何对象。
来,最后一次敲代码了。
"""
None是空值的意思,它不属于任何数据类型
"""
str_obj = "我是字符串"
int_obj = 0
float_obj = 15.5
bool_obj = True
none_obj = None
print(str_obj == None)
print(int_obj == None)
print(float_obj == None)
print(bool_obj == None)
print(none_obj == None)
print(type(None))
# 但我们判断其他对象是不是空值的时候,应该用is,虽然==号看起来没问题,但是严格意义上来说,这种比较是错误的。因为None是空值,它没有任何数据,不应该比较它的值。
print(str_obj is None)
print(int_obj is None)
print(float_obj is None)
print(bool_obj is None)
print(none_obj is None)
#None也被认为是False
if None:
print("None被认为是True")
else:
print("None被认为是False")
输出结果:
False
False
False
False
True
False
False
False
False
True
None被认为是False
代码解析:
1、None就是空值,他不含有任何数据。
2、python中经常用None来做判断,判断某个对象是不是空值,分析该对象是否被正确执行。
3、判断一个对象是不是None要用is不要用==。因为None是一个在内中占据了位置的不包含数据的对象,无法比较它的值,只能判断是否为同一个对象。
好了,我要怎么加强练习?不然明天又还给你去了
好了,简单的数据类型先讲到这里。是不是还是很蒙蔽呢?没错,是的,因为你练习还不够。
不好意思
这里讲一下怎么练习,有针对性的练习,按照文章的章节顺序,比如练习bool型的时候,用你学到的知识,自己写一段跟我一样的代码来(不是照抄或者默写,而是按照我教的东西,自己写一段对应的知识点)。如果你能敲出来且不会很迷惑,那说明你掌握了。