Python爬虫基础——03-类型转换和运算符

2023-10-11 19:55:25 浏览数 (1)

2.6,类型转换

函数

说明

int(x)

将x转化成一个整数

float(x)

将x转化成一个浮点数

str(x)

将对象x转化成字符串

bool(x)

将对象x转化成布尔值

2.6.1转换成整型:

代码语言:javascript复制
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转换成浮点数:

代码语言:javascript复制
# 当我们在爬虫的时候大部分获取的都是字符串数据类型、

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转换成字符串:

代码语言:javascript复制
注意:'大部分的应用场景是将整型转换成字符串'

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转换成布尔:

代码语言:javascript复制
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

注意:混合运算时,优先级顺序为:** 高于 * / % // 高于 -为了便面歧义,建议用( )来处理运算符优先级。

并且,不同类型的数字在进行混合运算时,整数将会转换成浮点数进行运算

代码语言:javascript复制
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

代码语言:javascript复制
# 简单输出
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

代码语言:javascript复制
#  =
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类型的数据

代码语言:javascript复制
# == 恒等 一般情况下判断两边数据是否一致
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

代码语言:javascript复制
# 逻辑运算符 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的性能提升:

代码语言:javascript复制
# 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('你好,世界')    # 输出失败

0 人点赞