第一周--第二节:基本概念和基本数据类型
目录:基本概念 数值类型 字符串 数值类型模块
基本概念:1,变量的基本概念 2,关键词 3,引用 4,输入和输出
变量的基本概念:是一个可以变的值,主要是帮我们去接受客户计算的结果,当用户把一个值输入进来,我们就可以用变量去接收。
变量的命名规则和规范:基本常见类型为:英文字母+下划线+数字去组成。
例1:a=59回车,在打出type(a) 这里面type的意思就是查看变量里面的值到底是什么类型的,然后回车,这时就会给我们反馈一个<class 'int' >,int在这里面是整数的关键词,关键词不可以作为变量使用,那么也就是说上面打出的59是一个整数,当我们要去表示一个整数的时候我们可以用int—a=59,这样写的好处就是别人第一眼看这个的时候就知道你写的是什么东西,所以当我们写变量的时候就可以用英文数字,下划线,数字来组成都可以,但是不可以单独使用数字来当变量,因为单独的数字本身就是一个值。
第二小点:见名知意:就是当看到你的变量名的时候就知道你大概存的是什么类型的数据。
第二点:关键词:比如说先打出一个b=2.2,那么2.2是什么意思呢,就可以用到我们上面学的type去查看一下,type(b),会出现class'float'就是浮点型,因为有一个小数点,那么我们想把这个小数转换成一个整数怎么做呢,我们可以用整数的关键词int来转换,int(b)可以得到一个2,但是如果我们想要起变量名为int,能不能成功呢?例如int=1然后int(b)结果就会出现一个乱码,所以这是行不通的,因为本身int就是一个关键词,把它变成一个变量是不行的,每一个关键词在我们的系统里都是定义好的,所以切记关键词不可以做为变量名使用,(如果用关键词当变量,关掉python在打开就可以)那么系统中有哪些已经定义好的关键词呢?我们可以输入import keyword回车在输入keyword.kwlist就会出现很多关键词,好奇的可以去看看,(import在里面的意思就是导入)
第三点:引用:在python数据和变量保存是分开的,在变量中记录数据的地址就叫做引用,这时我们可以用id()查看保存的地址,举个例子
a=10 a=11
id(a) id(a)
140704461739328 140704461739360
通过上面的例子就就可以这么理解,当系统正在运行时有一个10的值复指给a,然后又有一个11的值也要复指给a,那么就会引用b,自动释放a,所以我们当前在去访问a的时候出现的一定是11的地址,如果我在回去的话
a=10
id(a)
140704461739328
这里就涉及到了一个知识点就是内存池,内存池就是:-5到256之间已经提前把这一堆整数在内存地址有一个固定存放地址。那么如果超出这个范围会怎么样呢?我们试一下
a=300 b=300
id(a) id(b)
25451215645 25456485413
那么为什么两次的值都一样但是保存的地址不一样呢,这就是因为我们有一个-5到256之间的一个内存池。
第四点:输入和输出:输入用input,输出用print。(当我们写代码的时候所有符号一定要用英文形式的符号,不然会报错!!!)
1输出:我们举个例子
print(123) print(123,end='') print(123,end='********')
print(123) print(123,end='') print(123,end='---------')
print(123) print(123,end='') print(123,end='=====')
print(123) print(123)
这时候就会在python打出123的数字,那么如果我们不想去换行怎么办,我们就可以在后面加一个,end,如果想全部换行就在后面除了最后一个都加上,end就可以达到全部换行.
那么后面的引号有什么用的,其实引号存在的意义就是我们可以在里面加上符号根据我们的喜好链接在一起.
2.输入:我们举个例子
input('请填写你的名字') name=input('请填写你的名字')
那么当别人给你输出了以后你怎么接收呢?很简单我们在input前面加一个name=,其他变量也可以,意思就是你需要前面加个变量来存放你输入的内容。(字符串就是用引号引起来的数据类型)
数值类型:首先让我现认识一下数值类型有哪几种
1.整数int:1,2,3......这种都是属于整数类型,用int表示
例子:a=10,用我们上面学的type查询就是type(a),他一定会出现<class'int'>这就代表他是整数类型。
2.浮点数float:2.2,1.1,3.3........这种带小数点的都属于浮点数类型,用float表示
例子:b=2.2,type查询type(b),给出的结果就是<class'float'>这就代表是浮点数类型。
3.布尔型bool:true,false,布尔型里就这两种,通常用于判断正确,true代表判断条件为真它的值就是1,false代表判断为假它的值就是0,为什么说数值类型会出现英文,因为他们两个本身就是有数值的
例子:1==1他是真的,因为1就等一1,所以他是true,它的数值就是1,那么1==2是假的,它就是false它的数值就是0,同时布尔型只有两种结果要么是true要么是false,不会出现又对又错的。
4.复数complex:c=1+2j,这种类型我们不常用,常用的只有上面三种,但是我们也要知道数值类型有四种而不是三种。
数据类型计算:数据类型计算有我们常见的加,减,乘,除,以及要新学到的整除,取余,幂运算。
加法:就是我们熟知的+号,例如:1+1=2
减法:也是我们熟知的—号,例如:1-1=0
乘法:用*符号来表示乘法,例如:2*2=4
除法:用/符号来表示除法,例如:4/2=2.0
接下来就是要新学到的计算方法
整除:不同于以往的除法,以往的除法会出现小数点,但是整除就不会,正常去除,出现小数点后面的数会整除,而且是向下整除,用//符号来表示整除,例如9//6=1.
取余:余数就是能整除的整除,剩下的那个数叫做余数,用%符号来表示取余。例如:7%3=1,意思就是6能够整除3,那就用7-6=1。
幂运算:就是一个数值的多少次方也就叫做幂运算,用**符号来表示幂运算。例如:2**10=1024。
字符串
字符串的定义:
字符串有三种定义方式,分别为'单引号',“双引号”,'''三引号''',其中三引号可以换行,而其他两种不可以换行。
双引号:在使用过程中,双引号用于在字符串中写字符串,什么意思呢,举个例子看一下
'ab'c'ab',可以看到这个字符串中里面有一个’c'正常运行的时候是先运行前面两个单引号里面,然后是后面两个单引号里面的,那么中间空出来的c再去运行就会出现语法错误。
那么这个时候我们就用到了双引号" ",这时候就可以这么写"ab'c'ab"这样就可以正常运行了,(注:单引号,双引号必须成对成对出现!)
三引号:我们上面写的字符串都是单行的,那么如果想写多行的怎么办呢?我们就用到了三引号''' ''',例如:
st2='''hello
world
moran'''
这时候我们就可以把它引回去,所以三引号也是多行字符串。
字符串的加和乘:
我们举个例子来看:
1+1=2 '1'+'1'='11'
通过这个例子来看,我们知道加了字符串的1不同于正常的加法,而是属于一种拼接,把两个'1'拼接到一起形成了'11',在字符串里+不能称作是加号,而是被称作拼接符,拼接符的意思是把两个值拼接成一个字符串里的内容了。
那么1+'11' 能加吗?答案当然是不能的,不同类型之间不能计算。
那么'abcd'*4可以去乘吗?答案当然是可以的,结果就是abcdabcdabcdabcd,相当于去变出多个abcd。
字符串的拼接:
字符串的拼接主要分三种,1格式化,2join方法,3format方法。
举个例子:首先我们写上值
year='2020' month='06' day='16'
1.格式化:'%s年%s月%s日'%(year,month,day) 首先我们现写上一个引号代表字符串,然后在里面写上三个%s,在这里面%s代表一个占位符,那么我们这里面一共有三个占位符,所以需要传三个值,在后面打上一个括号里面year,month,day,这样做是让year传给第一个占位符,让month传给第二个占位符,让day传给第三个占位符,然后在回车就OK啦。
2.join方法: ' — '.join([year,month,day]) 首先我们打一个字符串,然后在里面选一个随便打一个杠去连接,然后用 . join这个方法,然后括号,记住我们要取值必须要给一个中括号,然后在里面打上变量。然后在回车就OK啦,但是我们join里面只能传一个值,如果你传两个值点击回车,他就无法运行,但是我们又有多个变量需要同时拼接,那我把它放进一个列表里就是一个了,但是这种拼接方式跟上面是不是有一点差别?如果说你需要把所有的值用一个统一的方式去拼接这种肯定是最方便的。
3.format方法:'{}年{}月{}日'.format(year,month,day) 同样也是要先打一个字符串,然后在字符串里打上以三个大括号代表的占位符,每一个大括号后面添加年,月,日,在打上 .format这就是方法,在后面打上括号,里面添加同样的三个变量,回车就OK啦,然而这个方法还可以调整传位置,咱们刚才括号里写的是(year,month,day)这种排序来看就是year是0,month是1,day是2,以这种顺序来看,我们要想把day放在第一个占位符里显示,就把2填在第一个占位符里,例如这样'{2}{1}{3}',这样来调,如果我们不需要换位置,占位符里就不需要填,
4.这一种方法是3.5 3.6版本更新之后的一种方法,相比前三种的方法更为简洁方便, f'{year}年{month}月{day}日' 然后回车就可以了,这种就是直接把变量名写在大括号里,这种方法不用.上方法,也不用调整顺序,就可以直接拼接,
注:以上所有拼接方法选择一种学会就可以啦,不用全部学会。
字符串格式化:
我们随便打一个字符串
字符串格式化: '%s'%123 然后回车就可以把123变成一个字符串,
整数格式化:'%d'%12.333 然后回车就可以把浮点数变成整数。
那么我们在前面加个数字8就变成'%8d'%12.333,那么这个应该是多少呢,首先我们要想d代表整数,先把12.333变成12这个整数,然后8的意思就是整个字符串的长度是8.那么12是2位数,还差6位数就会在字符串前面用空格补齐所以就补6个空格。
那么如果是这种情况呢,'%3d'%12345.3333 那么它应该是什么呢,上面说过d代表的是整数,所以它首先变成12345,d前面是个三,咱们的数字有五个,所以记住当前面那个数字小于咱们的长度,系统就不会补齐了。
浮点数格式化:'%f'%12,这个字符串的结果是什么呢,首先f的意思就是浮点数,我们回车出现的就是12.000000,小数点后面会出现6个0这是系统默认,我们并没有去调整,如果我们想要调整小数点后面位数的话,就跟上面一样在f前面加数字,你想留几位就加多少,另外还要在百分号后面加小数点,因为当前我们是小数点。
那么如果我们想把这个字符串变成变成一个小数我们就可以用float(小数的意思)举个例子,a='%.2f'%12.33,我们把它变成小数,在前面加一个变量a用来接收它:a=float(s),回车,这样就OK了。那么float可以转换abcd吗??答案当然是不可以的,转换是有条件的,假如你想用float转化小数那么一定要确保你里面的数是正常的,一定要是小数,你要是用想转化成整数,那么就要用int去转化它。
八进制输出:八进制输出用的字母表示方法是o(全部英文都是小写)那么字符串格式就是'%o'%27这里面得出的结果就是先用27除以8最多能除3次所以它的十位数就是3,那么最大的数是24所以就用27-24等于3,就是个位的数,所以它最终得出的结果就是33
十六进制输出:它的字母是x,其他的其实跟八进制输出基本一样的算法,我就不多说了,但是如果出现这样的呢,例如:'%x'%15,它比16小应该怎么办呢,很简单,在最开始数字排列的时候都是0123456789,那么到了十位数排不下了怎么办,就会用到abcdef来解决,那么f就是排在第15位的,所以f就是它的结果,
原样输出对象:它的字母是r,它能看出你传进来的是一个是什么数据,假如你传的是字符串,他会用双引号给你标起来。
数值类型模块
1.浮点数高精度计算:我们在正常的计算当中例如2.2-2,肯定是得0.2对吧,但是在交互模式种,你打出2.2-2会出现0.200000000018,这就是不精准计算,如何做到精准计算呢,这里我们就用到decimal模块来做浮点数的精确计算,我们举个例子
import decimal b=import.decimal('2')回车
a=import .decimal('2.2')回车 b=2
a=2.2
然后再用a-b=0.2
这就是用decimal模板做的浮点数的精确计算。
2.数学(math)模块:math模块有常见的数学函数,例如pi(圆周率),ceil(向上取整),floor(向下取整),,,,以及很多
import math
math.pi
3.1415926......
好了,第一章的内容结束了,让我们感谢一下现在努力上进的自己!