Попытка получить входные данные во многих массивах - Python - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь написать код в python, который должен принимать пользовательский ввод в 3 списка одновременно. В настоящее время это мой код:

N = int(input(""))

x = []     ## x, y, and r are different lists
y = []
r = []

for i in range(N):                     
     x,y,r = input("").split()
     x = int(x)
     y = int(y)
     r = int(r)

print(x)
print(y)
print(r)

Мой пример ввода: (Вы можете игнорировать <- x, y, r и <- N. Я просто добавил это для справки.) </p>

3 <-- N
1 4 5 <-- x,y,r
2 8 1 < -- x,y,r
6 7 2 < -- x,y,r 

Ожидаемый результат:

[1, 2, 6]
[4, 8, 7]
[5, 1, 2]

К сожалению, так выглядит мой вывод:

6
7
2

ПРИМЕЧАНИЕ: * Я не могу найти никаких ошибок в своем коде выше, поэтому любая помощь будет высоко ценится! Для тех, кто интересуется, почему формат ввода данных очень специфичен c, проблема, которую я пытаюсь решить, требует очень строгого формата, который я и использую. Мне нужно сначала взять «N», который скажет мне, сколько раз мне нужно получить ввод для x, y, r. И да, мне нужно принимать значения x, y, r одновременно.

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Используйте разные имена переменных для ввода. Используйте append, а не =. Как это:

N = int(input(""))

x = []     ## x, y, and r are different lists
y = []
r = []

for i in range(N):                     
     tx,ty,tr = input("").split()
     x.append(int(tx))
     y.append(int(ty))
     r.append(int(tr))

print(x)
print(y)
print(r)
1 голос
/ 21 марта 2020

Я собираюсь предложить сделать это так. Вы по-прежнему используете присваивание кортежей для x, y, r сразу после сбора всех входных данных.

N = int(input(""))

inp = []
for i in range(N):
    inp.append(map(int, input("").split()))

x, y, r = map(list, zip(*inp))
print(x)
print(y)
print(r)

Редактировать; подход с одним вкладышем:

x, y, r = map(list, zip(*[map(int, input("").split()) for i in range(int(input("")))]))
...