类型转换

python的几种最基本的数据类型,我们已经见过:

 

字符串

整数

小数 (浮点数)

bool类型

 

python在定义一个变量时不需要给它限定类型。变量会根据赋给它的值,自动决定它的类型。你也可以在程序中,改变它的值,于是也就改变了它的类型。例如

 

a = 1

print a

a = 'hello'

print a

a = True

print a

 

变量a先后成为了整数、字符串、bool类型。

 

虽然类型可以随意改变,但当你对一个特定类型的变量进行操作时,如果这个操作与它的数据类型不匹配,就会产生错误。比如以下几行代码

 

print ‘Hello’+1

print ‘hello%d’ % '123'

 

程序运行时会报错。因为第一句里,字符串和整数不能相加;第二句里,%d需要的是一个整数,而'123'是字符串。

 

这种情况下,python提供了一些方法对数值进行类型转换:

 

int(x) #把x转换成整数

float(x) #把x转换成浮点数

str(x) #把x转换成字符串

bool(x) #把x转换成bool值

 

上述两个例子就可以写成:

 

print ‘Hello’+str(1)

print ‘hello%d’ % int('123')

 

以下等式的结果均为真:

 

int('123') == 123

float('3.3') == 3.3

str(111) == '111'

bool(0) == False

 

并不是所有的值都能做类型转换,比如int('abc')同样会报错,python没办法把它转成一个整数。

 

另外关于bool类型的转换,我们会专门再详细说明。大家可以先试试以下结果的值,自己摸索一下转换成bool类型的规律:

 

bool(-123)

bool(0)

bool('abc')

bool('False')

bool('')

 

 

昨天最后留的几句关于bool类型的转换,其中有一行:

   bool('False')

print一下结果,会发现是True。这是什么原因?

 

因为在python中,以下数值会被认为是False:

   为0的数字,包括0,0.0

   空字符串,包括'',""

   表示空值的None

   空集合,包括(),[],{}

其他的值都认为是True。

 

None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样。关于集合,我们后面的课程再说。

 

所以,‘False’是一个不为空的字符串,当被转换成bool类型之后,就得到True。

同样bool(' ')的结果是True,一个空格也不能算作空字符串。

bool('')才是False。

 

在if、while等条件判断语句里,判断条件会自动进行一次bool的转换。比如

   a = '123'

   if a:

       print 'this is not a blank string'

 

这在编程中是很常见的一种写法。效果等同于

if bool(a)

或者

if a != ' '

 

 转载自:Crossin的编程教室

 

CastingStuDemo

# coding=utf-8

# print 'Hellow'+1    #会报错,因为"+"号后面只能跟字符串
print 'Hellow'+str(1)     #强转为string类型

# print 'Hellow%d'%'123'  #会报错,因为"%"号后面定义的是整数,而'123'是字符串
print 'Hellow%d'%int('123')     #强转为int类型

print

print int('123') == 123
print float('3.3') == 3.3
print str(111) == '111'
print bool(0) == False
print

print bool(-123)
print bool(0)
print bool('abc')
print bool('False')
print bool('')

 BoolTestDemo

 

a = True
b = not a

print b
print not b
print a==b
print a!=b
print a and b
print a or b
print 1<2 and b==True
print

a = ' '
if a != '':
    print 'this is not a blank string'
    print 'a=',a

# 在if、while等条件判断语句里,判断条件会自动进行一次bool的转换。比如
#    a = '123'
#    if a:
#        print 'this is not a blank string'
#
# 这在编程中是很常见的一种写法。效果等同于
# if bool(a)
# 或者
# if a != ''

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值