python input 详解

2017-04-25  本文已影响0人  ketchup

解决问题:

  • input 得到的数据到底是什么类型
  • 多个参数接收input的输入,是怎么解包的
  • 如果输入的个数不确定,怎么处理
  • 要判断输入的是不是float 类型
  • 要对输入的参数格式输出,规定参数只能是str或者int 或者float类型

1__input 得到的数据到底是什么类型

1.1在python 3 里,一切input的得到的东西,都是str类型
In [1]: a = input('.....:')
.....:123

In [2]: a 
Out[2]: '123'

In [3]: type(a)
Out[3]: str

In [4]: b = input('....:')
....:{'a':1, 'b':2}

In [5]: b
Out[5]: "{'a':1, 'b':2}"

In [6]: type(b)
Out[6]: str
1.2在python2 里 有input 和raw_input
In [4]: b = raw_input('...:')
...:345

In [5]: b
Out[5]: '345'

In [6]: type(b)
Out[6]: str

==============================================

In [1]: a = input('....:')
....:123

In [2]: a
Out[2]: 123

In [3]: type(a)
Out[3]: int

------


In [7]: c = input('...:')
...:{'a':1,'b':2}

In [8]: c
Out[8]: {'a': 1, 'b': 2}

In [9]: type(c)
Out[9]: dict

<以下讲解基于python3>

2___多个参数接收input的输入,是怎么解包的

先看一下会出的错误:

错误例1

这种情况就是不清楚input 得到的东西是什么形式,在py3里面,input返回的都是string类型的
也就是说,输入1,2,3 其实是返回的字符串‘1,2,3’
那么久显而易见了,这个时候


其实就是:


前面是三个变量,而后面是一个字符串,那么后面自然就要解包,把字符串解包成一个个字符
但是‘1,2,3’解包之后是 '1' ',' '2' ',' '3' 五个字符,所以当然会报错

然后,下面就简单了

其实就是对string ‘11 22 33’ 的split分割

当输入的是float的时候,把string 转换成float的时候是不报错的,所以如果报错的话,那么这个输入就不是float类型

所以就可以用try except 来解决

a = input('...:')
try:
      float(a)
except :
    isFloat = False
else:
    isFloat = True

同理,对其他类型的判断也是如此

若果要对输入的参数格式化输出,规定参数只能是str或者int 或者float类型

def f(a, b, c):
    type_list = [int, float, str]
    if a in type_list and b in type_list and c in type_list:
        #do_something
    else:
        #ERROR
上一篇 下一篇

猜你喜欢

热点阅读