关于Python 3.5.1:Python 3.5.1 – 将多个输入读入数组

Python 3.5.1 - read multiple inputs into an array

我正在使用python 3.5.1并通过Windows上的命令提示符运行我的文件。程序运行后传递参数;即程序根据先前生成的列表提示输入。

我想在由空格分隔的同一行上读取多个数字。 Python 2.X它不会成为raw_input的问题,但事实证明这是一个挑战。

1
selection = list(map(int,input("Enter items to archive (1 2 etc):").split(",")))

如果我在同一行输入两个不同的数字:

Enter items to archive (1 2 etc):29 30 Traceback (most recent call
last): File"G:\Learning\Python
eed_to_watch.py", line 15, in

selection = list(map(int,input("Enter items to archive (1 2 etc):").split(","))) File"", line 1
29 30
^ SyntaxError: unexpected EOF while parsing

我放弃了一行并尝试在循环中完成它但我得到了一个不同的错误

1
2
3
4
5
6
data=[]
while True:
        entry = int(input('Item number : '))
        data.append(entry)
        if entry == 'q':
            break

它试图将'q'评估为变量,即使我没有eval()'d。

这个问题说只是使用input()。split()但看起来这不再有效....
接受由python中的空格分隔的多个用户输入并将它们附加到列表中

我可以尝试捕获EOF异常,但这似乎不是正确的方法,也不是必要的。


1
2
3
4
entry = input('Enter items: ')
entry = entry.split(' ')
entry = list(map(int, entry))
print(entry)

或者更简洁:

1
2
entry = list(map(int, input('Enter items: ').split(' ')))
print(entry)


如果你想将参数传递给python脚本,你可能想看一下argparse:https://docs.python.org/3/library/argparse.html

1
2
3
4
5
6
7
8
9
10
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('integers', type=int, nargs='+')

args = parser.parse_args()
print(args.integers)

python script.py 1 2 3 4
[1, 2, 3, 4]


您尝试将所有内容评估为int,这显然不起作用。 试试这个:

1
2
3
4
5
6
7
8
9
10
11
data = []

while True:
    entry = input('Item number : ')
    if entry == 'q':
        break

    try:
        data.append(int(entry))
    except:
        print("Not a valid number")