Python基础语法(2) --基本数据类型之间的转换

Python基础语法

Python作为一种高级编程语言,自其诞生以来,因其简洁的语法、丰富的库支持和广泛的应用领域而备受欢迎。Python的基础语法有变量、注释、基本数据类型、格式化字符串、运算符、选择循环结构、命名空间和作用域的方面。

基础数据类型转换

上一篇中我们介绍了,能够直接处理的数据类型有:int 整型 、float 浮点型 、str 字符串 、bool类型

int整型转换

int整型可以转化为浮点型、字符串、bool类型吗?用什么方式来转化呢?

a = 1
b = 0
c = -1
d = -0

# int 转 float  >>>直接以你要转换的目标类型来输出
print(float(a),float(b),float(c),float(d))

    #>>>那么此时,我要是想直接将这个整数型a转化为保留两个小数点的浮点型呢
print('%.2f' %a)  # %f:a已经被强制转换为浮点型

# int 转 str
print(str(a),str(b),str(c),str(d)) #输出结果看似没变,实则数字已经转化成了字符

# int 转 bool  非0即True 
print(bool(a),bool(b),bool(c),bool(d))

---------------------------------
整段输出结果:
1.0 0.0 -1.0 0.0
1.00
1 0 -1 0
True False True False

float浮点型转换

float浮点型的转换与int整型是否差不多呢?

e = 1.1
f = 1.0
g = 0.0
h = -0.0
i = -2.1

# float 转 int   >>>就取小数点之前的数字,因为int是整数型取整
print(float(e),float(f),float(g),float(h),float(i))
    #>>>是否可以像int转换float时一样强制取整呢
print('%d' %i)  #结果显然是可以的,举一反三

# float 转 str
print(str(e),str(f),str(g),str(h),str(i))  #结果也从数字转化为了字符型

# float 转 bool   非0即True
print(bool(e),bool(f),bool(g),bool(h),bool(i))

-----------------------------
整段输出结果:
1.1 1.0 0.0 -0.0 -2.1
-2
1.1 1.0 0.0 -0.0 -2.1
True True False False True

str字符型转换

str 转 int

好,我们依旧尝试一下上述两个转化的方法来试试对str类型的转换:

试试str字符型转化为int整型:

j = "1"
k = '1.0'

# str 转 int
print(int(j))
print(int(k))

--------------------------
结果显示:
Traceback (most recent call last):
  File "D:\pythoncharm\study\str.py", line 6, in <module>
    print(int(k))
ValueError: invalid literal for int() with base 10: '1.0'
1

#错误表示:表示你尝试将一个包含小数点的字符串('1.0')转换为整数(int),但整数类型不支持小数点。

由此可见,str字符型不能将float样式的字符转化为int型!!那么字符字面量样式可以转换吗?

k = '1.0'
m = "True"

#str 转 int
print(int(j))
print(int(m))


---------------------------------------
输出结果:
Traceback (most recent call last):
  File "D:\pythoncharm\study\str.py", line 6, in <module>
    print(int(m))
ValueError: invalid literal for int() with base 10: 'True'

#表示你尝试将一个字符串 'True' 转换为整数(int),但 'True' 并不是一个有效的整数字面量。

没错,str也不能直接将字符字面量样式转化为int型!!

那么综上所知,str转int要求为:

#只有数值型(整数)的字符串才能转换为int

str 转 float

str转int方式发生了变化,那么转换成float类型呢?

同样我们先尝试数值型:

# str 转 float
j = "1"
k = '1.0'
l = '1.2'
o = "0"

print(float(j))
print(float(k))
print(float(l))
print(float(o))


--------------------
输出结果:
1.0
1.0
1.2
0.0

从上述代码中,我们可得到的结论:数值型的字符串都可以转化为float。再试试字符字面量样式可以转换吗?

m = "True"
n = "False"

print(float(m))
print(float(n))


---------------------------
输出结果:
Traceback (most recent call last):
  File "D:\pythoncharm\study\str.py", line 4, in <module>
    print(float(m))
ValueError: could not convert string to float: 'True'

#表示你尝试将一个字符串 'True' 转换为浮点数(float),但 'True' 并不是一个有效的浮点数表示。
由此可知,str也不能将字符字面量样式的变量转化为float。

综上所述,str转float要求:

# 只有数值型的字符串才能转换为float

str 转 bool

我们知道bool类型在python中是判断真假,输出"True"或者"False",真假也分别与数值1,0对应相关,那么对于str字符型我们转换成bool时是如何体现的呢?

j = "1"
k = '1.0'
l = '1.2'
m = "True"
n = "False"
o = "0"

#str 转 bool
print(bool(j))
print(bool(k))
print(bool(l))
print(bool(m))
print(bool(n))
print(bool(o))

-----------------------
输出结果: 
True
True
True
True
True
True

上述编码可以发现:无论是整型数值样式,浮点型数值样式又或字符字面量型样式的输出结果都为True,难道str转换成bool只能输出True吗?我们来介绍两个新的小玩意儿:

complex类型

在Python中,complex 类型用于表示复数。复数是数学中的一个概念,由实部和虚部组成,通常表示为 a + bi 的形式,其中 a 是实部,b 是虚部,而 i 是虚数单位,满足 i^2 = -1

# complex
a = 1 + 2j

print(a.real) #.real实数;.imag虚数
print(a.imag)
print(type(a))

-----------------------
输出结果:
1.0
2.0
<class 'complex'>
None类型

在Python中,None 是一个特殊的类型,它代表空值或“无”的概念。None 是 Python 的一个内置常量,而不是一个关键字。它经常被用作函数的默认返回值,或者表示某个变量或对象不存在或尚未被赋予任何值。

# None 空
# 空字符 与空格" "不一样
#空字符体现:print('')

b = None
print(b, type(b))

------------------
输出结果:
None <class 'NoneType'>

介绍完complex和None后,我们把它们也转换成bool类型试试看:

#转换复数
a = 1 + 2j
print(bool(a))

#转换空字符
print(bool(""))

#转换空格
print(bool(" "))

---------------------------
输出结果:
True
False
True   #空格不等于None

上述代码中发现,当转换的字符为空时,输出为False,故str转换bool类型条件为:

# str 转 bool 只要字符串不是空 结果就是True

bool类型转换

bool类型转换为数值型时,可以用True = 1;False = 0即1或0表示;转换为字符型用True ,False表示。

p = True
q = False

#Python中有:True = 1;False = 0

# bool 转 int
print(int(p))
print(int(q))

# bool 转 float
print(float(p))
print(float(q))

# bool 转 str
print(str(p))
print(str(q))

--------------------------
输出结果:
1
0
1.0
0.0
True
False

转换总结

int整型转换要求:>>>直接以你要转换的目标类型来输出 , 转bool时非0即True

float浮点型转换要求:>>>直接以你要转换的目标类型来输出, 转bool时非0即True

str字符型转换要求:>>>转int:只有数值型(整数)的字符串才能转换为int

                                >>>转float:只有数值型的字符串才能转换为float

                                >>>转bool:只要字符串不是空 结果就是True

bool类型转换要求:>>>直接以你要转换的目标类型来输出,注意bool的True和False有1和0的含义

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值