解决问题:
- 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
- raw_input 得到的都是str类型
- 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分割
- . 如果输入的个数不确定
比如要求几个数的平均数,但是有几个数字不确定
那么可以直接把输入都扔到list里面:
- . 要判断输入的是不是float 类型
当输入的是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
网友评论