2.6,类型转换
函数 | 说明 |
int(x) | 将x转化成一个整数 |
float(x) | 将x转化成一个浮点数 |
str(x) | 将对象x转化成字符串 |
bool(x) | 将对象x转化成布尔值 |
2.6.1转换成整型:
1---1
# 字符串(str)---转换整型(int)
a = '123'
print(type(a)) # 输出结果为---<class 'str'>
b = int(a) # 将字符串转换成整型
print(type(b)) # 输出结果为---<class 'int'>
# 注意:123.456和12ab字符串都包含了非法字符,不能被转换成整数,会报错
# 以下 如果字符串中包含了非法的字符 则报错
a = '1.23' # 或者a = '12ab'都会报错
print(type(a))
b = int(a)
print(b)
print(type(b))
2---2
# 浮点型(float)---整型(int)
a = 1.3
print(type(a)) # 输出结果为---<class 'float'>
# 如果我们将float转化为整数 那么会返回的是小数点前面的数据
b = int(a)
print(b) # 输出结果为1因为转换成int之后输出的是小数点前面的数字
print(type(b)) # 输出结果为---<class 'int'>
3---3
# 布尔型(boolean)---整型(int)
a = True
print(type(a)) # 输出结果为<class 'bool'>
b = int(a)
print(b) #当a = True输出结果为1 当a = Flase输出结果为0
print(type(b)) #输出结果为<class 'int'>
2.6.2转换成浮点数:
# 当我们在爬虫的时候大部分获取的都是字符串数据类型、
1---1
# 字符串(str)---浮点数(float)
a = '12.34'
print(type(a)) # 输出类型--<class 'str'>
b = float(a)
print(b) # 输出结果为12.34
print(type(b)) # 输出结果为--<class 'float'>
2----2
# 整型(int)---浮点型(float)
a = 666
print(type(a)) # 输出结果为---<class 'int'>
b = float(a)
print(b) # 输出结果为 666.0 已经转换
print(type(b)) # 输出结果为---<class 'float'>
2.6.3转换成字符串:
注意:'大部分的应用场景是将整型转换成字符串'
1---1
# 整型(int)---字符串(str)
a = 80
print(type(a)) # 输出结果为---<class 'int'>
b = str(a)
print(b) # 输出结果为80
print(type(b)) # 输出结果为---<class 'str'>
2---2
# 浮点数(float)---字符串(str)
a = 1.2
print(type(a)) # 输出结果为---<class 'float'>
b = str(a)
print(b) # 输出结果为1.2
print(type(b)) # 输出结果为---<class 'str'>
3---3
# 布尔(bool)---字符串(str)
a = True
print(type(a)) # 输出结果为---<class 'bool'>
b = str(a)
print(b) # 输出结果为True不是返回值1
print(type(b)) # 输出结果为---<class 'str'>已经成功转换
2.6.4转换成布尔:
1---1
# 整型(int)---布尔(bool)
a = 1 # 当a=任何正数结果均为True
print(type(a)) # 输出结果为---<class 'int'>
b = bool(a)
print(b) # 输出为True
print(type(b)) # 输出结果为---<class 'bool'>
a = -1 # 当a=任何负数依然为True
print(type(a))
b = bool(a)
print(b) # 输出结果为True
print(type(b))
a = 0 # 当a等于0时输出结果为为False
print(type(a))
b = bool(a)
print(b) # 输出结果为False
print(type(b))
'所以综上所述可得 当int整型除了0时等于False其他不管正负转换输出结果依然时True'
2---2
# 浮点数(float)---布尔(bool)
a = 1.0 # 当a = -1.0输出结果依然时True
print(type(a)) # 输出结果为---<class 'float'>
b = bool(a)
print(b) # 输出结果为True
print(type(b)) # 输出结果为---<class 'bool'>
3---3
# 字符串(str)---布尔(bool)
a = '江户川柯南'
print(type(a)) # 输出结果为---<class 'str'>
b = bool(a)
print(b) # 输出结果为True
print(type(b)) # 输出结果为---<class 'bool'>
'所以综上所述只要字符串有内容那么强制类型转换为bool的时候,那么就返回True.所以''没内容时那就返回False'
4---4
# 列表(list)---布尔(bool)
a = ['琴酒','伏特加','基安蒂'] #当a=[]为False
print(type(a)) # 输出结果为---<class 'list'>
b = bool(a)
print(b) # 输出结果为True
print(type(b)) # 输出结果为---<class 'bool'>
'所以综上所述当列表里面只要有内容时全部都是True当为[]空时返回值False'
5---5
# 元组(tuple)---布尔(bool)
a = ('黑羽快斗','中森晴子')
print(type(a)) # 输出结果为---<class 'tuple'>
b = bool(a)
print(b) # 输出结果为True
print(type(b)) # 输出结果为---<class 'bool'>
'所以综上所述当元组里面只要有内容时全部都是True当为()空时返回值False'
6---6
# 字典(set)---布尔(bool)
a = {'name','冷影玺'}
print(type(a)) # 输出结果为---<class 'set'>
b = bool(a)
print(b) # 输出结果为True
print(type(b)) # 输出结果为---<class 'bool'>
'所以综上所述当字典里面只要有内容时全部都是True当为{}空时返回值False'
7---7
# 什么情况下是Flase
print(bool(0))
print(bool(0.0))
print(bool(''))
print(bool(""))
print(bool([]))
print(bool(()))
print(bool({}))
2.7,运算符
2.7.1算数运算符:
下面以a=10,b=20为例计算
运算符 | 描述 | 实列 |
+ | 加 | 两个对象相加a+b输出结果30 |
- | 减 | 两个对象相减a-b输出结果-10 |
* | 乘 | 两个相乘或是返回一个被重复若干次的字符串a*b输出结果200 |
/ | 除 | b / a 输出结果等于2 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 指数 | a ** b为10的20次方 |
( ) | 小括号 | 提高运算优先级:比如(1 + 2) * 3 |
注意:混合运算时,优先级顺序为:** 高于 * / % // 高于 + -为了便面歧义,建议用( )来处理运算符优先级。
并且,不同类型的数字在进行混合运算时,整数将会转换成浮点数进行运算
a = 3
b = 2
# 加
print(a + b) #输出 5
# 减
print(a -b) #输出 1
# 乘
print(a * b) #输出 6
# 除
print(a / b) #输出 1.5
# 取整数
print(a // b) #输出 1
# 取余数
print(a % b) #输出 1
# 指数
print(a ** b) #输出 9
# 小括号()
print((a + b) * b) #输出 10
# 扩展
# 字符串相加为拼接
a = '123'
b = '456'
print(a + b) # 输出结果123456
# 注意如果两端相加减必须都为整型或者字符串,但是可以使用强制转换进行执行
# a = '123'
# b = 456
# print(a + str(b))
# 字符串还可以进行相乘输出
a = '工藤新一'
print(a * 3) # 输出结果 工藤新一 工藤新一 工藤新一
2.7.2赋值运算符:
运算符 | 描述 | 实例 |
= | 赋值运算符 | 把 = 号右边的结果赋给左边,如num=1 + 2 * 3,结果num的值为 7 |
# 简单输出
a = 10
print(a)
# 同时为多个变量赋值
b = c = 20
print(b)
print(c)
# 多个变量赋值用都逗号隔开
d,e,f = 1,2,3
print(d)
print(e)
print(f)
2.7.3复合赋值运算符:
运算符 | 描述 | 实例 |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
//= | 取整数赋值运算符 | c //= a 等效于 c = c // a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c ** = a 等效于 c = c ** a |
# +=
a = 1
# a在+上一个2打印结果
a += 2 # 其方式等同于a = a + 2
print(a)
# *=
b = 2
# b在乘以3则就可以写成
b *= 3
print(b)
# -=
c = 4
# c在减去2
c -= 2
print(c)
# /=
d = 3
# d在除以2
d /= 2
print(d)
# //=
e = 3
# e整除一个2
e //= 2
print(e)
# % 名字叫 取模 取余 模余 %=
f = 5
# f取余一个2余1
f %= 2
print(f)
# **=
g = 5
# 求一下g的三次幂
g **= 3
print(g)
2.7.4比较运算符:
以下变假设:变量a=10,变量b=20
运算符 | 描述 | 实例 |
== | 等于:比较对象是否相等 | (a == b) 返回False |
!= | 不等于:比较两个对象是否不相等 | (a != b) 返回True |
> | 大于:返回x是否大于y | (a > b) 返回False |
>= | 大于等于:返回x是否大于等于y | (a >= b) 返回False |
< | 小于: 返回x是否小于y | (a < b) 返回True |
<= | 小于等于:返回x是否小于等y | (a <= b) 返回True |
比较运算符返回的都是布尔bool类型的数据
# == 恒等 一般情况下判断两边数据是否一致
a = 10
b = 20 # 输出结果False。如果b=10则输出结果True
print(a == b)
# != 不等 一般情况下判断两边是否不一致
a = 10
b = 20 # 输出结果是True 如果b=10输出结果则是False
print(a != b)
# >
print(10 > 20) # 不是所以输出False
print(10 > 5) # 是 所以输出True
# >=
print(10 >= 10) # 是 所以输出True
print(10 >= 20) # 不是所以输出False
# <
print(10 < 10) # 不是所以输出False
print(10 < 20) # 是 所以输出True
# <=
print(10 <= 10) # 是 所以输出True
print(10 <= 2) # 不是所以输出False
2.7.5逻辑运算符:
运算符 | 逻辑表达式 | 描述 | 实例 |
and | x and y | 只要有一个运算数是False,结果就是False。只有所有的运算数都为True时,结果才是True。做取值运算时,去第一个为False的值,如果所有的值都为True取最后一个值。 | True and True and False 结果为False --- True and True and True 结果为True。 |
or | x or y | 只要有一个运算符是True,结果就是True。只要所有的运算数都为False时,结果才是False。做取值运算时,取第一个为True的值,如果所有的值为False取最后一个值。 | False or False or True 结果为True。--- False or False or False 结果为False。 |
not | not x | 布尔"非" - 如果x为True,返回False,如果x为False返回True。 | not true --- not False |
# 逻辑运算符 and=与 or=或 not=非
# and 与
# and两边的数据 必须都是true的时候才会返回true,只要有一方为false那么就返回false
print(10 > 20 and 10 > 15) # false and false
print(10 > 15 and 10 > 5) # false and true
print(10 > 5 and 10 > 15) # true and false
print(10 > 5 and 10 > 6) # true and true 所有只有这个输出时true
# or 或
# or两端只要有一端是true则就输出true
print(10 > 20 or 10 > 30) # false or false 输出false其余均输出true
print(10 > 5 or 10 > 20) # true or false
print(10 > 20 or 10 > 5) # false or true
print(10 > 5 or 10 > 6) # true or true 输出失败
# not 非 也就是取反值
print(not True) # 输出为false
print(not False) # 输出结果true
print(not 10 > 20) # 输出结果为true
print(not 10 > 5) # 输出结果为false
逻辑运算符and和or的性能提升:
# and的性能优化当前面是false那么后面的true则就不会执行
a = 88
a > 66 and print('hello world') # 正常输出
a > 99 and print('hello world') # 输出失败
# or的性能优化当前面是true不会执行,前面是false正常执行
a = 88
a > 99 or print('你好,世界') # 正常输出
a > 66 or print('你好,世界') # 输出失败