我想接受像 + 2 3 ? 1 20 其中第一个变量是char,下一个变量是整数
我已经做到了
sign,m,n = input().split()
[sign,m,n]=[str(sign),int(m),int(n)]
但是我收到此错误
ValueError:没有足够的值可解包(预期3,得到0)
答案 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