细究Python键盘输入

作者: mmmwhy | 来源:发表于2017-03-10 14:00 被阅读466次

    本文介绍了raw_inputinputpython2python3上的区别,以及如何利用正则表达式和input键盘输入一维数组和二维数组。更多见:李飞阳 http://feiyang.li/

    raw_input 和 input

    python2中

    raw_input_A = raw_input("raw_input: ")
    type(raw_input_A)
    

    可以看到输出的是 str

    input_A = input("Input: ") #不能输入字母
    type(raw_input_A)
    

    可以看到输出的是 int,并且我们发现,input根本不能输入字母,会直接报NameError: name 'abc' is not defined,提示没有定义。

    Python2报错Python2报错

    查看 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写什么,就会当做提示内容输出。比如底下的那个 -->

    >>> s = input('--> ')  
    --> Monty Python's Flying Circus
    >>> s  
    "Monty Python's Flying Circus"
    

    因为我一般都是用python3,接下来的内容都是以3为准。


    Python输入数组

    一维数组

    • 使用int()进行强制类型转型
    • 当输入内容不为数字时,不能转型,发生except跳出循环。
    • 先声明data是一个list,将input_A一个个+进去。
    data = []
    while True:
        try:
            input_A = int(input("Input: "))
            data +=[input_A]
        except:
            break
    data
    type(data)
    
    输入数组输入数组

    在以上的基础上,我们可以用python输入二维数组

    python输入二维数组

    正则表达式会利用非数字的字符,进行切割,因此数字之间插入什么都无所谓。

    import re
    data2D = []
    while True:
        userInput = input('Input:') # 输入数组,用空格隔开即可
        info = re.split(r'[\D]',userInput)#正则表达式分割
        data = []# 定义一维数组
        try:
            for number in info:
                data+=[int(number)] # 一维数组加入数字
            data2D+=[data] #一维数组加入到二维中去
        except:
            break;
    data2D
    

    相关文章

      网友评论

        本文标题:细究Python键盘输入

        本文链接:https://www.haomeiwen.com/subject/zlengttx.html