Python 3.5.1 - 将多个输入读入数组

时间:2016-02-08 00:00:34

标签: python python-3.x python-3.5

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

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

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

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

  

输入要归档的项目(1 2等):29 30 Traceback(最近一次通话   last):文件" G:\ Learning \ Python \ need_to_watch.py​​",第15行,in           selection = list(map(int,input("输入要归档的项目(1 2等):")。split(",")))文件"& #34;,第1行        29 30            ^ SyntaxError:解析时意外的EOF

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

data=[]
while True:
        entry = int(input('Item number : '))
        data.append(entry)
        if entry == 'q':
            break

它试图评估' q'作为一个变量,即使我没有得到任何东西。

这个问题说只是使用input()。split()但看起来这不再有效.... accepting multiple user inputs separated by a space in python and append them to a list

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

3 个答案:

答案 0 :(得分:2)

如果要将参数传递给python脚本,您可能需要查看argparse:https://docs.python.org/3/library/argparse.html

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)

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

或者更简洁:

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

答案 2 :(得分:1)

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

data = []

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

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