【问题标题】:Check multiple inputs in the for loop检查 for 循环中的多个输入
【发布时间】:2018-08-10 07:06:02
【问题描述】:
n_lines = int(input('How many lines do you want to input?'))

lines = [input() for i in range(n_lines)]

如果用户点击 5 或更高的数字,我想打破循环。

【问题讨论】:

  • 什么循环?我没有看到一个
  • @ManishSingh,如果将列表推导式中的 n_lines 替换为 min(5,n_lines),即使 n_lines 大于 5,也最多会询问用户 5 个输入
  • 是在第一行还是在循环中输入?
  • 这不是真的。常规的 for 循环并不慢。
  • 这不能通过列表理解来完成。 (它可以两个列表解析来完成,但是为什么要这样做而不是使用常规循环呢?)

标签: python python-3.x list for-loop input


【解决方案1】:

这应该会给你想要的输出:

n_lines = int(input('How many lines do you want to input?')) lines = [] for i in range(n_lines): x = input() lines.append(x) if int(x) >= 5: break print(lines)

【讨论】:

  • 不是我要找的。​​span>
  • @ManishSingh 为什么不呢?
  • @ManishSingh,这正是您所要求的输出。如果这对您来说不是一个可接受的解决方案,那么您确实需要更清楚地描述您正在寻找的内容。
  • 我希望它在一行之内。
  • @ManishSingh 在您的问题中您没有说过解决方案必须是单行的。这很好,因为在一行中写这个是可怕的。不要要求我们编写糟糕的代码。这个答案是一个很好的解决方案。放弃你的任意要求。
【解决方案2】:

在坚持用一行来解决这个问题之后,我会这样做:

n_lines = int(input('How many lines do you want to input?'))
lines = [input() for i in range(5 if n_lines>5 else n_lines)]

编辑

我完全误解了这个问题。 OP 的要求对我来说似乎是不可能的,因为你在第二行所做的任何事情都只是定义了范围。到目前为止,您无法在同一行中添加更多功能(也许是 Python 的未来版本?)。

正如其他人所说,最佳解决方案是,

n_lines = int(input('How many lines do you want to input?'));
lines=[]
for i in range(0,n_lines):
  n = int(input("Enter a number: "))
  if n>=5:
    break
  lines.append(n)
print(lines)

【讨论】:

  • 这不是 OP 想要的。如果输入大于 5,他们希望 [input() for i in range(n_lines)] 停止接受输入。
  • 没错。是否可以在输入时进行检查?
  • 根据 OP,限制是针对列表成员的输入,而不是针对 n_lines。
  • @mukeshkudi,没错。对此有什么解决办法吗?或任何可以提供的人。
  • 我认为你应该接受@Aran-Fey 的建议。您的要求不会增强或优化 ThijsW 给定的解决方案。
猜你喜欢
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2018-02-08
  • 2014-07-29
  • 1970-01-01
  • 2022-08-18
相关资源
最近更新 更多