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, inselection = 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] |
您尝试将所有内容评估为
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") |