在python中输入多个列表的最佳方法是什么?

时间:2017-07-24 16:07:52

标签: python list python-3.x

我需要将用户输入放在列表中,如:

11 20
22 30
32 45
34 54
.. ..

我试过了:

for i in range(n):
    c, d = map(int, input().split())
    a.append(c)
    b.append(d)

还有比这更好的方法吗?

2 个答案:

答案 0 :(得分:0)

只需要一些用户提示和验证。只需捕获ValueError即可...

for i in range(n):
    while True:
        try:
            c, d = map(int, input("enter 2 numbers separated by whitespace").split())
            break
        except ValueError:
            print("Try again...\n")
    a.append(c)
    b.append(d)

翻译结果:

>>> n = 10
>>> a = []
>>> b = []
>>> for i in range(n):
        while True:
            try:
                c, d = map(int, input("enter 2 numbers separated by whitespace: ").split())
                break
            except ValueError:
                print("Try again...\n")
        a.append(c)
        b.append(d)
... ... ... ... ... ... ... ... ... 
enter 2 numbers separated by whitespace: 1 2
enter 2 numbers separated by whitespace: 5
Try again...

enter 2 numbers separated by whitespace: 5 6
enter 2 numbers separated by whitespace: 10 11
enter 2 numbers separated by whitespace: 3112 3232
enter 2 numbers separated by whitespace: 1111
Try again...

enter 2 numbers separated by whitespace: 323 333
enter 2 numbers separated by whitespace: 324 334
enter 2 numbers separated by whitespace: 1 1
enter 2 numbers separated by whitespace: 2 2
enter 2 numbers separated by whitespace: 3 3
enter 2 numbers separated by whitespace: 4 4
>>> a
[1, 5, 10, 3112, 323, 324, 1, 2, 3, 4]
>>> b
[2, 6, 11, 3232, 333, 334, 1, 2, 3, 4]
>>> 

答案 1 :(得分:0)

这可能是你想要的:

ins = [input("Two integers separated by a whitespace: ") for _ in range(n)]
a, b = [int(i.split()[0]) for i in ins], [int(i.split()[1]) for i in ins]

考虑异常,我认为下面的代码更好:

tip = "Enter two integers separated by a whitespace: "    
while n > 0:
    try:
        c, d = map(int, input(tip).split())
        n -= 1
        a.append(c)
        b.append(d)
    except:
        print('invalid input!\n')