【问题标题】:How do delete new lines in input?如何删除输入中的新行?
【发布时间】: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。计算字符串中10 的数量之间的差异,您可以更轻松地搞定: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 应该如何知道用户已经完成了?
  • 这很有道理,我该怎么做呢?

标签: python arrays input


【解决方案1】:

您想从用户那里获取 2 行输入。但是input 总是只读取 1 行。但是,您可以拨打 2 次电话到 input,每条线路一个,然后加入两条线路。例如

array = input()  # line 1
array += input() # line 2

你的其余代码可以写成如下:

array = array.replace(" ","")
array = [int(x) for x in array]

one = array.count(1)
zero = array.count(0)

output = zero - one 
print(output)

【讨论】:

  • 所以,你至少要迭代array 4 次,当任务可以通过单次迭代来解决时,这是非常低效的
  • 我怀疑用户是否能够输入足够长的时间来解决这个问题。在我看来,这是一个玩具编程问题,所以让我们以最简单的方式编写它(并且尽可能接近 OP 给出的示例)并担心以后节省微秒。
  • @L.Grozinger,问题是你建议的方法不是最简单的。甚至不简单。
  • @OlvinR​​oght 随时编辑您的建议或提交其他答案。
  • @AdaÖzer 如果有效,并且如果您认为该答案对其他人有帮助,请考虑将答案标记为已接受。
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 2020-08-12
相关资源
最近更新 更多