【问题标题】:How to take user input and convert it to an array using python如何使用 python 获取用户输入并将其转换为数组
【发布时间】:2021-12-08 15:03:18
【问题描述】:

如何获取用户输入的数字并将其拆分并分别使用每个数字

例如 如果用户输入'''4568''' 代码应将 4568 拆分为 4,5,6,8

【问题讨论】:

  • 请展示您到目前为止所尝试的内容..

标签: python split termux


【解决方案1】:

对用户输入使用列表推导。

values = [int(i) for i in input()]

请注意,此代码不处理用户在输入中输入非数字字符的情况。为了处理这种情况,你更愿意写:

values = [int(i) for i in input() if i.isdigit()]

【讨论】:

  • 无需将输入转换为列表。
  • @Pedro Maia 那么你将如何继续使用每个数字呢?
  • 遍历一个字符串就是这样做的。
  • @PedroMaia 哦,你是对的。这对我来说是个错误。我要编辑我的消息。
【解决方案2】:

您可以将map 转换为int,并将map 转换为list

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

如果您想确保只接受数字,请将 filter 添加到 input

digits = list(map(int, filter(lambda c: c.isdigit(), input())))

【讨论】:

  • 如前所述,如果用户输入非整数,这可能会失败
  • @Buzz - 没关系。那不是问题的一部分。我回答了这个问题。
  • 我没说错;)
  • @Buzz - 我添加了一个数字过滤器。
【解决方案3】:

将其转换为字符串,迭代为字符串并将每个字符作为整数获取。

# Input from the user
inp = input()
digits=[]
for c in str(inp):
   try:
       digit=int(c)
       # Populate the list with the last digit obtained
       digits.append(digit)
   except:
        # I'm assuming you don't need to worry about any other non integer character
        pass
  

或者在一行中,但请注意,如果输入中存在任何非整数字符,则映射失败

inp = 1234
digits = list(map(int, list(str(inp)))

list(str(inp)) 将字符串转换后的输入拆分为其字符列表,map 将整数转换应用于后一个列表的每个元素,最终转换为列表返回您想要的数组

编辑:我在写评论的同时写代码。我现在已经将直接int 建议集成到地图功能

EDIT2:一个挑剔的编辑,允许实际的用户输入而不是测试变量。这根本不会改变实质内容。

【讨论】:

  • 或者只是list(map(int, list('12345')))
  • 这不起作用。您没有进行适当的转换,也没有使用正确的类型。
  • 这段代码在很多层面上都是错误的。
  • 让它们亮起来
  • 这仍然是错误的,而且到处都是。问题是关于用户输入,而不是您转换为字符串的数字。然后,您只需从 cmets 中加入一个与您的方法完全不同的解决方案。此外,您不必将字符串包装在列表中。字符串已经是可迭代的了。
猜你喜欢
  • 2023-01-17
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多