具有不同值类型的Python3输入

时间:2019-03-21 19:48:15

标签: python python-3.x

string, integer = input("Enter a word and an integer: ")

Python3返回那个ValueError:太多的值无法解包(预期2)。我该怎么解决?

4 个答案:

答案 0 :(得分:2)

input()方法将返回一个单个字符串值,除非您使用split()将其拆分为多个部分(默认情况下,将拆分 处的空格)。< / p>

>>> string, integer = input("Enter a word and an integer: ")
Enter a word and an integer: test 5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>> string, integer = input("Enter a word and an integer: ").split()
Enter a word and an integer: test 5
>>> string
'test'
>>> integer
'5'

答案 1 :(得分:0)

您可以将任何可迭代的内容解压缩为变量。

字符串是一个变量,例如,您可以这样做:

a,b = 'yo'

给出a = 'y'b = 'o'

如果要解压缩两个“单词”,则必须将字符串拆分为空格以获取两个单词的列表。

'hello user'.split()

['hello', 'user']

然后您可以将此列表解压缩为两个变量。

这就是您想要的,但是要拆分从input()返回的字符串。

string, integer = input("Enter a word and an integer: ").split()

这就是您要寻找的东西。

哦,如果您希望integer变量实际上是一个整数,则应在之后将其转换为1:

integer = int(integer)

答案 2 :(得分:0)

有几种方法可以做到这一点,我认为听起来很正确,就是将给定的类型强加给用户:

def typed_inputs(text, *types):
    user_input = input(text).split()
    return tuple(t(v) for t, v in zip(*types, user_input))

可用于以下用途:

>>> types = (int, float, str)
>>> message = f"Input the following types {types} :"
>>> print(typed_inputs(message, types))
Input the following types (<class 'int'>, <class 'float'>, <class 'str'>) : 1 2.1 test
(1, 2.3, 'test')

答案 3 :(得分:0)

下面的方法可以工作,但是两者都是字符串。

string, integer = input("Enter a word and an integer: ").split()

您需要这样的东西。

string_val, integer_val = raw_input("String"), int(raw_input("Integer"))

如果用户不输入int,它将失败。 您可能想要用户尝试捕获并通知用户。