Python检查输入类型

昨日,在麻省理工学院公开课:计算机科学及编程导论第七集大概25分钟左右上看到一段关于检查输入类型的代码,个人觉得其中的循环让我耳目一新,我自己就依样画葫芦把它改了一下,由于是新手,改的可能不好。下面就是我自己改的一些代码:

input_ok = True
while input_ok:
  #value = input("please enter a float: ")
  try:    
    value = float(raw_input("please enter a float: ")) # 类型转换
  except EOFError, e:  # 将错误原因放在对象e中 
    print e
  except IOError, e:
    print e
  except ValueError, e:  # 数值错误异常处理
    print e
  else:   # 如果没有异常,则执行
    if type(value) == type(0.0):
      input_ok = False
    else:
      print "Error! Are you sure it's a float?"
  finally:  # 不管有没有异常都执行
    print "\n"

新改的代码加入了一个类型转换和异常处理,同时把input()改为了raw_input(),类型转换函数float(x)是将对象x转换为浮点数;异常处理是由于如果用户输入的不是数值,比如说是一个字符a,那么float()函数就会转换出错,这时就需要异常处理;至于把input()改为raw_input(),是因为input() 函数会把你输入的东西当做 Python 代码进行处理,这么做会有安全问题,比如说下面这幅图:
这里写图片描述
我想要用户输入一个数字,但用户却输入一个字母,这样却依然行得通,从而导致了安全问题,input()函数返回的是数值类型,raw_input()返回的字符串类型。个人认为尽量避免用input(),能用raw_input()则用raw_input()。
其实,我最推崇的就是这段代码中的循环语句,因为它能让用户在输错的情况下再次输入。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值