[英]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.