我一直在尝试将整数输入分隔成任意数量的空格或换行符。我知道如何使用空格分隔的输出和具有换行符的输出。在基于C的语言中,我们不必关心输入在哪里,它会在找到输入时自动获取输入,但是我不认为Python是这种情况(如果我错了,请纠正我)。有人可以帮忙吗?
我尝试使用While语句直到True并在其中使用try
语句。但这是行不通的。
a = []
try:
while(True):
a.append(int(input()))
except:
pass
print(a)
当我输入
12 12
12
它返回一个空列表。如果我删除输入中的int,它将返回一个列表[12 12, 12]
。
答案 0 :(得分:1)
等等,所以我想我现在明白了。您想接受任意数量的输入,但是将每个由空格分隔的输入保存为自己的输入吗?实际上有一个字符串方法。这是一个示例脚本。它不是最好的,但是很好地演示了该方法。
list = []
string = "user input goes here"
splitString = string.split()
for word in splitString:
list.append(word)
print(list)
输出:
["user", "input", "goes", "here"]
string.split()方法默认情况下使用空格,但是您可以指定另一个定界符,例如#号。
List = []
String = "Hi#my#name#is#bob"
newString = String.split("#")
for word in newString:
list.append(word)
编辑:这是一个完整的工作实现,无论分隔两个输入的内容是空格,换行符还是其他您想要的东西,它都将起作用。
import re
list = []
while True:
string = input()
if string == "break":
break
splitString = re.split("[\s | \r\n]", string)
for word in splitString:
list.append(word)
cleanList = []
for word in list:
if word != '':
cleanList.append(word)
print(cleanList)
输入:
12 94 17
56
3
输出:
[12, 94, 17, 56, 3]
功能证明:单击here
答案 1 :(得分:1)
尝试一下:尽可能最短的方法
a = []
s=input()
while s != '':
i = s.split()
[a.append(int(j)) for j in i]
s=input()
print(a)
输入:
1 2 3
4 5
6
输出:
[1, 2, 3, 4, 5, 6]
您也可以尝试:
a = []
s=input()
while s != '':
i = s.split()
a.extend(map(lambda s: int(s),i))
s=input()
print(a)
答案 2 :(得分:0)
希望您将在此示例中获得一些见解,并添加了我个人的代码编写观点。
首先,使用多空格输入是可以理解的,但不能使用多行。最好一一接受输入。
出于测试和调试的目的,建议分别收集用户和处理输入数据。
现在,假设您已收集用户输入并使用raw_input
存储为数据,这在需要收集多行输入时非常方便。请浏览raw_input
,它在Python3和Python2中受支持。
>>>
>>> data = '''12
...
... 12 12
...
...
... 12'''
>>> data
'12 \n\n12 12\n\n\n12'
>>> print(data)
12
12 12
12
>>> double_spaces = ' '
>>> single_space = ' '
>>> data = data.strip().replace('\n', single_space)
>>> data
'12 12 12 12'
>>> while double_spaces in data:
... data = data.replace(double_spaces, single_space)
...
>>> data
'12 12 12 12'
>>> print(list(map(int, data.split()))
...
... )
[12, 12, 12, 12]
>>>
>>> a = []
>>> try:
... while(True):
... a.append(int(input()))
... except:
... pass
...
12
1
12 12
>>> a
[12, 1]
>>>
输入12 12
时,应该会发生以下情况。
>>> int('12 12')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12 12'
由于此代码的except:
处理异常情况不好,因此您的用例将按预期返回空列表。
由于我更改了输入,因此您会看到这种差异。