Python input()函数

时间:2016-11-11 10:48:20

标签: python input

我熟悉split()函数如何实现,如下所示:

def sayHello():
    name = input("whats you´re name?:" )
    print("hello", name) 

在这种情况下,输入功能只需要用户输入一个。 但在这种情况下实际发生了什么?

def test():
    str1, str2 = input().split()
    print(str1, str2) 

语法:

a, b = input()

这是一种同时向用户询问2个输入的方式,还是在何时使用它?

3 个答案:

答案 0 :(得分:2)

这在Python 2和Python 3上做了不同的事情。

Python 3的input()是Python 2的raw_input(),并且将始终返回一个字符串。

当您在a, b, = (1, 2)中执行元组解包时,右侧的元素数量必须与左侧的名称数量相匹配。如果他们不这样做,您将获得ValueError。由于字符串是可迭代的,如果用户输入两个字符长的字符串,a, b = input()将起作用。任何其他字符串都会导致程序崩溃。

要一次向用户询问多个输入,请在提示中明确定义格式,例如inp = input('Please input your first and last name, separated by a comma: '),然后再解析输入:first_name, last_name = inp.split(',')

请注意,如果程序输入的字符串多于或少于一个逗号,但仍然会使程序崩溃,但检查起来相当简单,请通知用户,然后重试。

在Python 2上,input()尝试将值强制转换为自然Python值,因此如果用户输入[1, 2]input()将返回Python列表。这是一件坏事,因为您仍然需要自己验证和清理用户数据,而您可能需要"[1, 2]"

答案 1 :(得分:1)

这只使用长度为2的字符串。

在ipython中尝试这样的事情:

In [9]: a, b = input()
"hallo"
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-3765097c12c0> in <module>()
----> 1 a, b = input()

ValueError: too many values to unpack

In [10]: a, b = input()
"ha"

In [11]: a
Out[11]: 'h'

In [12]: b
Out[12]: 'a'

In [13]: a, b = input()
"a"
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-3765097c12c0> in <module>()
----> 1 a, b = input()

ValueError: need more than 1 value to unpack

所以不,这不是要求2个输入的正确方法。

答案 2 :(得分:-1)

input("你叫什么名字:")