[英]Taking n number of integer inputs from a single line in python
因此,基本上我从用户那里获取一个n值,其中n = int(input("number of boats"))
,然后从一行获取n个整数输入(假设我的输入是2 6 3 6 4 7 4
,它们写2
,我只取前两个数字2 6
),并将其附加到列表中(我之前定义为mylist = []
)。 我想将它们作为整数而不是列表中的字符串。 我怎样才能做到这一点?
编辑:
好的,也许我的措辞不是最好的,所以我将尝试以不同的方式解释。 我从.txt文件中输入内容,该文件具有:
3 23 56 36 48 46 97
开始时的3
决定了有多少条船,例如23 56
是第一条船的值。 我想输入确定多少条船的输入,然后将所有值作为输入并将它们全部放入一个列表中[23, 56, 36, 48, 46, 97]
。 请注意,我必须使用输入而不是文件读取,因为将测试不同的值。 我需要将这些值作为整数,以便不能将每一行都当作一个字符串。
您可以这样尝试。
注意:我认为,不需要为
n
取显式值。
>>> import re
>>>
>>> s = '12 34 56 34 45'
>>> l = re.split(r'\s+', s)
>>> l
['12', '34', '56', '34', '45']
>>>
>>> [int(n) for n in l]
[12, 34, 56, 34, 45]
>>>
>>> # Using the above concept, it can be easily done without the need of explicit n (that you are taking)
...
>>> mylist = [int(n) for n in re.split('\s+', input("Enter integers (1 by 1): ").strip())]
Enter integers (1 by 1): 12 34 56 67 99 34 4 1 0 4 1729
>>>
>>> mylist
[12, 34, 56, 67, 99, 34, 4, 1, 0, 4, 1729]
>>>
>>> sum(mylist)
2040
>>>
您应该尝试以下代码:
n = int(input("number of boats:"))
mylist = []
for _ in range(n): # Taking n lines as input and add into mylist
mylist.extend(list(map(int, input().rstrip().split())))
print("mylist is:", mylist)
输出为:
number of boats:3
23 56
36 48
46 97
mylist is: [23, 56, 36, 48, 46, 97]
您可以尝试的一种方法:
numlist = []
n = stdin.readline()
for _ in range(int(n)):
numlist.extend(stdin.readline().split())
stdout.write(str(numlist))
此方法的输出:
2
1 2
3 4 5
该方法花费的时间:
import timeit
setup = "from sys import stdin,stdout"
statement = '''
numlist = []
n = stdin.readline()
for _ in range(int(n)):
numlist.extend(stdin.readline().split())
stdout.write(str(numlist))
'''
print (timeit.timeit(setup = setup,
stmt = statement,
number = 1) )
输出与执行所需的时间:
2
1 2
3 4 5
['1', '2', '3', '4', '5']7.890089666
如果想法是接受n个输入,则可以执行以下操作:
mylist = list()
n = int(input("number of boats"))
for i in range(n):
mylist.append(int(input("integer number")))
如果您的想法是使用带有值的字符串,并让用户决定该字符串的编号如何让您执行此操作:
boats = '2 6 3 6 4 7 4'
n = int(input("number of boats"))
boats = list(map(int, boats.split(' ')))
mylist = boats[:n]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.