细究Python键盘输入
本文介绍了
raw_input
和input
在python2
和python3
上的区别,以及如何利用正则表达式和input
键盘输入一维数组和二维数组。
raw_input 和 input
python2中
1 | raw_input_A = raw_input("raw_input: ") |
可以看到输出的是 str
1 | input_A = input("Input: ") #不能输入字母 |
可以看到输出的是 int
,并且我们发现,input根本不能输入字母,会直接报NameError: name 'abc' is not defined
,提示没有定义。
查看 Built-in Functions ,得知:input([prompt])
Equivalent to eval(raw_input(prompt))
input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数,所以,你甚至可以将表达式作为 input() 的参数,并且它会计算表达式的值并返回它。
不过在 Built-in Functions 里有一句话是这样写的:Consider using the raw_input() function for general input from users.
除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
python3中
因为刚才说的那个原因,input其实没有什么必要,所以就被改进了。
简单来说,raw_input
没有了,只剩下input
。现在这个input就是之前那个raw_input
。
查看 Python官方文档input([prompt]) ,得知:
If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.
简单说,返回的内容都是str,括号里边的prompt
写什么,就会当做提示内容输出。比如底下的那个 -->
1
2
3
4input('--> ') s =
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
因为我一般都是用python3,接下来的内容都是以3为准。
Python输入数组
一维数组
- 使用
int()
进行强制类型转型 - 当输入内容不为数字时,不能转型,发生
except
跳出循环。 - 先声明
data
是一个list,将input_A
一个个+
进去。1
2
3
4
5
6
7
8
9data = []
while True:
try:
input_A = int(input("Input: "))
data +=[input_A]
except:
break
data
type(data)
在以上的基础上,我们可以用python输入二维数组
python输入二维数组
正则表达式会利用非数字的字符,进行切割,因此数字之间插入什么都无所谓。
1 | import re |
细究Python键盘输入