在一行中接受多个输入的问题

时间:2019-01-12 15:51:13

标签: python-3.x

我想接受像 + 2 3 ? 1 20 其中第一个变量是char,下一个变量是整数

我已经做到了

sign,m,n = input().split()
[sign,m,n]=[str(sign),int(m),int(n)]

但是我收到此错误

  

ValueError:没有足够的值可解包(预期3,得到0)

3 个答案:

答案 0 :(得分:1)

您的问题出在sign,m,n = input().split()。您必须将其视为列表,而不是返回3个值的函数。这是您想要的代码片段:

stdin = input().split()
sign,m,n = str(stdin[0]),int(stdin[1]),int(stdin[2])

Stdin是一个列表

答案 1 :(得分:0)

如果您想使用自己的逻辑来完成它,那么这就是方法。

  

只需在第一条语句的末尾附加[:3]即可分割列表。

>>> sign, m, n = input().split()[:3]
+ 2 3 ? 1 20
>>>
>>> [sign,m,n] = [str(sign), int(m), int(n)]
>>>
>>> sign
'+'
>>>
>>> m
2
>>>
>>> n
3
>>>

这是在同一行中完成同一操作的另一种方法。

  

为此,您可以使用列表理解的概念。

>>> sign, m, n = [c if i == 0 else int(c) for i, c in enumerate(input().split()[:3])]
+ 2 3 ? 1 20
>>>
>>> sign
'+'
>>> m
2
>>> n
3
>>>

答案 2 :(得分:0)

只需在您的第一条语句中添加方括号即可在Python 3.6.7上运行:

[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> [sign,m,n] = input().split()
- 2 3
>>> [sign,m,n] = [str(sign),int(m),int(n)]
>>> sign
'-'
>>> m
2
>>> n
3