【问题标题】:User input integer list [duplicate]用户输入整数列表[重复]
【发布时间】:2015-06-19 08:25:05
【问题描述】:

我正在尝试创建一段代码,允许我要求用户一次输入 5 个数字,这些数字将存储到一个列表中。例如,代码将被运行,类似这样的东西会出现在 shell 中

Please enter five numbers separated by a single space only:

用户可以这样回复

 1 2 3 4 5 

然后数字 1 2 3 4 5 将作为整数值存储到一个列表中,以便稍后在程序中调用。

【问题讨论】:

  • 你试过了吗?
  • 这看起来很像一个家庭作业问题。

标签: python string list python-3.x int


【解决方案1】:

您最好的方法可能是列表理解。

user_input = raw_input("Please enter five numbers separated by a single space only: ")
input_numbers = [int(i) for i in user_input.split(' ') if i.isdigit()]

这将在空格处拆分用户的输入,并创建一个整数列表。

【讨论】:

  • 工作得很好,谢谢!
【解决方案2】:

你可以这样使用:

my_list = input("Please enter five numbers separated by a single space only")
my_list = my_list.split(' ')

【讨论】:

  • 现在如何将输入的数字转换为整数?
  • 我和丹尼尔的答案都将返回整数列表而不是整数列表字符串。 @FCBHokie
【解决方案3】:

这可以通过使用raw_input() 函数非常容易地实现,然后使用split()map() 将它们转换为字符串列表

num = map(int,raw_input("enter five numbers separated by a single space only" ).split())
[1, 2, 3, 4, 5]

【讨论】:

    【解决方案4】:

    您需要使用正则表达式,因为用户也可以输入非整数值:

    nums = [int(a) for a in re.findall(r'\d+', raw_input('Enter five integers: '))]
    nums = nums if len(nums) <= 5 else nums[:5] # cut off the numbers to hold five
    

    【讨论】:

    • 你不需要 - 如果用户输入非整数,为什么不应该它会失败?
    【解决方案5】:

    这是一种将用户输入带入列表的巧妙方法:

    l=list()
    while len(l) < 5: # any range
        test=input()
        i=int(test)
        l.append(i)
    
    print(l)
    

    应该很容易理解。任何范围范围都可以应用于while 循环,并且只需请求一个数字,一次一个。

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 1970-01-01
      • 2014-11-18
      • 2019-10-17
      • 2018-12-30
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多