【发布时间】:2021-06-23 13:29:00
【问题描述】:
代码的输入应该是这样的
10
1 0 1 0 1 0
并且输出应该是1和0的数量的绝对值差。当我只输入第二行时代码有效,但是当我输入第一行时,数组只有 [1, 0] 所以输出也不起作用。我怎样才能使两条线都注册?
array = input()
array = array.replace(" ","")
array = [int(x) for x in str(array)]
one = (array.count(1))
zero = (array.count(0))
output = zero - one
if output < 0:
#output = output * -1
print(output)
【问题讨论】:
-
你的
int(array)没有str(array)做任何事情,因为array已经是str。计算字符串中1和0的数量之间的差异,您可以更轻松地搞定:abs(sum(1 if c == "1" else -1 for c in array if c in "10")) -
什么不起作用?如果您输入
10,输出应该是0,这就是发生的情况。 -
输入不是 10,而是 10,然后是新行,然后是 1 0 1 0。但它只将输入视为 10,而不是 10 1 0 1 0。
-
您需要决定用户将如何终止他们的输入。如果不是换行符,怎么办?基本上,Python 应该如何知道用户已经完成了?
-
这很有道理,我该怎么做呢?