Python基础(二)
1.python变量
1.1整型变量
变量的值是随时可以变化的,它的值等于最后一次给它赋值的数据
变量通常由字母、数字和下划线组成,但是千万记得不能以数字打头
>>> x = 3 //声明整型变量并赋值为3
>>> print(x) //打印输出整型变量x
3 //输出显示
>>> 5201314love = 10
SyntaxError: invalid syntax //声明变量以数字开头出错,报错信息显示非法语法
>>> 好日子 = 5201314 //python支持中文变量名
>>> print(好日子) //打印输出变量内容
5201314
1.2字符串变量
>>> print('I love China.')
I love China.
>>> print("I love China.")
I love China. //上面的字符串一个是单引号一个是双引号看似两者之间没有区别,但是请往下看
>>>print('Let's go!')
SyntaxError: invalid syntax //b报错了,原因是let的所有格形式和单引号重复啦!所以,大家看出两者之间的区别了吗?所以上面正确的表达方式是?
>>>print("Let's go!")
Let's go! //成功,所以大家在日常写程序的时候要前往注意二者的区别哦!
>>>
1.3原始字符串
转义字符
转义字符有时候会带来一些麻烦,例如我要表示一个包含 Windows 路径D:\Program Files\Python 3.8\python.exe这样的字符串,在 Python 程序中直接这样写肯定是不行的,不管是普通字符串还是长字符串。因为\的特殊性,我们需要对字符串中的每个\都进行转义,也就是写成D:\Program Files\Python 3.8\python.exe这种形式才行。
这种写法需要特别谨慎,稍有疏忽就会出错。为了解决转义字符的问题,Python 支持原始字符串。在原始字符串中,\不会被当作转义字符,所有的内容都保持“原汁原味”的样子。
在普通字符串或者长字符串的开头加上r前缀,就变成了原始字符串,具体格式为:
>>> print("D:\three\two\one\now")
D: hree wo\one
ow // \t代表tab \n换行 对应代码分别显示
>>> print("D:\\three\\two\\one\\now")
D:\three\two\one\now //对“\”进行转义
>>> print(r"D:\three\two\one\now") // 字符串最前面加上r代表这个字符串是一个原始字符串,即
D:\three\two\one\now
>>>
1.4长字符串
所谓长字符串,就是可以直接换行(不用加反斜杠\)书写的字符串。
Python 长字符串由三个双引号"""或者三个单引号’''包围,语法格式如下:
>>> poetry = """从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
书法作品
书法作品
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
"""
>>> print(poetry)
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
书法作品
书法作品
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
>>>
在长字符串中放置单引号或者双引号不会导致解析错误。
如果长字符串没有赋值给任何变量,那么这个长字符串就不会起到任何作用,和一段普通的文本无异,相当于被注释掉了。
注意: 此时 Python 解释器并不会忽略长字符串,也会按照语法解析,只是长字符串起不到实际作用而已。
当程序中有大段文本内容需要定义成字符串时,优先推荐使用长字符串形式,因为这种形式非常强大,可以在字符串中放置任何内容,包括单引号和双引号。
1.5字符串的加法和乘法
1.5.1字符串的加法
字符串的加法相当于字符串的拼接,如下列
>>> '520' + '1314'
'5201314'
>>>
1.5.2字符串的乘法
字符串的乘法相当于字符串的的重复次数,如下列
>>> print("爱你三千遍!\n" * 3000)
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
爱你三千遍!
......
1.6布尔类型【通常用于条件判断中】
布尔值的取值只有真或者假 即 true/false
以下是值为false的几种情况
- 定义为False的对象
None 和 False
- 值为0的数字类型
0、0.0、0j【复数】、Decimal(0)、Fraction(0,1)【分子为0分母为1的有理数】
- 空的序列和集合
‘’ 、()、[]、{}、set()、range(0)
简单的运算,如下代码
>>> 1 == True
True
>>> 0 == False
True
>>> True + False
1
>>> True - False
1
>>> True * False
0
>>> True / False //除数不能为零
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
True / False
ZeroDivisionError: division by zero
在以上的代码中我们不难看出布尔类型就是特殊的整数类型
2.数字之间的运算
数字之间的运算如下图
首先加减乘除大家应该很清楚了,我们先来看地板除(//),上代码
地板除: 确保两个数相除的结果是一个整数,如果不是整数就向下取整【去比目标结果小的最大整数】。
>>> 3 / 2
1.5
>>> 3 // 2 //1.5向下取整,即为1
1
>>> -3 // 2 //-1.5向下取整,即为-2 -1.5>-2
-2
>>>
由此可以得出一个公式 x == (x // y)*y + (x % y)
divmod: 同时得出两数的地板除和余数,上代码
>>> divmod(5, 2)
(2, 1) //5 // 2 = 2 5 % 2=1`
>>>
abs(x): 取到值x的绝对值内容,上代码
>>> x = -5201314
>>> abs(x) //对x取绝对值
5201314
>>> y = -3.1415926
>>> abs(y) //对y取绝对值
3.1415926
>>> a = 1 + 2j //我们知道复数是没有绝对值的,对复数取绝对值得到的值就是其 ==模==
>>> abs(a)
2.23606797749979 //根号下5 = 2.23606797749979
>>>
int(): 如果内置的数为整数则结果为本身,如果内置为浮点数,则默认截断小数部分,只留下整数部分,上代码
>>> int('520') //将字符串转化为整数
520
>>> int(3.14) //截掉小数部分
3
>>> int(9.9999) //截掉小数部分
9
>>>
float(): 如果内置的数为浮点数或者字符直接转化为本身,如果内置的数为整数,则结果默认在整数后面加上.0,上代码
>>> float('3.14')
3.14
>>> float(3.12) //内置数为浮点数,则结果为本身
3.12
>>> float(5301314)
5301314.0 //内置数为整数,则默认加.0
>>>
pow():、** 计算x的y次方,两个运算实现的结果一致,上代码
>>> pow(2, 3) //2的3次方
8
>>> 2 ** 3 //2的3次方
8
>>> pow(2, -3) //2的-3次方
0.125
>>> 2 ** -3
0.125
>>> pow(2, 3, 3) //当pow有三个参数时代表,第一个数的第二个数的次方的结果与第三个数取余数
2
>>> pow(2, 3, 5) //2的3次方=8 取余5 = 3
3
>>>
3.逻辑运算符
python一共有三个逻辑运算符,如下图:
具体实例,如下代码
>>> 3 < 4 and 4 < 5 //有假则假
True
>>> 3 > 4 and 4 < 5
False
>>> 3 < 4 or 4 < 5 //有真则真
True
>>> 3 < 4 or 4 > 5
True
>>> 3 > 4 or 4 > 5
False
>>> not True //取相反布尔值
False
>>> not 1
False
>>> not 0
True
短路逻辑的核心思想: 从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。即直接将影响结果的数据显示出来即可。实例如下
>>> 3 and 4 //3的真值测试结果为true,则看and后的值的真假情况,4为真值,同真则真则直接返回and后面的值
4
>>> 4 or 5 //4的真值测试结果为true,则对于or运算逻辑,整体的值为真值,所以之间返回or的第一个运算数
4
>>> "hhh" and "love" //字符串hhh为真值,则看and后面的字符串love也为真值,则直接将and后面的真值返回
'love'
>>> "hhh" or "love" //字符串hhh为真值,后面运算逻辑为or则直返回or前面的数据
'hhh'
>>> "love" and 250 //同理即逻辑运算符为and时,两个都查看,若都为正确则返回后面的数据,若第一个就为假,则返回第一个数据,若第二个为假,则返回第二个数据
250
>>> "love" or 250 //同理逻辑运算符为or时,若第一个数据为真,则直接返回整个运算结果的最终结果,若两个同时为假则返回第一个数据
'love'
逻辑运算符优先级,如下图: