2017-07-24 27 views
0

我需要把用戶的輸入像列表:在Python中輸入多於1個列表的最佳方法是什麼?

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) 

是否有比這更好的辦法?

+1

你需要輸入格式與您指定的方式完全相同?這種做法有什麼問題? – Thundzz

+0

你可以直接通過'[map(int,input().span())作爲範圍(n)]中的_'來追加,但就是這樣。我建議強烈反對,因爲每個不包含由空格分隔的整數列表的條目都會破壞它。一些基本的'input()'驗證總是一個好主意。 – zwer

+1

只要你抓住ValueError並提醒用戶你期望輸入的格式,這實際上是一個體面的方式來做到這一點。 –

回答

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') 
+0

第一個是令人難以置信的浪費 - 兩個分裂在相同的數據來挑選雙方 - 你可以做一個單一的拆分和解壓縮,如果你想要一個班輪。 – zwer

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] 
>>> 
相關問題