我正在尝试创建一个程序,它接受在python中用一行编写的一些数字,但它不能按照我期望的方式工作。 我得到了输入:
x = int(input())
然后尝试构建一个列表:
list = []
for i in range(x):
list.append(int(input()))
但这只有在我依次输入数字时才有效。 我想解析像这样的输入行
1 2 3
到数字列表中。
答案 0 :(得分:4)
您可以简单地按空格分割输入。
>>> inp = input()
1 2 3 4
>>> inp.split()
['1', '2', '3', '4']
这将为您提供一个数字列表作为字符串。要将它们转换为实际整数,可以使用map:
>>> list(map(int, inp.split()))
[1, 2, 3, 4]
答案 1 :(得分:1)
添加一些安全措施也不会有害,确保用户输入的数字不是别的:
inp = input('Enter Numbers:')
lst = [int(i) for i in inp.split() if i.isdigit()]
答案 2 :(得分:1)
您可以使用split
字符串方法和列表理解来实现此目的:
num_str = input("Enter number string: ")
num_list = [int(i) for i in num_str.split()]
如果num_str
为:"3 4 6 5 6"
num_list
将是:[3, 4, 6, 5, 6]
更多信息:
来自文档的 str.split
信息:
Docstring:S.split([sep [,maxsplit]]) - >字符串列表
使用sep作为分隔符,返回字符串S中的单词列表 串。如果给出maxsplit,则最多完成maxsplit分割。如果 sep未指定或为None,任何空白字符串都是分隔符 从结果中删除空字符串。类型:
method_descriptor
列表理解:
答案 3 :(得分:-1)
mylist = []
uservals = input("enter some numbers: ")
for i in uservals.split():
mylist.append(int(i))