我熟悉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个输入的方式,还是在何时使用它?
答案 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("你叫什么名字:")