如何在Python中将两个输入放在一行中并用空格分隔

问题描述 投票:0回答:6

所以我正在黑客地球中练习,我必须在一行中输入两个输入,并用空格分隔。 下面的代码是我使用的:

 x, y = [x for x in input("Enter two value: ").split()]

它应该接受看起来像“2 5”的输入

它返回一个错误:

执行失败
ValueError:没有足够的值来解压(预期为 2,得到 1)

堆栈跟踪:
回溯(最近一次调用最后一次):
文件“/tmp/165461120/user_code.py”,第 13 行,位于
x, y = [x for x in input("输入两个值:").split()]
ValueError:没有足够的值来解压(预期为 2,得到 1)

我认为我理解的是它给出了两个值作为一个字符串。如果是这样,我如何将它们分开并将它们转换为整数?

python-3.x input valueerror
6个回答
0
投票

接受两个输入

x, y = input("Enter two value: ").split()

这应该可以解决问题。要转换为 int,您可以分别对 x 和 y 进行转换。

或者更好的方法是使用地图功能

x, y = map(int, input().split())

0
投票

对于您的情况,仅剩下类型转换,因此拆分的数字变为

int
。所以,你只需要添加

x, y = [int(x) for x in input("Enter two value: ").split()]

或者,要在单行中获取 2 个输入,您也可以使用

map

x, y = map(int, input().split())


0
投票

发生这种情况是因为 Hacker Earth 在几乎所有情况下都会逐行给出输入。 在几乎所有情况下,输入的形式如下。

1
2 3 4
5
6 7 8

这会因问题而异,并且需要针对每个问题进行个性化。 您收到错误没有足够的值来解包,因为 Hacker Earth 仅提供单个输入,而您期望 2 个输入。如果它超过 2 个,则错误将是太多值无法解包。

很可能是因为在大多数黑客地球问题中,您正在尝试输入测试用例的数量,这是第一个输入,并且是单个数字输入。


0
投票

Process-01:使用列表理解

whole_line = input() # 1 2 3 4 5
strings = whole_line.split(' ') # ['1', '2', '3', '4', '5']
# remove extra space within numbers if any from list
numbers = [int(num) for num in strings if len(num)>0]  # [1, 2, 3, 4, 5]
print(numbers) # [1, 2, 3, 4, 5]

现在您可以在一行内写下整个逻辑,如下所示

numbers = [ int(num) for num in input().split(' ') if len(num)>0 ]
print(numbers) 

Process-02:使用filter和map功能

whole_line = input() # 1 2 3 4 5
strings = whole_line.split(' ') # ['1', '2', '3', '4', '5']
# remove extra space within numbers  if any from list
strings = list(filter(lambda x :len(x)>0 ,strings))
numbers = list(map(int,strings)) # convert each string to int
print(numbers) # [1, 2, 3, 4, 5]

现在您可以在一行内写下整个逻辑,如下所示

numbers = list(map(int,filter(lambda x : len(x)>0,input().split(' '))))
print(numbers)

0
投票

您可以尝试将此作为Python中以空格分隔的一行输入的代码

N,X = input("").split()

如果您尝试输入号码,请使用此号码:

N,X = input("").split()
N=int(N)
X=int(X)

-1
投票

在[20]中:a,b = raw_input().split() 12 12.2

在[21]中:a = int(a) 输出[21]:12

在[22]中:b = float(b) 输出[22]:12.2 你不能用一行代码来做到这一点(或者至少在没有一些超级骗子额外的 hackz0r 技能——或分号的情况下),但 Python 不是为一行代码而生的。

© www.soinside.com 2019 - 2024. All rights reserved.