【无为则无心&Python基础】— 16.Python的数据类型转换

1、为什么要进行数据类型转换

使用Python处理数据时,不可避免的要使用数据类型之间的转换。如intfloatstring之间的转换。

例如:

问:通过input( )函数接收用户输入的数据都是字符串类型,如果用户输入1,想得到整型该如何操作?

答:转换数据类型即可,即将字符串类型转换成整型。

2、数据类型转换本质

  • 所谓的类型转换,将一个类型的对象转换为其他对象。
  • 类型转换不是改变对象本身的数据类型,而是根据当前对象的值创建一个新对象,因为intfloatstring变量的数据类型是不会改变的,需要把这个新创建的数据对象,赋值给当前对象的引用变量,那么变量的数据类型才会发生改变。

3、数据类型转换用到的函数

下面是我们常用到的一个数据类型转换函数的列表。

函数 说明
int(x [,base ])(常用) 将x转换为一个整数
float(x )(常用) 将x转换为一个浮点数
complex(real [,imag ]) 创建一个复数,real为实部,imag为虚部
str(x )(常用) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str )(常用) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s )(常用) 将序列 s 转换为一个元组
list(s )(常用) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个Unicode字符
ord(x ) 将一个字符转换为它的ASCII整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串
bin(x ) 将一个整数转换为一个二进制字符串

我们下面对标识有常用的方法进行说明,其他的函数,我们用到的话自己按照文档练习一下就可以会用。

4、常用数据类型转换函数说明

(1)int( )函数

int( )函数可以用来将其他的对象数据类型转换为整型。

# 1、布尔值转换为整型:True -> 1   False -> 0
a = True
"""
 调用int()来将a转换为整型。
 int()函数不会对原来的变量a产生影响,
 int()函数是将对象转换为指定的数据类型,并将其作为返回值返回。
 如果希望修改原来的变量,则需要对变量进行重新赋值
 这里很重要,一定要理解。
"""
# 调用int()来将a转换为整型。
int(a)
# int()函数不会对原来的变量a产生影响,打印结果可以看出。
print(type(a)) # <class 'bool'>
# 如果希望修改原来的变量,则需要对变量进行重新赋值
a = int(a)
print(type(a)) # <class 'int'>


# 2、浮点数:直接取整,省略小数点后的内容。
i = 123.456
# 变量没有重新赋值,原变量数据没有任何改变
int(i)
print(i) # 123.456
print(type(i)) # <class 'float'>
# 变量重新赋值后,数值和类型都发生了改变。
i = int(i)
print(i) # 123
print(type(i)) # <class 'int'>

"""
# 3、字符串:合法的整数字符串,直接转换为对应的数字
    如果不是一个合法的整数字符串,则报错:
    ValueError: invalid literal for int() with base 10: '数值'。
    对于其他不可转换为整型的对象,直接抛出异常 TypeError。
    (如果出现TypeError的报错,说明类型转换异常了,换句话说就是该类型不能这么转换)
"""
# 合法的整数字符串
i = "123456"
i = int(i)
print(i) # 123456
print(type(i)) # <class 'int'>

# 合法的整数字符串
j = "123.456"
j = int(j)
print(j) 
print(type(j)) 
# 在第二行,数据类型转换的时候就会报错
# ValueError: invalid literal for int() with base 10: '123.456'

# 对于其他不可转换为整型的对象,直接抛出异常 ValueError。
# 如:None
k = None
k = int(k)
# 报出异常:TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

(2)float( )函数

float函数可以用来将其他的对象数据类型转换为小数。

"""
 float()函数和int()函数的用法基本一致,不同的是它会将对象转换为浮点数。
 1、布尔值:True -> 1.0   False -> 0.0。
 2、整型:整数后边直接加上.0,如:15.0。
 3、字符串:合法的数字(整数,小数)字符串,直接转换为对应的数字。
 4、对于其他不可转换为整型的对象,直接抛出异常 TypeError
    (如果出现TypeError的报错,说明类型转换异常了,换句话说就是该类型不能这么转换))
"""
# 简单练习,整型
i = 15
i = float(i)
print(i) # 15.0
print(type(i)) # <class 'float'>

# 简单练习,字符串
i = "15"
i = float(i)
print(i) # 15.0
print(type(i)) # <class 'float'>

j = "15.12312"
j = float(j)
print(j) # 15.12312
print(type(j)) # <class 'float'>

# 简单练习,None
# 同int()函数

(3)str( )函数

str( )函数可以用来将其他的对象数据类型转换为字符串。

"""
 1、布尔值:True -> 'True'   False -> 'False'
 2、数值型直接原样转换成字符串
 3、对于None类型,转换成字符串时,并没有报错。
    (可能没学到的类型数据也不会报错)
"""
# 简单练习,float
i = 15.1231
i = str(i)
print(i) # 15.1231
print(type(i)) # <class 'str'>

# 对于None类型,转换成字符串时,并没有报错。
k = None
k = str(k)
print(k) # None
print(type(k)) # <class 'str'>

(4)bool( )函数

bool( )函数可以将对象转换为布尔值,任何对象都可以转换为布尔值。

"""
 规则:
    对于所有表示空性的对象都会转换为False,其余的转换为True
    哪些表示的空性:0 、 None 、 ''(空串) 。其他的可变对象学后再说。

"""
# 简单练习,非空性
i = 15.1231
i = bool(i)
print(i) # True
print(type(i)) # <class 'bool'>

# 简单练习,非空性
j = "python"
j = bool(j)
print(j) # True
print(type(j)) # <class 'bool'>

# 简单练习,非空性
k = None
k = bool(k)
print(k) # False
print(type(k)) # <class 'bool'>

(5)eval( )函数

  • eval( )函数是Python中的一个内置函数。
  • 一般我们会这样描述evel()函数,把字符串里边的数据转换成他原本的类型。
  • eval( )函数用法也是非常的灵活,我们主要说明通过eval( )函数把字符串转换成其他对象数据类型。

示例:

str1 = 'True'
str2 = '1'
str3 = '1.1'
str4 = '(1000, 2000, 3000)'
str5 = '[1000, 2000, 3000]'
print(type(eval(str1))) # <class 'bool'>
print(type(eval(str2))) # <class 'int'>
print(type(eval(str3))) # <class 'float'>
print(type(eval(str4))) # <class 'tuple'>
print(type(eval(str5))) # <class 'list'>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353