【问题标题】:Accepting multiple inputs in python logic在 python 逻辑中接受多个输入
【发布时间】:2020-05-26 11:24:00
【问题描述】:
if __name__ == '__main__':
n = int(input())

arr = list(map(int, input().rstrip().split()))

这是我上面的代码,它要求我获取数组中元素数量的输入 n。

然而,困惑的根源在于,由于我是 python 新手,我无法理解为什么不使用任何 for 循环,我可以为数组提供多个值? 我知道列表用于转换, input() 用于获取值,但这似乎不合逻辑,仅一个输入语句就可以让我输入 5-6 个数组值!我知道 map 是用来迭代给定函数的可变参数的!

让我感到困惑的另一个原因是,如果我从这里删除 rstrip() 和 split(),我会得到一个编译错误!为什么会这样?

arr = list(map(int, input()))

这是错误:

   ValueError: invalid literal for int() with base 10: ' '

这么多代码还不足以获取整数数组值吗? 为什么我必须在这里使用那些字符串方法?

(注意:-我知道 numpy 支持数组!在这里使用数组词只是为了告诉你被问到的问题)

【问题讨论】:

  • 编译错误是因为你在行尾少了一个)
  • 这是一个错字,编辑等待

标签: arrays python-3.x list numpy


【解决方案1】:

split 会将您的输入拆分为空白字符并返回一个列表,例如对于"1 2 3 4 5",您将返回['1', '2', '3', '4', '5']。然后在maplist 中使用该列表将其转换为最终存储在arr 中的整数列表。

如果不使用splitint 将失败,因为无法解析int('1 2')

【讨论】:

  • thnx 得到了字符串部分,但是通过单行进行多个输入呢?
  • @GaganrajdeepSingh 这就是重点,如果用户将每个输入与例如一个空格,您可以将它们视为单独的输入,每个输入在arr 中都有自己的位置,如果这就是您的意思的话。
  • 如果你想要n这样的输入行,你需要一个显式循环,比如[input() for _ in range(n)]
猜你喜欢
  • 1970-01-01
  • 2021-10-29
  • 2016-01-01
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
相关资源
最近更新 更多